// -------------------------------------------------------------------------- // ----- Header for the CbmTrdHitProducerSmearing ------ // ----- Partially Created by M. Kalisky ------ // ----- Last update 21.03.05 by M. Kalisky ------ // ----- Renamed from CbmTrdHitProducer 04.043.09 F. Uhlig ------ // -------------------------------------------------------------------------- /** ** !!! WARNING !!! ** temporary solution ONLY for old CVS release (before implementation of the ** parameters by Mohammad and Dennis) ** ** compatibility with the new release is not granted. ** This hit producer works only with geometry versions for 9 and 12 ** TRD layers. ** ** For any more detailed studies including the TRD I strongly advice ** to use the new release (should be provided before end of May) ** ** Any futere developements will be implemented only for the new release ** *@ m.kalisky@gsi.de **/ /* Generated by Together */ #ifndef CBMTRDHITPRODUCERSMEARING_H #define CBMTRDHITPRODUCERSMEARING_H #include "CbmTrdDigiPar.h" #include "CbmTrdModule.h" #include "FairTask.h" //#include "TVector3.h" #include class TClonesArray; class TVector3; class CbmTrdHit; class CbmTrdRadiator; class CbmTrdGeoHandler; class CbmTrdHitProducerSmearing : public FairTask { public: /** Default constructor **/ CbmTrdHitProducerSmearing(); /** Standard constructor **/ CbmTrdHitProducerSmearing(const char *name, const char *title, CbmTrdRadiator *radiator=NULL); /** Constructor **/ CbmTrdHitProducerSmearing(const char *name); /** Destructor **/ virtual ~CbmTrdHitProducerSmearing(); /** Initialisation **/ virtual InitStatus ReInit(); virtual InitStatus Init(); virtual void SetParContainers(); /** Executed task **/ virtual void Exec(Option_t * option); /** Finish task **/ virtual void Finish(); void Register(); void AddHit(Int_t trdId, TVector3 &posHit, TVector3 &posHitErr, Int_t ref, Int_t Plane, Double_t ELoss, Double_t ELossTR, Double_t ELossdEdX); void SetSigmaX(Double_t sigma[]) ; void SetSigmaY(Double_t s1[], Double_t s2[], Double_t s3[]); void SetEfficency(Float_t eff) {fEfficency=eff;} void SetMinimumHitDistance(Float_t dist) {fMinDist=dist;} //cm void SetGhostRate(Float_t ghost) {fGhostRate=ghost;} void SetGhostDistance(Float_t ghostDistance){fGhostDistance=ghostDistance*10000;} // cm -> µm void SmearingXY( Double_t dx , Double_t dy ) { fDx = dx; fDy=dy ;} void SmearingX(Double_t dx) {fDx = dx;} void SmearingY(Double_t dy) {fDy = dy;} Double_t GetSigmaX (Int_t stack) const; Double_t GetSigmaY (Double_t teta, Int_t stack ) const; Float_t GetEfficency() const { return fEfficency;} private: TClonesArray *fTrdPoints; //! TRD MC points TClonesArray *fHitCollection; //! TRD hits TClonesArray *fListStack; //!Tracks Int_t fModuleID;//Unique number for detector module CbmTrdDigiPar *fDigiPar; CbmTrdModule *fModuleInfo; Double_t fDx; //! Double_t fDy; //! Double_t fSigmaX[3]; //! Double_t fSigmaY[3] [7]; //! Int_t fNHits; //! Float_t fEfficency; //! Hit finding efficency (0-100%) Float_t fGhostRate; //! Rate to produce ghost hits per real hit Float_t fMinDist; //! Minimum distance between hit which can be separated [cm]. corresponds to 2 pad width dimensions. if == 0 all hits can be separted Float_t fGhostDistance; //! average distance between real hit and ghost hit [cm] CbmTrdRadiator* fRadiator; //! CbmTrdGeoHandler* fGeoHandler; //! CbmTrdHitProducerSmearing(const CbmTrdHitProducerSmearing&); CbmTrdHitProducerSmearing operator=(const CbmTrdHitProducerSmearing&); std::map > fModuleHitBufferMap; //! std::map >::iterator fModuleHitBufferMapIt; //! ClassDef(CbmTrdHitProducerSmearing,3) }; #endif //CBMTRDHITPRODUCERSMEARING_H