CbmRoot
Loading...
Searching...
No Matches
CbmAnaTreeContainer.h
Go to the documentation of this file.
1/* Copyright (C) 2023-2023 Warsaw University of Technology, Warsaw
2 SPDX-License-Identifier: GPL-3.0-only
3 Authors: Daniel Wielanek [committer] */
4#ifndef NICACBMATCONTAINER_H_
5#define NICACBMATCONTAINER_H_
6
7
8#include <TNamed.h>
9
10#include <AnalysisTree/Detector.hpp>
11#include <AnalysisTree/EventHeader.hpp>
12#include <AnalysisTree/Matching.hpp>
13
14class TChain;
15class TFile;
16//#define DEBUG_EXTR
17
18namespace AnalysisTree
19{
20 class Configuration;
21}
22namespace Hal
23{
24 class InputDataInfo;
25}
26
36
37class CbmAnaTreeContainer : public TNamed {
38
39 public:
40 CbmAnaTreeContainer() : TNamed(){};
41 virtual void LoadFields(std::vector<TString> list) = 0;
42 virtual Bool_t ConnectToTree(TChain* chains) = 0;
43 AnalysisTree::BranchConfig GetBranchConf(std::vector<TString> files, TString patternToFind, Bool_t& found) const;
45 ClassDef(CbmAnaTreeContainer, 1)
46};
47
48
50 AnalysisTree::EventHeader* fEvent = {nullptr};
51 AnalysisTree::TrackDetector* fVtxTracks = {nullptr};
52 AnalysisTree::Matching* fVtx2Tof = {nullptr};
53 AnalysisTree::HitDetector* fTofHits = {nullptr};
54 AnalysisTree::Matching* fVtx2Mc = {nullptr};
56
57 public:
59 void LoadFields(std::vector<TString> list);
60 Bool_t ConnectToTree(TChain* chains);
61 inline AnalysisTree::EventHeader* GetEventHeader() const { return fEvent; };
62 inline AnalysisTree::TrackDetector* GetVtxTracks() const { return fVtxTracks; };
63 inline AnalysisTree::HitDetector* GetTofHits() const { return fTofHits; };
64 inline AnalysisTree::Matching* GetVtx2ToFMatch() const { return fVtx2Tof; };
65 inline AnalysisTree::Matching* GetVtx2Sim() const { return fVtx2Mc; };
66 inline AnaTreeRecoIds& GetFieldIds() { return fVtxIds; }
68 {
69 if (fEvent) {
70 delete fEvent;
71 delete fVtxTracks;
72 delete fTofHits;
73 delete fVtx2Tof;
74 delete fVtx2Mc;
75 }
76 }
77 ClassDef(CbmAnaTreeRecoContainer, 1)
78};
79
87
89 AnalysisTree::EventHeader* fEvent = {nullptr};
90 AnalysisTree::Particles* fParticles = {nullptr};
92
93 public:
95 void LoadFields(std::vector<TString> list);
96 Bool_t ConnectToTree(TChain* chains);
97 inline AnaTreeMcIds& GetFieldIds() { return fIds; };
98 inline AnalysisTree::EventHeader* GetEventHeader() const { return fEvent; };
99 inline AnalysisTree::Particles* GetParticles() const { return fParticles; };
101 {
102 if (fEvent) {
103 delete fEvent;
104 delete fParticles;
105 }
106 };
107 ClassDef(CbmAnaTreeMcContainer, 1)
108};
109
119#ifdef DEBUG_EXTR
120 int dau1px, dau1py, dau1pz, dau1x, dau1y, dau1z;
121 int dau2px, dau2py, dau2pz, dau2x, dau2y, dau2z;
122#endif
123};
124
126 AnalysisTree::Particles* fParticles = {nullptr};
127 AnalysisTree::Particles* fParticlesMc = {nullptr};
128 AnalysisTree::Matching* fV02Mc = {nullptr};
130
131 public:
133 void LoadFields(std::vector<TString> list);
134 Bool_t ConnectToTree(TChain* chains);
135 inline AnaTreeV0Ids& GetFieldIds() { return fIds; };
136 inline AnalysisTree::Particles* GetParticles() const { return fParticles; };
137 AnalysisTree::Matching* GetMaching() const { return fV02Mc; };
139 {
140 if (fParticles) delete fParticles;
141 if (fParticlesMc) delete fParticlesMc;
142 if (fV02Mc) delete fV02Mc;
143 };
144 ClassDef(CbmAnaTreeV0Container, 1)
145};
146
147
148class CbmAnaTreeContainers : public TObject {
149
150
151 public:
152 enum class EContainerType
153 {
154 kMc = 0,
155 kReco = 1,
156 kV0 = 2
157 };
158 CbmAnaTreeContainer* fContainers[3] = {nullptr, nullptr, nullptr};
160 void LoadConf(Hal::InputDataInfo* info);
161 static std::vector<TString> GetNames();
166 Int_t GetSize() const { return 3; }
168 ClassDef(CbmAnaTreeContainers, 1)
169};
170
171
172#endif /* NICACBMATCONTAINER_H_ */
int Int_t
bool Bool_t
virtual Bool_t ConnectToTree(TChain *chains)=0
AnalysisTree::BranchConfig GetBranchConf(std::vector< TString > files, TString patternToFind, Bool_t &found) const
virtual void LoadFields(std::vector< TString > list)=0
CbmAnaTreeContainer * fContainers[3]
CbmAnaTreeV0Container * GetV0Data() const
CbmAnaTreeContainer * GetContainer(EContainerType type)
static std::vector< TString > GetNames()
void LoadConf(Hal::InputDataInfo *info)
CbmAnaTreeRecoContainer * GetRecoData() const
CbmAnaTreeMcContainer * GetSimData() const
Bool_t ConnectToTree(TChain *chains)
AnalysisTree::Particles * GetParticles() const
AnalysisTree::EventHeader * GetEventHeader() const
AnalysisTree::Particles * fParticles
AnalysisTree::EventHeader * fEvent
AnaTreeMcIds & GetFieldIds()
void LoadFields(std::vector< TString > list)
AnalysisTree::EventHeader * fEvent
AnalysisTree::TrackDetector * fVtxTracks
AnalysisTree::TrackDetector * GetVtxTracks() const
AnalysisTree::Matching * fVtx2Tof
Bool_t ConnectToTree(TChain *chains)
AnaTreeRecoIds & GetFieldIds()
AnalysisTree::HitDetector * GetTofHits() const
AnalysisTree::Matching * GetVtx2ToFMatch() const
AnalysisTree::Matching * fVtx2Mc
AnalysisTree::EventHeader * GetEventHeader() const
AnalysisTree::Matching * GetVtx2Sim() const
AnalysisTree::HitDetector * fTofHits
void LoadFields(std::vector< TString > list)
AnalysisTree::Particles * GetParticles() const
AnalysisTree::Particles * fParticlesMc
void LoadFields(std::vector< TString > list)
AnalysisTree::Particles * fParticles
AnalysisTree::Matching * fV02Mc
AnalysisTree::Matching * GetMaching() const
Bool_t ConnectToTree(TChain *chains)