14 #if !defined(__CINT__) || defined(__MAKECINT__) 16 #include "Riostream.h" 22 #include "TApplication.h" 25 #include "TGridCollection.h" 26 #include "TAlienCollection.h" 27 #include "TGridResult.h" 30 #include "AliAnalysisGrid.h" 31 #include "AliAnalysisManager.h" 32 #include "AliMCEventHandler.h" 33 #include "AliAnalysisTaskSE.h" 34 #include "AliESDEvent.h" 35 #include "AliAODEvent.h" 36 #include "AliESDInputHandler.h" 37 #include "AliAODInputHandler.h" 38 #include "AliAODHandler.h" 39 #include "AliPhysicsSelection.h" 40 #include "AliPhysicsSelectionTask.h" 41 #include "AliMultiInputEventHandler.h" 44 #include "AliAnalysisDataContainer.h" 45 #include "TSystemDirectory.h" 46 #include "CreateESDChain.C" 47 #include "AddTaskPhysicsSelection.C" 68 char *
kInDir = (
char*)
"/user/data/files/";
75 char *
kXML = (
char*)
"collection.xml";
113 if (kInputData ==
"ESD") kTreeName =
"esdTree" ;
114 else if (kInputData ==
"AOD") kTreeName =
"aodTree" ;
115 else if (kInputData ==
"MC" ) kTreeName =
"TE" ;
118 cout<<
"Wrong data type "<<kInputData<<endl;
127 AliLog::SetGlobalLogLevel(AliLog::kError);
134 if((
kMC || kInputData ==
"MC") && kInputData!=
"AOD"){
135 AliMCEventHandler* mcHandler =
new AliMCEventHandler();
136 mcHandler->SetReadTR(kFALSE);
137 mgr->SetMCtruthEventHandler(mcHandler);
138 if( kInputData ==
"MC") mgr->SetInputEventHandler(NULL);
142 if(kInputData ==
"ESD")
145 AliESDInputHandler *esdHandler =
new AliESDInputHandler();
146 mgr->SetInputEventHandler(esdHandler);
147 cout<<
"ESD handler "<<mgr->GetInputEventHandler()<<endl;
149 if(kInputData ==
"AOD")
152 AliAODInputHandler *aodHandler =
new AliAODInputHandler();
153 mgr->SetInputEventHandler(aodHandler);
154 cout<<
"AOD handler "<<mgr->GetInputEventHandler()<<endl;
160 cout<<
"Init output handler"<<endl;
161 AliAODHandler* aodoutHandler =
new AliAODHandler();
162 aodoutHandler->SetOutputFileName(
"aod.root");
164 mgr->SetOutputEventHandler(aodoutHandler);
170 TString outputFile = AliAnalysisManager::GetCommonFileName();
171 AliAnalysisDataContainer *cinput1 = mgr->GetCommonInputContainer();
173 if(kInputData==
"ESD" && !
kMC)
175 gROOT->LoadMacro(
"$ALICE_PHYSICS/OADB/macros/AddTaskPhysicsSelection.C");
176 AliPhysicsSelectionTask* physSelTask = AddTaskPhysicsSelection();
183 counterMB->SelectCollisionCandidates(AliVEvent::kMB);
185 AliAnalysisDataContainer *coutputMB =
186 mgr->CreateContainer(
"counterMB", TList::Class(), AliAnalysisManager::kOutputContainer, outputFile.Data());
187 mgr->AddTask(counterMB);
188 mgr->ConnectInput (counterMB, 0, cinput1 );
189 mgr->ConnectOutput (counterMB, 1, coutputMB);
192 counterEMC->SelectCollisionCandidates(AliVEvent::kEMC7);
194 AliAnalysisDataContainer *coutputEMC =
195 mgr->CreateContainer(
"counterEMC", TList::Class(), AliAnalysisManager::kOutputContainer, outputFile.Data());
196 mgr->AddTask(counterEMC);
197 mgr->ConnectInput (counterEMC, 0, cinput1 );
198 mgr->ConnectOutput (counterEMC, 1, coutputEMC);
201 counterINT->SelectCollisionCandidates(AliVEvent::kINT7);
203 AliAnalysisDataContainer *coutputINT =
204 mgr->CreateContainer(
"counterINT7", TList::Class(), AliAnalysisManager::kOutputContainer, outputFile.Data());
205 mgr->AddTask(counterINT);
206 mgr->ConnectInput (counterINT, 0, cinput1 );
207 mgr->ConnectOutput (counterINT, 1, coutputINT);
212 counter->SelectCollisionCandidates(AliVEvent::kAny);
214 AliAnalysisDataContainer *coutput =
215 mgr->CreateContainer(
"counter", TList::Class(), AliAnalysisManager::kOutputContainer, outputFile.Data());
216 mgr->AddTask(counter);
217 mgr->ConnectInput (counter, 0, cinput1);
218 mgr->ConnectOutput (counter, 1, coutput);
223 gROOT->LoadMacro(
"$ALICE_PHYSICS/PWGGA/CaloTrackCorrelations/macros/QA/AddTaskCalorimeterQA.C");
227 taskQAEMC->SelectCollisionCandidates(AliVEvent::kEMC7);
229 taskQAINT->SelectCollisionCandidates(AliVEvent::kINT7);
249 mgr->StartAnalysis(smode.Data(),chain);
251 cout <<
" Analysis ended sucessfully "<< endl ;
254 else cout <<
"Chain was not produced ! "<<endl;
280 TString parpar(Form(
"%s.par", pararchivename)) ;
282 if (
gSystem->AccessPathName(parpar.Data()) )
285 TString processline(Form(
".! make %s", parpar.Data())) ;
286 gROOT->ProcessLine(processline.Data()) ;
287 gSystem->ChangeDirectory(cdir) ;
288 processline = Form(
".! mv $ALICE_PHYSICS/%s .", parpar.Data()) ;
289 gROOT->ProcessLine(processline.Data()) ;
292 if (
gSystem->AccessPathName(pararchivename) )
294 TString processline = Form(
".! tar xvzf %s",parpar.Data()) ;
295 gROOT->ProcessLine(processline.Data());
299 gSystem->ChangeDirectory(pararchivename);
302 if (!
gSystem->AccessPathName(
"PROOF-INF/BUILD.sh"))
304 printf(
"*******************************\n");
305 printf(
"*** Building PAR archive ***\n");
306 cout<<pararchivename<<endl;
307 printf(
"*******************************\n");
309 if (
gSystem->Exec(
"PROOF-INF/BUILD.sh"))
311 Error(
"runProcess",
"Cannot Build the PAR Archive! - Abort!");
316 if (!
gSystem->AccessPathName(
"PROOF-INF/SETUP.C"))
318 printf(
"*******************************\n");
319 printf(
"*** Setup PAR archive ***\n");
320 cout<<pararchivename<<endl;
321 printf(
"*******************************\n");
322 gROOT->Macro(
"PROOF-INF/SETUP.C");
325 gSystem->ChangeDirectory(ocwd.Data());
326 printf(
"Current dir: %s\n", ocwd.Data());
342 gROOT->LoadMacro(
"$ALICE_PHYSICS/PWG/EMCAL/CreateESDChain.C");
344 chain = CreateESDChain(
"ESD12001.txt", 5);
358 else cout<<
"INDIR not set, use default: "<<
kInDir<<endl;
362 else cout<<
"PATTERN not set, use default: "<<
kPattern<<endl;
366 else cout<<
"NFILES not set, use default: "<<
kFile<<endl;
370 printf(
"Get %d files from directory %s\n",
kFile,
kInDir);
372 printf(
"%s does not exist\n",
kInDir) ;
376 cout<<
"INDIR : "<<
kInDir<<endl;
377 cout<<
"NFILES : "<<
kFile<<endl;
378 cout<<
"PATTERN : " <<
kPattern<<endl;
381 if(kInputData ==
"ESD") datafile =
"AliESDs.root" ;
382 else if(kInputData ==
"AOD") datafile =
"AliAOD.root" ;
389 for (event = 0 ;
event <
kFile ;
event++) {
390 sprintf(file,
"%s/%s%d/%s",
kInDir,
kPattern,event,datafile.Data()) ;
391 TFile * fESD = TFile::Open(file) ;
394 if ( fESD->Get(kTreeName) ) {
395 printf(
"++++ Adding %s\n", file) ;
396 chain->AddFile(file);
400 printf(
"---- Skipping %s\n", file) ;
404 printf(
"number of entries # %lld, skipped %d\n", chain->GetEntries(), skipped*100) ;
407 TString input =
"AliESDs.root" ;
408 cout<<
">>>>>> No list added, take a single file <<<<<<<<< "<<input<<endl;
409 chain->AddFile(input);
417 else if(mode ==
mGRID){
424 sprintf(
kXML,
"collection.xml") ;
426 if (!TFile::Open(
kXML)) {
427 printf(
"No collection file with name -- %s -- was found\n",
kXML);
430 else cout<<
"XML file "<<
kXML<<endl;
435 TGrid::Connect(
"alien://") ;
438 TGridCollection * collection = (TGridCollection*) TAlienCollection::Open(
kXML);
440 printf(
"%s not found\n",
kXML) ;
443 TGridResult* result = collection->GetGridResult(
"",0 ,0);
446 printf(
"*** Getting the Chain ***\n");
447 for (
Int_t index = 0; index < result->GetEntries(); index++) {
448 TString alienURL = result->GetKey(index,
"turl") ;
449 cout <<
"================== " << alienURL << endl ;
450 chain->Add(alienURL) ;
454 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.
Analyze files on GRID, jobs launched from aliensh.
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 CreateChain(const Int_t mode, TChain *chain)
Fills chain with data files paths.
void anaQA(Int_t mode=mLocal)
Analyze files on GRID with Plugin.
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.
Configuration of EMCal QA.
char * kPattern
Global, path to data files.