#include <TFile.h>
#include <TTree.h>
#include <TTreeStream.h>
#include <TObjString.h>
#include <TString.h>
#include <AliAnalysisManager.h>
#include <AliESDInputHandler.h>
#include <AliESDEvent.h>
#include <AliVTrack.h>
#include "AliDielectron.h"
#include "AliDielectronMC.h"
#include "AliDielectronPair.h"
#include "AliDielectronDebugTree.h"
ClassImp(AliDielectronDebugTree)
AliDielectronDebugTree::AliDielectronDebugTree() :
TNamed(),
fFileName("jpsi_debug.root"),
fNVars(0),
fNVarsLeg(0),
fStreamer(0x0),
fDielectron(0x0)
{
for (Int_t i=0; i<AliDielectronVarManager::kNMaxValues;++i){
fVariables[i]=0;
fVariablesLeg[i]=0;
}
}
AliDielectronDebugTree::AliDielectronDebugTree(const char* name, const char* title) :
TNamed(name, title),
fFileName("jpsi_debug.root"),
fNVars(0),
fNVarsLeg(0),
fStreamer(0x0),
fDielectron(0x0)
{
for (Int_t i=0; i<AliDielectronVarManager::kNMaxValues;++i){
fVariables[i]=0;
fVariablesLeg[i]=0;
}
}
AliDielectronDebugTree::~AliDielectronDebugTree()
{
if (fStreamer){
fStreamer->GetFile()->Write();
delete fStreamer;
}
}
void AliDielectronDebugTree::Fill(AliDielectronPair *pair)
{
if (fNVars==0&&fNVarsLeg==0) return;
AliAnalysisManager *man=AliAnalysisManager::GetAnalysisManager();
if (!man) return;
TObjString fileName;
Int_t eventInFile=-1;
Int_t runNumber=-1;
UInt_t eventTime=0;
TTree *t=man->GetTree();
if (t) {
TFile *file=t->GetCurrentFile();
if (file) fileName.SetString(file->GetName());
}
AliESDInputHandler *han=dynamic_cast<AliESDInputHandler*>(man->GetInputEventHandler());
if (han){
AliESDEvent *ev=dynamic_cast<AliESDEvent*>(han->GetEvent());
eventInFile=ev->GetEventNumberInFile();
runNumber=ev->GetRunNumber();
eventTime=ev->GetTimeStamp();
}
if (!fStreamer) fStreamer=new TTreeSRedirector(fFileName.Data());
Int_t id1=static_cast<AliVTrack*>(pair->GetFirstDaughterP())->GetID();
Int_t id2=static_cast<AliVTrack*>(pair->GetSecondDaughterP())->GetID();
(*fStreamer) << "Pair"
<< "File.=" << &fileName
<< "EventInFile=" << eventInFile
<< "Run=" << runNumber
<< "Leg1_ID=" << id1
<< "Leg2_ID=" << id2
<< "EventTime=" << eventTime;
Bool_t hasMC=AliDielectronMC::Instance()->HasMC();
if (hasMC){
Int_t pdg=443;
if (fDielectron) pdg=fDielectron->GetMotherPdg();
Bool_t isMotherMC = AliDielectronMC::Instance()->IsMotherPdg(pair,pdg);
(*fStreamer) << "Pair"
<< "mcTruth=" << isMotherMC;
}
Int_t var=0;
Double_t values[AliDielectronVarManager::kNMaxValues];
Double_t valuesLeg1[AliDielectronVarManager::kNMaxValues];
Double_t valuesLeg2[AliDielectronVarManager::kNMaxValues];
if (fNVars>0){
AliDielectronVarManager::Fill(pair,values);
for (Int_t i=0; i<fNVars; ++i){
var=fVariables[i];
(*fStreamer) << "Pair"
<< Form("%s=",AliDielectronVarManager::GetValueName(var))
<< values[var];
}
}
if (fNVarsLeg>0){
AliDielectronVarManager::Fill(pair->GetFirstDaughterP(),valuesLeg1);
AliDielectronVarManager::Fill(pair->GetSecondDaughterP(),valuesLeg2);
for (Int_t i=0; i<fNVarsLeg; ++i){
var=fVariablesLeg[i];
(*fStreamer) << "Pair"
<< Form("Leg1_%s=",AliDielectronVarManager::GetValueName(var))
<< valuesLeg1[var]
<< Form("Leg2_%s=",AliDielectronVarManager::GetValueName(var))
<< valuesLeg2[var];
}
}
(*fStreamer) << "Pair" << "\n";
}
void AliDielectronDebugTree::DeleteStreamer()
{
if (!fStreamer) return;
delete fStreamer;
fStreamer=0x0;
}
void AliDielectronDebugTree::WriteTree()
{
if (!fStreamer) return;
fStreamer->GetFile()->Write();
}
AliDielectronDebugTree.cxx:1 AliDielectronDebugTree.cxx:2 AliDielectronDebugTree.cxx:3 AliDielectronDebugTree.cxx:4 AliDielectronDebugTree.cxx:5 AliDielectronDebugTree.cxx:6 AliDielectronDebugTree.cxx:7 AliDielectronDebugTree.cxx:8 AliDielectronDebugTree.cxx:9 AliDielectronDebugTree.cxx:10 AliDielectronDebugTree.cxx:11 AliDielectronDebugTree.cxx:12 AliDielectronDebugTree.cxx:13 AliDielectronDebugTree.cxx:14 AliDielectronDebugTree.cxx:15 AliDielectronDebugTree.cxx:16 AliDielectronDebugTree.cxx:17 AliDielectronDebugTree.cxx:18 AliDielectronDebugTree.cxx:19 AliDielectronDebugTree.cxx:20 AliDielectronDebugTree.cxx:21 AliDielectronDebugTree.cxx:22 AliDielectronDebugTree.cxx:23 AliDielectronDebugTree.cxx:24 AliDielectronDebugTree.cxx:25 AliDielectronDebugTree.cxx:26 AliDielectronDebugTree.cxx:27 AliDielectronDebugTree.cxx:28 AliDielectronDebugTree.cxx:29 AliDielectronDebugTree.cxx:30 AliDielectronDebugTree.cxx:31 AliDielectronDebugTree.cxx:32 AliDielectronDebugTree.cxx:33 AliDielectronDebugTree.cxx:34 AliDielectronDebugTree.cxx:35 AliDielectronDebugTree.cxx:36 AliDielectronDebugTree.cxx:37 AliDielectronDebugTree.cxx:38 AliDielectronDebugTree.cxx:39 AliDielectronDebugTree.cxx:40 AliDielectronDebugTree.cxx:41 AliDielectronDebugTree.cxx:42 AliDielectronDebugTree.cxx:43 AliDielectronDebugTree.cxx:44 AliDielectronDebugTree.cxx:45 AliDielectronDebugTree.cxx:46 AliDielectronDebugTree.cxx:47 AliDielectronDebugTree.cxx:48 AliDielectronDebugTree.cxx:49 AliDielectronDebugTree.cxx:50 AliDielectronDebugTree.cxx:51 AliDielectronDebugTree.cxx:52 AliDielectronDebugTree.cxx:53 AliDielectronDebugTree.cxx:54 AliDielectronDebugTree.cxx:55 AliDielectronDebugTree.cxx:56 AliDielectronDebugTree.cxx:57 AliDielectronDebugTree.cxx:58 AliDielectronDebugTree.cxx:59 AliDielectronDebugTree.cxx:60 AliDielectronDebugTree.cxx:61 AliDielectronDebugTree.cxx:62 AliDielectronDebugTree.cxx:63 AliDielectronDebugTree.cxx:64 AliDielectronDebugTree.cxx:65 AliDielectronDebugTree.cxx:66 AliDielectronDebugTree.cxx:67 AliDielectronDebugTree.cxx:68 AliDielectronDebugTree.cxx:69 AliDielectronDebugTree.cxx:70 AliDielectronDebugTree.cxx:71 AliDielectronDebugTree.cxx:72 AliDielectronDebugTree.cxx:73 AliDielectronDebugTree.cxx:74 AliDielectronDebugTree.cxx:75 AliDielectronDebugTree.cxx:76 AliDielectronDebugTree.cxx:77 AliDielectronDebugTree.cxx:78 AliDielectronDebugTree.cxx:79 AliDielectronDebugTree.cxx:80 AliDielectronDebugTree.cxx:81 AliDielectronDebugTree.cxx:82 AliDielectronDebugTree.cxx:83 AliDielectronDebugTree.cxx:84 AliDielectronDebugTree.cxx:85 AliDielectronDebugTree.cxx:86 AliDielectronDebugTree.cxx:87 AliDielectronDebugTree.cxx:88 AliDielectronDebugTree.cxx:89 AliDielectronDebugTree.cxx:90 AliDielectronDebugTree.cxx:91 AliDielectronDebugTree.cxx:92 AliDielectronDebugTree.cxx:93 AliDielectronDebugTree.cxx:94 AliDielectronDebugTree.cxx:95 AliDielectronDebugTree.cxx:96 AliDielectronDebugTree.cxx:97 AliDielectronDebugTree.cxx:98 AliDielectronDebugTree.cxx:99 AliDielectronDebugTree.cxx:100 AliDielectronDebugTree.cxx:101 AliDielectronDebugTree.cxx:102 AliDielectronDebugTree.cxx:103 AliDielectronDebugTree.cxx:104 AliDielectronDebugTree.cxx:105 AliDielectronDebugTree.cxx:106 AliDielectronDebugTree.cxx:107 AliDielectronDebugTree.cxx:108 AliDielectronDebugTree.cxx:109 AliDielectronDebugTree.cxx:110 AliDielectronDebugTree.cxx:111 AliDielectronDebugTree.cxx:112 AliDielectronDebugTree.cxx:113 AliDielectronDebugTree.cxx:114 AliDielectronDebugTree.cxx:115 AliDielectronDebugTree.cxx:116 AliDielectronDebugTree.cxx:117 AliDielectronDebugTree.cxx:118 AliDielectronDebugTree.cxx:119 AliDielectronDebugTree.cxx:120 AliDielectronDebugTree.cxx:121 AliDielectronDebugTree.cxx:122 AliDielectronDebugTree.cxx:123 AliDielectronDebugTree.cxx:124 AliDielectronDebugTree.cxx:125 AliDielectronDebugTree.cxx:126 AliDielectronDebugTree.cxx:127 AliDielectronDebugTree.cxx:128 AliDielectronDebugTree.cxx:129 AliDielectronDebugTree.cxx:130 AliDielectronDebugTree.cxx:131 AliDielectronDebugTree.cxx:132 AliDielectronDebugTree.cxx:133 AliDielectronDebugTree.cxx:134 AliDielectronDebugTree.cxx:135 AliDielectronDebugTree.cxx:136 AliDielectronDebugTree.cxx:137 AliDielectronDebugTree.cxx:138 AliDielectronDebugTree.cxx:139 AliDielectronDebugTree.cxx:140 AliDielectronDebugTree.cxx:141 AliDielectronDebugTree.cxx:142 AliDielectronDebugTree.cxx:143 AliDielectronDebugTree.cxx:144 AliDielectronDebugTree.cxx:145 AliDielectronDebugTree.cxx:146 AliDielectronDebugTree.cxx:147 AliDielectronDebugTree.cxx:148 AliDielectronDebugTree.cxx:149 AliDielectronDebugTree.cxx:150 AliDielectronDebugTree.cxx:151 AliDielectronDebugTree.cxx:152 AliDielectronDebugTree.cxx:153 AliDielectronDebugTree.cxx:154 AliDielectronDebugTree.cxx:155 AliDielectronDebugTree.cxx:156 AliDielectronDebugTree.cxx:157 AliDielectronDebugTree.cxx:158 AliDielectronDebugTree.cxx:159 AliDielectronDebugTree.cxx:160 AliDielectronDebugTree.cxx:161 AliDielectronDebugTree.cxx:162 AliDielectronDebugTree.cxx:163 AliDielectronDebugTree.cxx:164 AliDielectronDebugTree.cxx:165 AliDielectronDebugTree.cxx:166 AliDielectronDebugTree.cxx:167 AliDielectronDebugTree.cxx:168 AliDielectronDebugTree.cxx:169 AliDielectronDebugTree.cxx:170 AliDielectronDebugTree.cxx:171 AliDielectronDebugTree.cxx:172 AliDielectronDebugTree.cxx:173 AliDielectronDebugTree.cxx:174 AliDielectronDebugTree.cxx:175 AliDielectronDebugTree.cxx:176 AliDielectronDebugTree.cxx:177 AliDielectronDebugTree.cxx:178 AliDielectronDebugTree.cxx:179 AliDielectronDebugTree.cxx:180 AliDielectronDebugTree.cxx:181 AliDielectronDebugTree.cxx:182 AliDielectronDebugTree.cxx:183 AliDielectronDebugTree.cxx:184 AliDielectronDebugTree.cxx:185 AliDielectronDebugTree.cxx:186 AliDielectronDebugTree.cxx:187 AliDielectronDebugTree.cxx:188 AliDielectronDebugTree.cxx:189 AliDielectronDebugTree.cxx:190 AliDielectronDebugTree.cxx:191 AliDielectronDebugTree.cxx:192 AliDielectronDebugTree.cxx:193 AliDielectronDebugTree.cxx:194 AliDielectronDebugTree.cxx:195 AliDielectronDebugTree.cxx:196 AliDielectronDebugTree.cxx:197 AliDielectronDebugTree.cxx:198 AliDielectronDebugTree.cxx:199 AliDielectronDebugTree.cxx:200 AliDielectronDebugTree.cxx:201 AliDielectronDebugTree.cxx:202 AliDielectronDebugTree.cxx:203 AliDielectronDebugTree.cxx:204 AliDielectronDebugTree.cxx:205 AliDielectronDebugTree.cxx:206 AliDielectronDebugTree.cxx:207 AliDielectronDebugTree.cxx:208 AliDielectronDebugTree.cxx:209 AliDielectronDebugTree.cxx:210 AliDielectronDebugTree.cxx:211