PandaRoot
PndMCTrackInfoTask.h
Go to the documentation of this file.
1 //****************************************************************************
2 //* This file is part of PandaRoot. *
3 //* *
4 //* PandaRoot is distributed under the terms of the *
5 //* GNU General Public License (GPL) version 3, *
6 //* copied verbatim in the file "LICENSE". *
7 //* *
8 //* Copyright (C) 2006 - 2024 FAIR GmbH and copyright holders of PandaRoot *
9 //* The copyright holders are listed in the file "COPYRIGHTHOLDERS". *
10 //* The authors are listed in the file "AUTHORS". *
11 //****************************************************************************
12 
20 #pragma once
21 
22 #include "PndPersistencyTask.h"
23 #include "PndMCTrackInfo.h"
24 #include "PndMCTrack.h"
25 #include "PndPidProbability.h"
26 
27 #include "TClonesArray.h"
28 
29 #include <string>
30 #include <vector>
31 #include <map>
32 
33 class TClonesArray;
34 
36  public:
39 
41  virtual ~PndMCTrackInfoTask();
42 
43  virtual void SetParContainers();
44  virtual InitStatus Init();
45  virtual InitStatus ReInit();
46 
48  virtual void Exec(Option_t *opt);
49 
50  virtual void FinishEvent();
51  virtual void FinishTask();
52 
57  void SetMaxStage(int stage) { fMaxStage = stage; }
58 
64  void SetMaxStageNeutralCheck(int stage) { fMaxStageNeutralCheck = stage; }
65 
70  void SetMaxMomentumDifferenceNeutralCheck(double val) { fMaxNeutralMomDiff = val; }
71 
77  void AddPointBranchName(TString name) { fPointBranches[name]; }
78 
84  void AddTrackingBranchName(TString name) { fTrackingBranches[name]; }
85 
91  void AddCandidateBranchName(TString name) { fCandidateBranches[name]; }
92 
98  void AddPidBranchName(TString name) { fPidBranches[name]; }
99 
100 // void AddBranchName(TString name) { fBranches[name]; }
101 
102  void UseKalmanTracks() { fUseKalmanTracks = true; }
103  void UsePidInfo() { fUsePidInfo = true; }
104  void UseChargeCands() { fUseChargeCands = true; }
105 
106  void PrintPrimariesWithDaughters(int stage = 0);
107 
108  protected:
109  void Register();
110  void Reset();
111 
112  std::vector<int> GetPIDMothers(int motherID);
113  void PrintDaughters(PndMCTrackInfo mother, int stage);
114  void AssignPoints();
115  void AssignTrackingBranches();
117  void AssignPidBranches(int mcIndex, int chargedCandIndex);
118  // double GetPidProbability(PndPidProbability *prob, int pdgCode);
119  void AssignBranches();
120  void FillOutputArray();
121  void FillPointInfo();
122  void FillTypesNumbers();
123 
124  void AssignTClonesArrays(std::map<TString, TClonesArray *> &map);
125  void AssignNeutralCand(TClonesArray *neutralbranch);
126 
127  private:
128  TClonesArray *fMCTracks = nullptr;
129  TClonesArray *fMCTrackInfo = nullptr;
130  std::map<TString, TClonesArray *> fPointBranches;
131  std::map<TString, TClonesArray *> fTrackingBranches;
132  std::map<TString, TClonesArray *> fCandidateBranches;
133  std::map<TString, TClonesArray *> fPidBranches;
134 // std::map<TString, TClonesArray *> fBranches;
135  std::map<int, PndMCTrackInfo> fTrackInfo;
136  std::vector<int> fMCIdPhoton; // needed to check for neutral candidates matching with photon momentum
137 
138  bool fUseKalmanTracks;
139  bool fUsePidInfo;
140  bool fUseChargeCands;
141  double fMaxNeutralMomDiff; // Maximum difference of (mcmomentum - recomomentum)/mcmomentum for neutrals
142  int fMaxStageNeutralCheck; // Maximum stage the check for matching neutral cand for photon is done (if equal to MaxStage the test is very time consuming)
143  int fMaxStage;
144 
145  ClassDef(PndMCTrackInfoTask, 8);
146 };
147 
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()