PandaRoot
PndMCTrackInfoTask.h
Go to the documentation of this file.
1 
8 #pragma once
9 
10 #include "PndPersistencyTask.h"
11 #include "PndMCTrackInfo.h"
12 #include "PndMCTrack.h"
13 #include "PndPidProbability.h"
14 
15 #include "TClonesArray.h"
16 
17 #include <string>
18 #include <vector>
19 #include <map>
20 
21 class TClonesArray;
22 
24  public:
27 
29  virtual ~PndMCTrackInfoTask();
30 
31  virtual void SetParContainers();
32  virtual InitStatus Init();
33  virtual InitStatus ReInit();
34 
36  virtual void Exec(Option_t *opt);
37 
38  virtual void FinishEvent();
39  virtual void FinishTask();
40 
45  void SetMaxStage(int stage) { fMaxStage = stage; }
46 
52  void SetMaxStageNeutralCheck(int stage) { fMaxStageNeutralCheck = stage; }
53 
58  void SetMaxMomentumDifferenceNeutralCheck(double val) { fMaxNeutralMomDiff = val; }
59 
65  void AddPointBranchName(TString name) { fPointBranches[name]; }
66 
72  void AddTrackingBranchName(TString name) { fTrackingBranches[name]; }
73 
79  void AddCandidateBranchName(TString name) { fCandidateBranches[name]; }
80 
86  void AddPidBranchName(TString name) { fPidBranches[name]; }
87 
88 // void AddBranchName(TString name) { fBranches[name]; }
89 
90  void UseKalmanTracks() { fUseKalmanTracks = true; }
91  void UsePidInfo() { fUsePidInfo = true; }
92  void UseChargeCands() { fUseChargeCands = true; }
93 
94  void PrintPrimariesWithDaughters(int stage = 0);
95 
96  protected:
97  void Register();
98  void Reset();
99 
100  std::vector<int> GetPIDMothers(int motherID);
101  void PrintDaughters(PndMCTrackInfo mother, int stage);
102  void AssignPoints();
103  void AssignTrackingBranches();
105  void AssignPidBranches(int mcIndex, int chargedCandIndex);
106  // double GetPidProbability(PndPidProbability *prob, int pdgCode);
107  void AssignBranches();
108  void FillOutputArray();
109  void FillPointInfo();
110  void FillTypesNumbers();
111 
112  void AssignTClonesArrays(std::map<TString, TClonesArray *> &map);
113  void AssignNeutralCand(TClonesArray *neutralbranch);
114 
115  private:
116  TClonesArray *fMCTracks = nullptr;
117  TClonesArray *fMCTrackInfo = nullptr;
118  std::map<TString, TClonesArray *> fPointBranches;
119  std::map<TString, TClonesArray *> fTrackingBranches;
120  std::map<TString, TClonesArray *> fCandidateBranches;
121  std::map<TString, TClonesArray *> fPidBranches;
122 // std::map<TString, TClonesArray *> fBranches;
123  std::map<int, PndMCTrackInfo> fTrackInfo;
124  std::vector<int> fMCIdPhoton; // needed to check for neutral candidates matching with photon momentum
125 
126  bool fUseKalmanTracks;
127  bool fUsePidInfo;
128  bool fUseChargeCands;
129  double fMaxNeutralMomDiff; // Maximum difference of (mcmomentum - recomomentum)/mcmomentum for neutrals
130  int fMaxStageNeutralCheck; // Maximum stage the check for matching neutral cand for photon is done (if equal to MaxStage the test is very time consuming)
131  int fMaxStage;
132 
133  ClassDef(PndMCTrackInfoTask, 8);
134 };
135 
void AddPidBranchName(TString name)
void AddTrackingBranchName(TString name)
void AddCandidateBranchName(TString name)
Generates additional information for MCTracks stored in PndMCTrackInfo. Called via "/macro/tools/MCTr...
void AddPointBranchName(TString name)
void PrintDaughters(PndMCTrackInfo mother, int stage)
virtual void SetParContainers()
virtual InitStatus ReInit()
virtual ~PndMCTrackInfoTask()
void AssignCandidateBranches()
virtual InitStatus Init()
void SetMaxStageNeutralCheck(int stage)
void AssignPidBranches(int mcIndex, int chargedCandIndex)
void AssignTrackingBranches()
void AssignTClonesArrays(std::map< TString, TClonesArray *> &map)
virtual void Exec(Option_t *opt)
void SetMaxMomentumDifferenceNeutralCheck(double val)
std::vector< int > GetPIDMothers(int motherID)
void PrintPrimariesWithDaughters(int stage=0)
virtual void FinishTask()
void SetMaxStage(int stage)
void AssignNeutralCand(TClonesArray *neutralbranch)
virtual void FinishEvent()