PandaRoot
PndGemEventBuilderOnTracks.h
Go to the documentation of this file.
1 //* $Id: */
2 
3 // -------------------------------------------------------------------------
4 // ----- PndGemEventBuilderOnTracks header file -----
5 // ----- Created 22/08/2013 by R. Karabowicz -----
6 // -------------------------------------------------------------------------
7 
17 #ifndef PNDGEMEVENTBUILDERONTRACKS_H
18 #define PNDGEMEVENTBUILDERONTRACKS_H 1
19 
20 #include "PndTrack.h"
21 
22 #include "FairEventBuilder.h"
23 
24 #include "TStopwatch.h"
25 
26 #include <map>
27 #include <set>
28 #include <vector>
29 
30 class TClonesArray;
31 
32 class FairRecoEventHeader;
33 
34 struct RecoEvent {
35  std::vector<Int_t> trackIndex;
36  Int_t nofTracks;
37  Double_t meanTime;
38 };
39 
40 class PndGemEventBuilderOnTracks : public FairEventBuilder {
41 
42  public:
45 
47  PndGemEventBuilderOnTracks(const char *name, Int_t iVerbose = 0);
48 
50  virtual ~PndGemEventBuilderOnTracks();
51 
52  virtual void StoreEventData(FairRecoEventHeader *recoEvent);
53 
54  std::vector<std::pair<double, FairRecoEventHeader *>> FindEvents();
55 
56  std::vector<std::pair<double, PndTrack *>> Modify(std::pair<double, PndTrack *> oldData, std::pair<double, PndTrack *> newData);
57  void AddNewDataToTClonesArray(FairTimeStamp *data);
58  double FindTimeForData(FairTimeStamp *data);
59  void FillDataMap(FairTimeStamp *data, double activeTime);
60  void EraseDataFromDataMap(FairTimeStamp *data);
61 
62  private:
63  TClonesArray *fGemTracks;
64  TClonesArray *fGemOutTracks;
65 
66  Int_t fTNofEvents;
67  Int_t fTNofTracks;
68  Int_t fTNofRecoEvents;
69 
70  Double_t fGemTrackDelay;
71  TStopwatch fTimer;
72  Double_t fExecTime;
73  std::vector<RecoEvent> fRecoEvents;
74 
75  std::map<FairRecoEventHeader, double> fEvent_map;
76  std::map<PndTrack, double> fData_map;
77 
79  virtual void SetParContainers();
80 
82  virtual Bool_t Init();
83 
85  virtual Bool_t ReInit();
86 
87  virtual void Print();
88 
90  virtual void Finish();
91 
92  Int_t CompareTrackToPreviousEvents(Int_t trackId, PndTrack *tempTrack);
93 
94  ClassDef(PndGemEventBuilderOnTracks, 1);
95 };
96 
97 #endif
std::vector< Int_t > trackIndex