PandaRoot
PndMdtHitProducer.h
Go to the documentation of this file.
1 #ifndef PNDMDTHITPRODUCER_H
2 #define PNDMDTHITPRODUCER_H 1
3 
4 #include "FairTask.h"
5 #include "PndMdtHit.h"
6 #include "TVector3.h"
7 #include "FairTSBufferFunctional.h"
8 
9 class TClonesArray;
10 class PndMdtDigi;
11 
12 using std::map;
13 using std::vector;
14 
15 class PndMdtHitProducer : public FairTask {
16 
17  public:
20 
23 
25  virtual InitStatus Init();
26 
27  virtual void RunTimeBased() { fTimeOrderedDigi = kTRUE; }
28  virtual void FinishTask();
30  virtual void Exec(Option_t *opt);
31 
32  PndMdtHit *AddHit(Int_t detID, Int_t stripID, TVector3 &pos, TVector3 &dpos, Int_t bIndex, Int_t sIndex);
33 
34  // Bool_t MdtMapping(); // Creates maps of MDT hits
35  // void Reset(); // reset maps
36 
37  private:
38  virtual void Exec_old(Option_t *opt);
39 
41  TClonesArray *fBoxArray;
42  TClonesArray *fStripArray;
43  TClonesArray *fDigiArray;
44 
45  TClonesArray *fBoxClusterArray;
46  TClonesArray *fStripClusterArray;
48  TClonesArray *fHitArray;
49 
50  Int_t fNumofBoxDigis;
51  Int_t fNumofStripDigis;
52  Int_t fNumofHits;
53  Int_t fNumofGroupedBoxDigis;
54  Int_t fNumofGroupedStripDigis;
55  /* map<Int_t, vector<Int_t> >mapBoxBarrel; */
56  /* map<Int_t, vector<Int_t> >mapBoxEndcap; */
57  /* map<Int_t, vector<Int_t> >mapBoxForward; */
58  /* map<Int_t, vector<Int_t> >mapStripBarrel; */
59  /* map<Int_t, vector<Int_t> >mapStripEndcap; */
60  /* map<Int_t, vector<Int_t> >mapStripForward; */
61  std::map<Int_t, Int_t> fMatchMap;
62  // statistics record
63  std::map<Int_t, Int_t> fBoxHitMapofLayer;
64  std::map<Int_t, Int_t> fStripHitMapofLayer;
65 
66  typedef std::vector<std::vector<PndMdtDigi *>> ClustersCollection;
67  typedef ClustersCollection::iterator ClustersColIter;
68  typedef std::vector<PndMdtDigi *> SingleCluster;
69  typedef SingleCluster::iterator SingleDigiIter;
70 
71  typedef std::vector<std::vector<PndMdtDigi *>> TrackletCollection;
72  typedef TrackletCollection::iterator TrackletColIter;
73  typedef std::vector<PndMdtDigi *> Tracklet;
74  typedef Tracklet::iterator TrackletDigiIter;
75 
76  typedef std::vector<PndMdtDigi *> VecDigi;
77  typedef VecDigi::iterator VecDigiIter;
78 
79  Bool_t fTimeOrderedDigi;
80  BinaryFunctor *fFunctor;
81  Int_t fEventCounter;
82  Double_t fTimeWindow;
83 
84  struct PndMdtDigiLess {
85  bool operator()(const PndMdtDigi *lv, const PndMdtDigi *rv) const;
86  };
87 
88  ClassDef(PndMdtHitProducer, 1);
89 };
90 
91 #endif
virtual void FinishTask()
virtual void Exec(Option_t *opt)
virtual void RunTimeBased()
virtual InitStatus Init()
PndMdtHit * AddHit(Int_t detID, Int_t stripID, TVector3 &pos, TVector3 &dpos, Int_t bIndex, Int_t sIndex)