//* $Id: */ // ------------------------------------------------------------------------- // ----- CbmMvdStripsDigitize header file ----- // ----- Created 01/07/2008 by R. Karabowicz ----- // ------------------------------------------------------------------------- /** CbmMvdStripsDigitise *@author Volker Friese *@since 30.08.06 *@version 1.0 ** ** CBM task class for digitising MVDSTRIPS ** Task level SIM ** Produces objects of type CbmMvdStripsDigi out of CbmMvdStripsPoint. **/ #ifndef CBMMVDSTRIPSDIGITIZE_H #define CBMMVDSTRIPSDIGITIZE_H 1 #include #include "TStopwatch.h" #include "FairTask.h" using std::set; using std::map; using std::pair; class TClonesArray; class CbmGeomvdstripsPar; class CbmMvdStripsDigiPar; class CbmMvdStripsStation; class CbmMvdStripsPoint; class CbmMvdStripsDigitize : public FairTask { public: /** Default constructor **/ CbmMvdStripsDigitize(); /** Standard constructor **/ CbmMvdStripsDigitize(Int_t iVerbose); /** Constructor with name **/ CbmMvdStripsDigitize(const char* name, Int_t iVerbose); /** Destructor **/ virtual ~CbmMvdStripsDigitize(); void SetStep(Double_t tStep) {fStep = tStep;} /** Execution **/ virtual void Exec(Option_t* opt); /** Virtual method Finish **/ virtual void Finish(); virtual void SetRealisticResponse(Bool_t real=kTRUE) {fRealistic = real;} void FindFiredStrips(CbmMvdStripsPoint* pnt,Int_t& nofStr,Int_t*& strips,Double_t*& signals,Int_t side); void ProduceHitResponse(CbmMvdStripsSensor* sensor); void SetFrontThreshold (Double_t frontThr=0.) {fFThreshold = frontThr;} void SetBackThreshold (Double_t backThr=0.) {fBThreshold = backThr;} void SetFrontNoiseWidth(Double_t frontNoW=0.) {fFNoiseWidth = frontNoW;} void SetBackNoiseWidth (Double_t backNoW=0.) {fBNoiseWidth = backNoW;} void SetFrontNofBits (Int_t frontNB=0 ) {fFNofBits = frontNB;} void SetBackNofBits (Int_t backNB=0 ) {fBNofBits = backNB;} void SetFrontMinStep (Double_t frontMS=0.) {fFMinStep = frontMS;} void SetBackMinStep (Double_t backMS=0.) {fBMinStep = backMS;} void SetStripDeadTime (Double_t StripDeadTime=0.) {fStripDeadTime = StripDeadTime;} private: CbmGeoMvdStripsPar* fGeoPar; /** Geometry parameter container **/ CbmMvdStripsDigiPar* fDigiPar; /** Digitisation parameter container **/ CbmMvdStripsDigiScheme* fDigiScheme; /** Digitisation scheme **/ TClonesArray* fPoints; /** Input array of CbmMvdStripsPoint **/ TClonesArray* fDigis; /** Output array of CbmMvdStripsDigi **/ TClonesArray* fDigiMatches; /** Output array of CbmMvdStripsDigiMatches**/ // statistics Int_t fNDigis; Int_t fNMulti; Double_t fNEvents; Double_t fNPoints; Double_t fNOutside; Double_t fNDigisFront; Double_t fNDigisBack; Double_t fTime; // settings Double_t fStep; TStopwatch fTimer; Bool_t fRealistic; Double_t fEnergyLossToSignal; Double_t fFThreshold; Double_t fBThreshold; Double_t fFNoiseWidth; Double_t fBNoiseWidth; Double_t fStripDeadTime; Int_t fFNofBits; Int_t fBNofBits; Double_t fFMinStep; Double_t fBMinStep; Int_t fFNofSteps; Int_t fBNofSteps; Double_t* fStripSignalF; Double_t* fStripSignalB; // map of the point indices contributing to a fired strip map > fFChannelPointsMap; map > fBChannelPointsMap; map > fPointMap; /** sensor points **/ Float_t occupancy [10][1000][20] ; /** Make sensorwise set for points **/ void MakeSets(); void MakeSets1(); /** Get parameter containers **/ virtual void SetParContainers(); /** Intialisation **/ virtual InitStatus Init(); /** Reinitialisation **/ virtual InitStatus ReInit(); /** Reset eventwise counters **/ void Reset(); ClassDef(CbmMvdStripsDigitize,1); }; #endif