36 char *
kXML =
"collection.xml";
67 if (kInputData ==
"ESD") kTreeName =
"esdTree" ;
68 else if (kInputData ==
"AOD") kTreeName =
"aodTree" ;
69 else if (kInputData ==
"MC" ) kTreeName =
"TE" ;
72 cout<<
"Wrong data type "<<kInputData<<endl;
81 AliLog::SetGlobalLogLevel(AliLog::kError);
88 if((
kMC || kInputData ==
"MC") && kInputData!=
"AOD"){
89 AliMCEventHandler* mcHandler =
new AliMCEventHandler();
90 mcHandler->SetReadTR(kFALSE);
91 mgr->SetMCtruthEventHandler(mcHandler);
92 if( kInputData ==
"MC") mgr->SetInputEventHandler(NULL);
96 if(kInputData ==
"ESD")
99 AliESDInputHandler *esdHandler =
new AliESDInputHandler();
100 mgr->SetInputEventHandler(esdHandler);
101 cout<<
"ESD handler "<<mgr->GetInputEventHandler()<<endl;
103 if(kInputData ==
"AOD")
106 AliAODInputHandler *aodHandler =
new AliAODInputHandler();
107 mgr->SetInputEventHandler(aodHandler);
108 cout<<
"AOD handler "<<mgr->GetInputEventHandler()<<endl;
114 cout<<
"Init output handler"<<endl;
115 AliAODHandler* aodoutHandler =
new AliAODHandler();
116 aodoutHandler->SetOutputFileName(
"aod.root");
118 mgr->SetOutputEventHandler(aodoutHandler);
124 TString outputFile = AliAnalysisManager::GetCommonFileName();
125 AliAnalysisDataContainer *cinput1 = mgr->GetCommonInputContainer();
127 if(kInputData==
"ESD" && !
kMC)
129 gROOT->LoadMacro(
"$ALICE_PHYSICS/OADB/macros/AddTaskPhysicsSelection.C");
130 AliPhysicsSelectionTask* physSelTask = AddTaskPhysicsSelection();
137 counterMB->SelectCollisionCandidates(AliVEvent::kMB);
139 AliAnalysisDataContainer *coutputMB =
140 mgr->CreateContainer(
"counterMB", TList::Class(), AliAnalysisManager::kOutputContainer, outputFile.Data());
141 mgr->AddTask(counterMB);
142 mgr->ConnectInput (counterMB, 0, cinput1 );
143 mgr->ConnectOutput (counterMB, 1, coutputMB);
146 counterEMC->SelectCollisionCandidates(AliVEvent::kEMC7);
148 AliAnalysisDataContainer *coutputEMC =
149 mgr->CreateContainer(
"counterEMC", TList::Class(), AliAnalysisManager::kOutputContainer, outputFile.Data());
150 mgr->AddTask(counterEMC);
151 mgr->ConnectInput (counterEMC, 0, cinput1 );
152 mgr->ConnectOutput (counterEMC, 1, coutputEMC);
155 counterINT->SelectCollisionCandidates(AliVEvent::kINT7);
157 AliAnalysisDataContainer *coutputINT =
158 mgr->CreateContainer(
"counterINT7", TList::Class(), AliAnalysisManager::kOutputContainer, outputFile.Data());
159 mgr->AddTask(counterINT);
160 mgr->ConnectInput (counterINT, 0, cinput1 );
161 mgr->ConnectOutput (counterINT, 1, coutputINT);
165 AliAnalysisDataContainer *coutput =
166 mgr->CreateContainer(
"counter", TList::Class(), AliAnalysisManager::kOutputContainer, outputFile.Data());
167 mgr->AddTask(counter);
168 mgr->ConnectInput (counter, 0, cinput1);
169 mgr->ConnectOutput (counter, 1, coutput);
174 gROOT->LoadMacro(
"$ALICE_PHYSICS/PWGGA/CaloTrackCorrelations/macros/QA/AddTaskCalorimeterQA.C");
178 taskQAEMC->SelectCollisionCandidates(AliVEvent::kEMC7);
180 taskQAINT->SelectCollisionCandidates(AliVEvent::kINT7);
200 mgr->StartAnalysis(smode.Data(),chain);
202 cout <<
" Analysis ended sucessfully "<< endl ;
205 else cout <<
"Chain was not produced ! "<<endl;
231 TString parpar(Form(
"%s.par", pararchivename)) ;
233 if (
gSystem->AccessPathName(parpar.Data()) )
236 TString processline(Form(
".! make %s", parpar.Data())) ;
237 gROOT->ProcessLine(processline.Data()) ;
238 gSystem->ChangeDirectory(cdir) ;
239 processline = Form(
".! mv $ALICE_PHYSICS/%s .", parpar.Data()) ;
240 gROOT->ProcessLine(processline.Data()) ;
243 if (
gSystem->AccessPathName(pararchivename) )
245 TString processline = Form(
".! tar xvzf %s",parpar.Data()) ;
246 gROOT->ProcessLine(processline.Data());
250 gSystem->ChangeDirectory(pararchivename);
253 if (!
gSystem->AccessPathName(
"PROOF-INF/BUILD.sh"))
255 printf(
"*******************************\n");
256 printf(
"*** Building PAR archive ***\n");
257 cout<<pararchivename<<endl;
258 printf(
"*******************************\n");
260 if (
gSystem->Exec(
"PROOF-INF/BUILD.sh"))
262 Error(
"runProcess",
"Cannot Build the PAR Archive! - Abort!");
267 if (!
gSystem->AccessPathName(
"PROOF-INF/SETUP.C"))
269 printf(
"*******************************\n");
270 printf(
"*** Setup PAR archive ***\n");
271 cout<<pararchivename<<endl;
272 printf(
"*******************************\n");
273 gROOT->Macro(
"PROOF-INF/SETUP.C");
276 gSystem->ChangeDirectory(ocwd.Data());
277 printf(
"Current dir: %s\n", ocwd.Data());
293 gROOT->LoadMacro(
"$ALICE_PHYSICS/PWG/EMCAL/CreateESDChain.C");
295 chain = CreateESDChain(
"ESD12001.txt", 5);
309 else cout<<
"INDIR not set, use default: "<<
kInDir<<endl;
313 else cout<<
"PATTERN not set, use default: "<<
kPattern<<endl;
317 else cout<<
"NFILES not set, use default: "<<
kFile<<endl;
321 printf(
"Get %d files from directory %s\n",
kFile,
kInDir);
323 printf(
"%s does not exist\n",
kInDir) ;
327 cout<<
"INDIR : "<<
kInDir<<endl;
328 cout<<
"NFILES : "<<
kFile<<endl;
329 cout<<
"PATTERN : " <<
kPattern<<endl;
332 if(kInputData ==
"ESD") datafile =
"AliESDs.root" ;
333 else if(kInputData ==
"AOD") datafile =
"AliAOD.root" ;
340 for (event = 0 ;
event <
kFile ;
event++) {
341 sprintf(file,
"%s/%s%d/%s",
kInDir,
kPattern,event,datafile.Data()) ;
344 if ( fESD = TFile::Open(file)) {
345 if ( fESD->Get(kTreeName) ) {
346 printf(
"++++ Adding %s\n", file) ;
347 chain->AddFile(file);
351 printf(
"---- Skipping %s\n", file) ;
355 printf(
"number of entries # %lld, skipped %d\n", chain->GetEntries(), skipped*100) ;
358 TString input =
"AliESDs.root" ;
359 cout<<
">>>>>> No list added, take a single file <<<<<<<<< "<<input<<endl;
360 chain->AddFile(input);
368 else if(mode ==
mGRID){
375 sprintf(
kXML,
"collection.xml") ;
377 if (!TFile::Open(
kXML)) {
378 printf(
"No collection file with name -- %s -- was found\n",
kXML);
381 else cout<<
"XML file "<<
kXML<<endl;
386 TGrid::Connect(
"alien://") ;
389 TGridCollection * collection = (TGridCollection*) TAlienCollection::Open(
kXML);
391 AliError(Form(
"%s not found",
kXML)) ;
394 TGridResult* result = collection->GetGridResult(
"",0 ,0);
397 printf(
"*** Getting the Chain ***\n");
398 for (
Int_t index = 0; index < result->GetEntries(); index++) {
399 TString alienURL = result->GetKey(index,
"turl") ;
400 cout <<
"================== " << alienURL << endl ;
401 chain->Add(alienURL) ;
405 gSystem->ChangeDirectory(ocwd.Data());
anaModes
Different analysis modes.
Count events with different selection criteria.
const TString kInputData
With real data kMC = kFALSE.
Analyze files on GRID with Plugin.
const Bool_t kMC
Global name for the xml collection file with data on grid.
void SetupPar(char *pararchivename)
AliAnalysisTaskCaloTrackCorrelation * AddTaskCalorimeterQA(const char *suffix="default", Bool_t simulation=kFALSE, TString outputFile="", Int_t year=2015, Bool_t printSettings=kFALSE, Bool_t calibrate=kTRUE)
void anaQA(Int_t mode=mLocal)
Analyze files on GRID with Plugin.
void CreateChain(const anaModes mode, TChain *chain)
Fills chain with data files paths.
Analyze locally files in your computer.
Main class conecting the CaloTrackCorrelations package and Analysis Frame.
TFile * file
TList with histograms for a given trigger.
Int_t kFile
Data are in files kInDir/kPattern+i.
char * kXML
Number of files to analyze in local mode.
TString kTreeName
ESD, AOD, MC.
char * kPattern
Global, path to data files.