1 //////////////////////////////////////////////////////////
2 // A Demo Macro that shows how to analyze the
5 // Y. Schutz (SUBATECH)
6 //////////////////////////////////////////////////////////
12 #if !defined(__CINT__) || defined(__MAKECINT__)
17 const Int_t kMaxPHOSTS = 9;
18 const Int_t kMaxPHOSRP = 9;
23 TTree *fTree; //pointer to the analyzed TTree or TChain
24 TTree *fCurrent; //pointer to the current TTree
25 //Declaration of leaves types
27 TObjArray *PHOSPpsdRP;
29 Int_t PHOSTS_fEmcRecPoint[kMaxPHOSTS];
30 Int_t PHOSTS_fPpsdLowRecPoint[kMaxPHOSTS];
31 Int_t PHOSTS_fPpsdUpRecPoint[kMaxPHOSTS];
32 UInt_t PHOSTS_fUniqueID[kMaxPHOSTS];
33 UInt_t PHOSTS_fBits[kMaxPHOSTS];
35 Int_t PHOSRP_fPHOSTrackSegment[kMaxPHOSRP];
36 Int_t PHOSRP_fIndexInList[kMaxPHOSRP];
37 Int_t PHOSRP_fPrimary[kMaxPHOSRP];
38 Int_t PHOSRP_fType[kMaxPHOSRP];
39 Int_t PHOSRP_fPdgCode[kMaxPHOSRP];
40 Int_t PHOSRP_fStatusCode[kMaxPHOSRP];
41 Int_t PHOSRP_fMother[2][kMaxPHOSRP];
42 Int_t PHOSRP_fDaughter[2][kMaxPHOSRP];
43 Float_t PHOSRP_fWeight[kMaxPHOSRP];
44 Double_t PHOSRP_fCalcMass[kMaxPHOSRP];
45 Double_t PHOSRP_fPx[kMaxPHOSRP];
46 Double_t PHOSRP_fPy[kMaxPHOSRP];
47 Double_t PHOSRP_fPz[kMaxPHOSRP];
48 Double_t PHOSRP_fE[kMaxPHOSRP];
49 Double_t PHOSRP_fVx[kMaxPHOSRP];
50 Double_t PHOSRP_fVy[kMaxPHOSRP];
51 Double_t PHOSRP_fVz[kMaxPHOSRP];
52 Double_t PHOSRP_fVt[kMaxPHOSRP];
53 Double_t PHOSRP_fPolarTheta[kMaxPHOSRP];
54 Double_t PHOSRP_fPolarPhi[kMaxPHOSRP];
55 UInt_t PHOSRP_fUniqueID[kMaxPHOSRP];
56 UInt_t PHOSRP_fBits[kMaxPHOSRP];
57 Short_t PHOSRP_fLineColor[kMaxPHOSRP];
58 Short_t PHOSRP_fLineStyle[kMaxPHOSRP];
59 Short_t PHOSRP_fLineWidth[kMaxPHOSRP];
63 TBranch *b_PHOSPpsdRP;
65 TBranch *b_PHOSTS_fEmcRecPoint;
66 TBranch *b_PHOSTS_fPpsdLowRecPoint;
67 TBranch *b_PHOSTS_fPpsdUpRecPoint;
68 TBranch *b_PHOSTS_fUniqueID;
69 TBranch *b_PHOSTS_fBits;
71 TBranch *b_PHOSRP_fPHOSTrackSegment;
72 TBranch *b_PHOSRP_fIndexInList;
73 TBranch *b_PHOSRP_fPrimary;
74 TBranch *b_PHOSRP_fType;
75 TBranch *b_PHOSRP_fPdgCode;
76 TBranch *b_PHOSRP_fStatusCode;
77 TBranch *b_PHOSRP_fMother;
78 TBranch *b_PHOSRP_fDaughter;
79 TBranch *b_PHOSRP_fWeight;
80 TBranch *b_PHOSRP_fCalcMass;
81 TBranch *b_PHOSRP_fPx;
82 TBranch *b_PHOSRP_fPy;
83 TBranch *b_PHOSRP_fPz;
85 TBranch *b_PHOSRP_fVx;
86 TBranch *b_PHOSRP_fVy;
87 TBranch *b_PHOSRP_fVz;
88 TBranch *b_PHOSRP_fVt;
89 TBranch *b_PHOSRP_fPolarTheta;
90 TBranch *b_PHOSRP_fPolarPhi;
91 TBranch *b_PHOSRP_fUniqueID;
92 TBranch *b_PHOSRP_fBits;
93 TBranch *b_PHOSRP_fLineColor;
94 TBranch *b_PHOSRP_fLineStyle;
95 TBranch *b_PHOSRP_fLineWidth;
98 RecAna(char * filename);
99 RecAna(TTree *tree) {};
101 Int_t GetEntry(Int_t entry = 0);
102 Int_t GetEvent(Int_t evt);
103 Int_t LoadTree(Int_t entry = 0);
104 void Init(TTree *tree);
107 void Show(Int_t entry = -1);
113 RecAna::RecAna(char * filename)
115 // connect the file used to generate this class and read the Tree.
117 TFile *f = (TFile*)gROOT->GetListOfFiles()->FindObject(filename);
119 f = new TFile(filename);
121 // setup the gAlice evironment
123 gAlice = (AliRun*) f->Get("gAlice") ;
125 // get the PHOS detectector, the geometry instance and the index to object converter instance
127 fPHOS = (AliPHOSv0 *)gAlice->GetDetector("PHOS") ;
128 AliPHOSGeometry::GetInstance( fPHOS->GetGeometry()->GetName(), fPHOS->GetGeometry()->GetTitle() );
129 AliPHOSIndexToObject::GetInstance(fPHOS) ;
132 Int_t RecAna::GetEntry(Int_t entry)
134 // Read contents of entry, always = 0.
139 return fTree->GetEntry(entry);
142 Int_t RecAna::GetEvent(Int_t evt)
144 // get the selected event
146 gAlice->GetEvent(evt);
148 // connect to the Reconstruction tree
150 fTree = gAlice->TreeR();
159 cout << "macro EmcRecpoints = " << fPHOS->EmcRecPoints() << endl ;
162 Int_t RecAna::LoadTree(Int_t entry)
164 // Set the environment to read one entry, always = 0.
168 Int_t centry = fTree->LoadTree(entry);
171 if (fTree->GetTree() != fCurrent) {
172 fCurrent = fTree->GetTree();
178 void RecAna::Init(TTree *tree)
180 // Set branch addresses
181 if (tree == 0) return;
185 fTree->SetBranchAddress("PHOSEmcRP",&PHOSEmcRP);
186 fTree->SetBranchAddress("PHOSPpsdRP",&PHOSPpsdRP);
187 fTree->SetBranchAddress("PHOSTS_",&PHOSTS_);
188 fTree->SetBranchAddress("PHOSTS.fEmcRecPoint",PHOSTS_fEmcRecPoint);
189 fTree->SetBranchAddress("PHOSTS.fPpsdLowRecPoint",PHOSTS_fPpsdLowRecPoint);
190 fTree->SetBranchAddress("PHOSTS.fPpsdUpRecPoint",PHOSTS_fPpsdUpRecPoint);
191 fTree->SetBranchAddress("PHOSTS.fUniqueID",PHOSTS_fUniqueID);
192 fTree->SetBranchAddress("PHOSTS.fBits",PHOSTS_fBits);
193 fTree->SetBranchAddress("PHOSRP_",&PHOSRP_);
194 fTree->SetBranchAddress("PHOSRP.fPHOSTrackSegment",PHOSRP_fPHOSTrackSegment);
195 fTree->SetBranchAddress("PHOSRP.fIndexInList",PHOSRP_fIndexInList);
196 fTree->SetBranchAddress("PHOSRP.fPrimary",PHOSRP_fPrimary);
197 fTree->SetBranchAddress("PHOSRP.fType",PHOSRP_fType);
198 fTree->SetBranchAddress("PHOSRP.fPdgCode",PHOSRP_fPdgCode);
199 fTree->SetBranchAddress("PHOSRP.fStatusCode",PHOSRP_fStatusCode);
200 fTree->SetBranchAddress("PHOSRP.fMother[2]",PHOSRP_fMother);
201 fTree->SetBranchAddress("PHOSRP.fDaughter[2]",PHOSRP_fDaughter);
202 fTree->SetBranchAddress("PHOSRP.fWeight",PHOSRP_fWeight);
203 fTree->SetBranchAddress("PHOSRP.fCalcMass",PHOSRP_fCalcMass);
204 fTree->SetBranchAddress("PHOSRP.fPx",PHOSRP_fPx);
205 fTree->SetBranchAddress("PHOSRP.fPy",PHOSRP_fPy);
206 fTree->SetBranchAddress("PHOSRP.fPz",PHOSRP_fPz);
207 fTree->SetBranchAddress("PHOSRP.fE",PHOSRP_fE);
208 fTree->SetBranchAddress("PHOSRP.fVx",PHOSRP_fVx);
209 fTree->SetBranchAddress("PHOSRP.fVy",PHOSRP_fVy);
210 fTree->SetBranchAddress("PHOSRP.fVz",PHOSRP_fVz);
211 fTree->SetBranchAddress("PHOSRP.fVt",PHOSRP_fVt);
212 fTree->SetBranchAddress("PHOSRP.fPolarTheta",PHOSRP_fPolarTheta);
213 fTree->SetBranchAddress("PHOSRP.fPolarPhi",PHOSRP_fPolarPhi);
214 fTree->SetBranchAddress("PHOSRP.fUniqueID",PHOSRP_fUniqueID);
215 fTree->SetBranchAddress("PHOSRP.fBits",PHOSRP_fBits);
216 fTree->SetBranchAddress("PHOSRP.fLineColor",PHOSRP_fLineColor);
217 fTree->SetBranchAddress("PHOSRP.fLineStyle",PHOSRP_fLineStyle);
218 fTree->SetBranchAddress("PHOSRP.fLineWidth",PHOSRP_fLineWidth);
221 void RecAna::Notify()
223 // called by LoadTree when loading a new file
224 // get branch pointers
225 b_PHOSEmcRP = fTree->GetBranch("PHOSEmcRP");
226 b_PHOSPpsdRP = fTree->GetBranch("PHOSPpsdRP");
227 b_PHOSTS_ = fTree->GetBranch("PHOSTS_");
228 b_PHOSTS_fEmcRecPoint = fTree->GetBranch("PHOSTS.fEmcRecPoint");
229 b_PHOSTS_fPpsdLowRecPoint = fTree->GetBranch("PHOSTS.fPpsdLowRecPoint");
230 b_PHOSTS_fPpsdUpRecPoint = fTree->GetBranch("PHOSTS.fPpsdUpRecPoint");
231 b_PHOSTS_fUniqueID = fTree->GetBranch("PHOSTS.fUniqueID");
232 b_PHOSTS_fBits = fTree->GetBranch("PHOSTS.fBits");
233 b_PHOSRP_ = fTree->GetBranch("PHOSRP_");
234 b_PHOSRP_fPHOSTrackSegment = fTree->GetBranch("PHOSRP.fPHOSTrackSegment");
235 b_PHOSRP_fIndexInList = fTree->GetBranch("PHOSRP.fIndexInList");
236 b_PHOSRP_fPrimary = fTree->GetBranch("PHOSRP.fPrimary");
237 b_PHOSRP_fType = fTree->GetBranch("PHOSRP.fType");
238 b_PHOSRP_fPdgCode = fTree->GetBranch("PHOSRP.fPdgCode");
239 b_PHOSRP_fStatusCode = fTree->GetBranch("PHOSRP.fStatusCode");
240 b_PHOSRP_fMother = fTree->GetBranch("PHOSRP.fMother[2]");
241 b_PHOSRP_fDaughter = fTree->GetBranch("PHOSRP.fDaughter[2]");
242 b_PHOSRP_fWeight = fTree->GetBranch("PHOSRP.fWeight");
243 b_PHOSRP_fCalcMass = fTree->GetBranch("PHOSRP.fCalcMass");
244 b_PHOSRP_fPx = fTree->GetBranch("PHOSRP.fPx");
245 b_PHOSRP_fPy = fTree->GetBranch("PHOSRP.fPy");
246 b_PHOSRP_fPz = fTree->GetBranch("PHOSRP.fPz");
247 b_PHOSRP_fE = fTree->GetBranch("PHOSRP.fE");
248 b_PHOSRP_fVx = fTree->GetBranch("PHOSRP.fVx");
249 b_PHOSRP_fVy = fTree->GetBranch("PHOSRP.fVy");
250 b_PHOSRP_fVz = fTree->GetBranch("PHOSRP.fVz");
251 b_PHOSRP_fVt = fTree->GetBranch("PHOSRP.fVt");
252 b_PHOSRP_fPolarTheta = fTree->GetBranch("PHOSRP.fPolarTheta");
253 b_PHOSRP_fPolarPhi = fTree->GetBranch("PHOSRP.fPolarPhi");
254 b_PHOSRP_fUniqueID = fTree->GetBranch("PHOSRP.fUniqueID");
255 b_PHOSRP_fBits = fTree->GetBranch("PHOSRP.fBits");
256 b_PHOSRP_fLineColor = fTree->GetBranch("PHOSRP.fLineColor");
257 b_PHOSRP_fLineStyle = fTree->GetBranch("PHOSRP.fLineStyle");
258 b_PHOSRP_fLineWidth = fTree->GetBranch("PHOSRP.fLineWidth");
261 void RecAna::Show(Int_t entry)
263 // Print contents of entry.
264 // If entry is not specified, print current entry
268 #endif // #ifdef RecAna_cxx