PandaRoot
PndSdsStripHitProducer.h
Go to the documentation of this file.
1 #ifndef PNDSDSSTRIPHITPRODUCER_H
2 #define PNDSDSSTRIPHITPRODUCER_H
3 
4 #include "PndSdsTask.h"
5 #include "PndSdsStripDigiPar.h"
6 #include "PndSdsMCPoint.h"
7 #include "PndSdsStrip.h"
8 #include "PndSdsDigiStrip.h"
9 #include "PndDetectorList.h"
10 #include "FairGeoVector.h"
11 #include "FairGeoTransform.h"
12 #include "FairMCEventHeader.h"
13 #include "TVector3.h"
14 #include "TRandom.h"
15 #include "TGeoMatrix.h"
16 #include "TGeoBBox.h"
17 
18 #include "PndGeoHandling.h"
19 #include "PndSdsCalcStrip.h"
20 #include "PndSdsChargeConversion.h"
22 
23 #include <string>
24 #include <vector>
25 #include <map>
26 
27 class TClonesArray;
28 
30 
71  public:
76 
84  PndSdsStripHitProducer(const char *name);
85 
87  virtual ~PndSdsStripHitProducer();
88 
89  virtual void SetParContainers();
91  virtual InitStatus Init();
92  virtual InitStatus ReInit();
93 
99  virtual void SetBranchNames() = 0;
100  virtual void SetMCPointType(){};
101 
103  virtual void Exec(Option_t *opt);
104  virtual void FinishEvent();
105  virtual void FinishTask();
106  void AddDigi(Int_t &iStrip, Int_t iPoint, Int_t detID, Int_t sensorID, Int_t fe, Int_t chan, Double_t charge);
107 
108  void RunTimeBased() { fTimeOrderedDigi = kTRUE; }
109 
111  {
112  if (this != &other) // protect against invalid self-assignment
113  {
114  fPointArray = other.fPointArray;
115  fStripArray = other.fStripArray;
116  fDataBuffer = other.fDataBuffer;
127  fGeoH = other.fGeoH;
130  fEventNr = other.fEventNr;
131  }
132  return *this;
133  }
134 
135  protected:
137  TClonesArray *fPointArray;
138 
140  TClonesArray *fStripArray;
141 
142  FairWriteoutBuffer *fDataBuffer;
143 
149 
151  std::map<const char *, PndSdsCalcStrip *> fStripCalcTop;
152  std::map<const char *, PndSdsCalcStrip *> fStripCalcBot;
153  std::map<const char *, PndSdsChargeConversion *> fChargeConverter;
156 
157  void Register();
158  void Reset();
159  void ProduceHits();
160  virtual void SetCalculators();
161  Bool_t SelectSensorParams(Int_t sensorID);
162 
163  Double_t DigitizeTime(Double_t time, Double_t charge);
164 
165  FairMCEventHeader *fMcEventHeader;
166 
170 
171  Int_t fEventNr;
172 
174 };
175 
176 #endif
TList * fDigiParameterList
Digitization Parameters.
std::map< const char *, PndSdsCalcStrip * > fStripCalcTop
Calculator objects.
virtual ~PndSdsStripHitProducer()
PndSdsStripHitProducer(PndSdsStripHitProducer &other)
std::map< const char *, PndSdsChargeConversion * > fChargeConverter
std::map< const char *, PndSdsCalcStrip * > fStripCalcBot
Bool_t fTimeOrderedDigi
parameter to switch to time ordered simulation
FairWriteoutBuffer * fDataBuffer
Class for calculating strip indices from wafer hits.
Int_t fEventNr
EventCounter.
Class to access the naming information of the MVD.
PndSdsStripDigiPar * fCurrentDigiPar
ClassDef(PndSdsStripHitProducer, 5)
virtual void FinishEvent()
virtual void FinishTask()
Digitization Parameter Class for MVD-Strip part.
virtual void SetCalculators()
void AddDigi(Int_t &iStrip, Int_t iPoint, Int_t detID, Int_t sensorID, Int_t fe, Int_t chan, Double_t charge)
PndSdsChargeConversion * fCurrentChargeConverter
virtual InitStatus ReInit()
TClonesArray * fStripArray
Output array of PndSdsHits.
FairMCEventHeader * fMcEventHeader
PndSdsStripHitProducer & operator=(PndSdsStripHitProducer &other)
Hit Producer Task for strip detectors.
virtual InitStatus Init()
Bool_t fOverrideParams
///< converter for detector names
Bool_t SelectSensorParams(Int_t sensorID)
PndSdsCalcStrip * fCurrentStripCalcBot
virtual void Exec(Option_t *opt)
virtual void SetBranchNames()=0
PndSdsCalcStrip * fCurrentStripCalcTop
Double_t DigitizeTime(Double_t time, Double_t charge)
virtual void SetParContainers()