]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWGDQ/dielectron/AliDielectronDebugTree.cxx
add proptections (marcel), add GEANT process for MC
[u/mrichter/AliRoot.git] / PWGDQ / dielectron / AliDielectronDebugTree.cxx
CommitLineData
572b0139 1/*************************************************************************
2* Copyright(c) 1998-2009, ALICE Experiment at CERN, All rights reserved. *
3* *
4* Author: The ALICE Off-line Project. *
5* Contributors are mentioned in the code where appropriate. *
6* *
7* Permission to use, copy, modify and distribute this software and its *
8* documentation strictly for non-commercial purposes is hereby granted *
9* without fee, provided that the above copyright notice appears in all *
10* copies and that both the copyright notice and this permission notice *
11* appear in the supporting documentation. The authors make no claims *
12* about the suitability of this software for any purpose. It is *
13* provided "as is" without express or implied warranty. *
14**************************************************************************/
15
16///////////////////////////////////////////////////////////////////////////
17// Dielectron DebugTree //
18// //
19// //
20/*
21register variables from the variable manager. The output will be written
22to a tree
23
24NOTE: Please use with extream care! Only for debugging and test purposes!!!
25
26*/
27// //
28///////////////////////////////////////////////////////////////////////////
29
30#include <TFile.h>
5d9f368a 31#include <TTree.h>
572b0139 32#include <TTreeStream.h>
5d9f368a 33#include <TObjString.h>
572b0139 34#include <TString.h>
35
36#include <AliAnalysisManager.h>
5d9f368a 37#include <AliESDInputHandler.h>
38#include <AliESDEvent.h>
39#include <AliVTrack.h>
572b0139 40
8df8e382 41#include "AliDielectron.h"
42#include "AliDielectronMC.h"
572b0139 43#include "AliDielectronPair.h"
44
45#include "AliDielectronDebugTree.h"
46
47ClassImp(AliDielectronDebugTree)
48
49AliDielectronDebugTree::AliDielectronDebugTree() :
50 TNamed(),
51 fFileName("jpsi_debug.root"),
52 fNVars(0),
53 fNVarsLeg(0),
8df8e382 54 fStreamer(0x0),
55 fDielectron(0x0)
572b0139 56{
57 //
58 // Default Constructor
59 //
60 for (Int_t i=0; i<AliDielectronVarManager::kNMaxValues;++i){
61 fVariables[i]=0;
62 fVariablesLeg[i]=0;
63 }
64}
65
66//______________________________________________
67AliDielectronDebugTree::AliDielectronDebugTree(const char* name, const char* title) :
68 TNamed(name, title),
69 fFileName("jpsi_debug.root"),
70 fNVars(0),
71 fNVarsLeg(0),
8df8e382 72 fStreamer(0x0),
73 fDielectron(0x0)
572b0139 74{
75 //
76 // Named Constructor
77 //
78 for (Int_t i=0; i<AliDielectronVarManager::kNMaxValues;++i){
79 fVariables[i]=0;
80 fVariablesLeg[i]=0;
81 }
82}
83
84//______________________________________________
85AliDielectronDebugTree::~AliDielectronDebugTree()
86{
87 //
88 // Default Destructor
89 //
90 if (fStreamer){
91 fStreamer->GetFile()->Write();
92 delete fStreamer;
93 }
94}
95
96//______________________________________________
97void AliDielectronDebugTree::Fill(AliDielectronPair *pair)
98{
99 //
100 // Fill configured variables to the tree
101 //
102
103 //is there anything to fill
104 if (fNVars==0&&fNVarsLeg==0) return;
105
106 //only in local mode!!!
107 AliAnalysisManager *man=AliAnalysisManager::GetAnalysisManager();
61d106d3 108 if (!man) return;
8105292d 109// if (man->GetAnalysisType()!=AliAnalysisManager::kLocalAnalysis) return;
572b0139 110
5d9f368a 111 //Get File and event information
0e2f178c 112 TObjString fileName;
5d9f368a 113 Int_t eventInFile=-1;
8df8e382 114 Int_t runNumber=-1;
ba15fdfb 115 UInt_t eventTime=0;
5d9f368a 116
117 TTree *t=man->GetTree();
118 if (t) {
119 TFile *file=t->GetCurrentFile();
0e2f178c 120 if (file) fileName.SetString(file->GetName());
5d9f368a 121 }
572b0139 122
5d9f368a 123 AliESDInputHandler *han=dynamic_cast<AliESDInputHandler*>(man->GetInputEventHandler());
124 if (han){
125 AliESDEvent *ev=dynamic_cast<AliESDEvent*>(han->GetEvent());
126 eventInFile=ev->GetEventNumberInFile();
8df8e382 127 runNumber=ev->GetRunNumber();
ba15fdfb 128 eventTime=ev->GetTimeStamp();
5d9f368a 129 }
130
131 if (!fStreamer) fStreamer=new TTreeSRedirector(fFileName.Data());
54ce9dc4 132 Int_t id1=static_cast<AliVTrack*>(pair->GetFirstDaughterP())->GetID();
133 Int_t id2=static_cast<AliVTrack*>(pair->GetSecondDaughterP())->GetID();
5d9f368a 134 //Fill Event information
135 (*fStreamer) << "Pair"
0e2f178c 136 << "File.=" << &fileName
5d9f368a 137 << "EventInFile=" << eventInFile
8df8e382 138 << "Run=" << runNumber
5d9f368a 139 << "Leg1_ID=" << id1
ba15fdfb 140 << "Leg2_ID=" << id2
141 << "EventTime=" << eventTime;
5d9f368a 142
8df8e382 143 //Fill MC information
144 Bool_t hasMC=AliDielectronMC::Instance()->HasMC();
145 if (hasMC){
146 Int_t pdg=443;
147 if (fDielectron) pdg=fDielectron->GetMotherPdg();
148 Bool_t isMotherMC = AliDielectronMC::Instance()->IsMotherPdg(pair,pdg);
149 (*fStreamer) << "Pair"
150 << "mcTruth=" << isMotherMC;
151 }
5d9f368a 152
572b0139 153 Int_t var=0;
154 Double_t values[AliDielectronVarManager::kNMaxValues];
155 Double_t valuesLeg1[AliDielectronVarManager::kNMaxValues];
156 Double_t valuesLeg2[AliDielectronVarManager::kNMaxValues];
157// fill pair values
158 if (fNVars>0){
159 AliDielectronVarManager::Fill(pair,values);
160
161 for (Int_t i=0; i<fNVars; ++i){
162 var=fVariables[i];
163 (*fStreamer) << "Pair"
164 << Form("%s=",AliDielectronVarManager::GetValueName(var))
165 << values[var];
166 }
167 }
168
169 if (fNVarsLeg>0){
170 //leg1
54ce9dc4 171 AliDielectronVarManager::Fill(pair->GetFirstDaughterP(),valuesLeg1);
572b0139 172 //leg2
54ce9dc4 173 AliDielectronVarManager::Fill(pair->GetSecondDaughterP(),valuesLeg2);
572b0139 174
175 for (Int_t i=0; i<fNVarsLeg; ++i){
176 var=fVariablesLeg[i];
177 (*fStreamer) << "Pair"
178 << Form("Leg1_%s=",AliDielectronVarManager::GetValueName(var))
179 << valuesLeg1[var]
180 << Form("Leg2_%s=",AliDielectronVarManager::GetValueName(var))
181 << valuesLeg2[var];
182 }
183
184 }
185
186 (*fStreamer) << "Pair" << "\n";
187
188
189}
190
191//______________________________________________
192void AliDielectronDebugTree::DeleteStreamer()
193{
194 //
195 // delete the streamer
196 //
197 if (!fStreamer) return;
198 delete fStreamer;
199 fStreamer=0x0;
200
201}
202
203//______________________________________________
204void AliDielectronDebugTree::WriteTree()
205{
206 //
207 // Write file
208 //
209 if (!fStreamer) return;
210 fStreamer->GetFile()->Write();
211}