15 #if !defined(__CINT__) || defined(__MAKECINT__) 17 #include <Riostream.h> 23 #include <TApplication.h> 29 #include "TGridCollection.h" 30 #include "TAlienCollection.h" 31 #include "TGridResult.h" 37 #include "AliAnalysisGrid.h" 38 #include "AliAnalysisManager.h" 39 #include "AliMCEventHandler.h" 40 #include "AliAnalysisTaskSE.h" 41 #include "AliESDEvent.h" 42 #include "AliAODEvent.h" 43 #include "AliESDInputHandler.h" 44 #include "AliAODInputHandler.h" 45 #include "AliAODHandler.h" 46 #include "AliPhysicsSelection.h" 47 #include "AliPhysicsSelectionTask.h" 48 #include "AliMultiInputEventHandler.h" 51 #include "AliAnalysisDataContainer.h" 53 #include "TSystemDirectory.h" 54 #include "CreateESDChain.C" 56 #include "AliPhysicsSelection.h" 57 #include "AliPhysicsSelectionTask.h" 58 #include "AddTaskPhysicsSelection.C" 60 #include "AliCentralitySelectionTask.h" 61 #include "AliMultSelectionTask.h" 62 #include "AliVZEROEPSelectionTask.h" 63 #include "AliEPSelectionTask.h" 64 #include "AddTaskCentrality.C" 65 #include "AddTaskMultSelection.C" 66 #include "AddTaskVZEROEPSelection.C" 67 #include "AddTaskEventplane.C" 97 char *
kInDir = (
char*)
"/user/data/files/";
113 char *
kXML = (
char*)
"collection.xml";
142 void SetupPar(
char* pararchivename);
181 printf(
"*********************************************\n");
182 printf(
"*** Input data < %s >, pass %s, tree < %s >, MC? < %d > ***\n",kInputData.Data(),kPass.Data(),kTreeName.Data(),
kMC);
183 printf(
"*********************************************\n");
190 printf(
"===== kMC %d, chainxs %p\n",
kMC,chainxs);
201 printf(
"n xs files %d",nfiles);
205 Int_t nEventsPerFile = chain->GetEntries() / nfiles;
207 Double_t trials = ntrials / nEventsPerFile ;
209 scale = xsection / trials;
211 printf(
"Get Cross section : nfiles %d, nevents %lld, nevents per file %d \n",nfiles, chain->GetEntries(),nEventsPerFile);
212 printf(
" ntrials %2.2f, trials %2.2f, xs %2.2e, scale factor %2.2e\n", ntrials,trials,xsection,scale);
214 if(chainxs->GetEntries()!=chain->GetEntries()) printf(
"CAREFUL: Number of files in data chain %lld, in cross section chain %lld \n",
215 chainxs->GetEntries(),chain->GetEntries());
219 if( scale <= 0 || !ok)
220 { printf(
"STOP, cross section not available! nfiles %lld \n", chainxs->GetEntries() ) ; return ; }
224 printf(
"*********************************************\n");
225 printf(
"number of entries # %lld \n", chain->GetEntries()) ;
226 printf(
"*********************************************\n");
230 printf(
"STOP, no chain available\n");
234 AliLog::SetGlobalLogLevel(AliLog::kError);
239 AliAnalysisGrid *alienHandler=0x0;
259 mgr->SetGridHandler(alienHandler);
263 if((
kMC || kInputData ==
"MC") && !kInputData.Contains(
"AOD"))
265 AliMCEventHandler* mcHandler =
new AliMCEventHandler();
266 mcHandler->SetReadTR(kFALSE);
267 mgr->SetMCtruthEventHandler(mcHandler);
268 if( kInputData ==
"MC")
270 cout<<
"MC INPUT EVENT HANDLER"<<endl;
271 mgr->SetInputEventHandler(NULL);
277 if(kInputData!=
"deltaAOD" &&
outAOD)
279 cout<<
"Init output handler"<<endl;
280 AliAODHandler* aodoutHandler =
new AliAODHandler();
281 aodoutHandler->SetOutputFileName(
"aod.root");
283 mgr->SetOutputEventHandler(aodoutHandler);
288 if(kInputData ==
"ESD")
291 AliESDInputHandler *esdHandler =
new AliESDInputHandler();
292 esdHandler->SetReadFriends(kFALSE);
293 mgr->SetInputEventHandler(esdHandler);
294 cout<<
"ESD handler "<<mgr->GetInputEventHandler()<<endl;
296 else if(kInputData.Contains(
"AOD"))
299 AliAODInputHandler *aodHandler =
new AliAODInputHandler();
300 mgr->SetInputEventHandler(aodHandler);
301 if(kInputData ==
"deltaAOD") aodHandler->AddFriend((
char*)
"deltaAODCaloTrackCorr.root");
302 cout<<
"AOD handler "<<mgr->GetInputEventHandler()<<endl;
308 TString outputFile = AliAnalysisManager::GetCommonFileName();
315 if(kInputData==
"ESD" && !
kMC)
317 gROOT->LoadMacro(
"$ALICE_PHYSICS/OADB/macros/AddTaskPhysicsSelection.C");
318 AliPhysicsSelectionTask* physSelTask = AddTaskPhysicsSelection(
kMC);
322 if(kCollision==
"PbPb" && kInputData==
"ESD" &&
kRun < 200000)
324 gROOT->LoadMacro(
"$ALICE_PHYSICS/OADB/macros/AddTaskCentrality.C");
325 AliCentralitySelectionTask *taskCentrality = AddTaskCentrality();
330 gROOT->LoadMacro(
"$ALICE_PHYSICS/OADB/COMMON/MULTIPLICITY/macros/AddTaskMultSelection.C");
331 AliMultSelectionTask * task = AddTaskMultSelection(kFALSE);
334 task->SetUseDefaultCalib(kTRUE);
335 task->SetUseDefaultMCCalib(kTRUE);
338 if(kCollision==
"PbPb")
340 gROOT->LoadMacro(
"$ALICE_ROOT/ANALYSIS/macros/AddTaskVZEROEPSelection.C");
341 AliVZEROEPSelectionTask * EPV0 = AddTaskVZEROEPSelection();
343 gROOT->LoadMacro(
"$ALICE_ROOT/ANALYSIS/macros/AddTaskEventplane.C");
344 AliEPSelectionTask * EP = AddTaskEventplane();
351 gROOT->LoadMacro(
"$ALICE_PHYSICS/PWGGA/CaloTrackCorrelations/macros/AddTaskCounter.C");
362 if(kCollision==
"PbPb")
399 gROOT->LoadMacro(
"$ALICE_PHYSICS/PWGGA/CaloTrackCorrelations/macros/QA/AddTaskCalorimeterQA.C");
412 if(
kRun < 122195 || (
kRun > 126437 &&
kRun < 136851) ||
kMC) calibTT=kFALSE ;
415 gROOT->LoadMacro(
"$ALICE_PHYSICS/PWGGA/CaloTrackCorrelations/macros/AddTaskCaloTrackCorr.C");
416 gROOT->LoadMacro(
"$ALICE_PHYSICS/PWGPP/EMCAL/macros/AddTaskEMCALClusterize.C");
420 printf(
"==================================== \n");
421 printf(
"CONFIGURE ANALYSIS FOR PP COLLISIONS \n");
422 printf(
"==================================== \n");
432 Int_t minEseed = 100;
450 Bool_t selectEvents = kFALSE;
459 minEcell,minEseed,dTime,wTime,unfMinE,unfFrac,
460 calibEE,badMap,calibTT,clnonlin);
462 printf(
"Name of clusterizer1 array: %s\n",arrayNameV1.Data());
502 if(kCollision==
"PbPb")
504 printf(
"====================================== \n");
505 printf(
"CONFIGURE ANALYSIS FOR PbPb COLLISIONS \n");
506 printf(
"====================================== \n");
514 Int_t minEcell = 150;
515 Int_t minEseed = 300;
532 Bool_t selectEvents = kFALSE;
540 minEcell,minEseed,dTime,wTime,unfMinE,unfFrac,
541 calibEE,badMap,calibTT,clnonlin);
543 printf(
"Name of clusterizer1 array: %s\n",arrayNameV1.Data());
549 0,20,qa,hadron,calibEE,badMap,calibTT,deltaAOD,
kPrint,scale,
kRun);
552 20,40,qa,hadron,calibEE,badMap,calibTT,deltaAOD,
kPrint,scale,
kRun);
555 60,80,qa,hadron,calibEE,badMap,calibTT,deltaAOD,
kPrint,scale,
kRun);
562 minEcell,minEseed,dTime,wTime,unfMinE,unfFrac,
563 calibEE,badMap,calibTT,clnonlin);
565 printf(
"Name of clusterizer2 array: %s\n",arrayNameV2.Data());
574 0,20,qa,hadron,calibEE,badMap,calibTT,deltaAOD,
kPrint,scale,
kRun);
577 20,40,qa,hadron,calibEE,badMap,calibTT,deltaAOD,
kPrint,scale,
kRun);
580 60,80,qa,hadron,calibEE,badMap,calibTT,deltaAOD,
kPrint,scale,
kRun);
585 0,20,qa,hadron,calibEE,badMap,calibTT,deltaAOD,
kPrint,scale,
kRun);
588 20,40,qa,hadron,calibEE,badMap,calibTT,deltaAOD,
kPrint,scale,
kRun);
591 60,80,qa,hadron,calibEE,badMap,calibTT,deltaAOD,
kPrint,scale,
kRun);
603 else if (
mode ==
mPROOF ) mgr->StartAnalysis(
"proof",chain);
604 else mgr->StartAnalysis(
"local",chain);
606 cout <<
" Analysis ended sucessfully "<< endl ;
670 gSystem->AddIncludePath(
"-I$ALICE_ROOT");
671 gSystem->AddIncludePath(
"-I$ALICE_PHYSICS");
672 gSystem->AddIncludePath(
"-I./");
684 TString parpar(Form(
"%s.par", pararchivename)) ;
686 if (
gSystem->AccessPathName(pararchivename) )
688 TString processline = Form(
".! tar xvzf %s",parpar.Data()) ;
689 gROOT->ProcessLine(processline.Data());
693 gSystem->ChangeDirectory(pararchivename);
696 if (!
gSystem->AccessPathName(
"PROOF-INF/BUILD.sh"))
698 printf(
"*******************************\n");
699 printf(
"*** Building PAR archive ***\n");
700 cout<<pararchivename<<endl;
701 printf(
"*******************************\n");
703 if (
gSystem->Exec(
"PROOF-INF/BUILD.sh"))
705 Error(
"runProcess",
"Cannot Build the PAR Archive! - Abort!");
710 if (!
gSystem->AccessPathName(
"PROOF-INF/SETUP.C"))
712 printf(
"*******************************\n");
713 printf(
"*** Setup PAR archive ***\n");
714 cout<<pararchivename<<endl;
715 printf(
"*******************************\n");
716 gROOT->Macro(
"PROOF-INF/SETUP.C");
719 gSystem->ChangeDirectory(ocwd.Data());
720 printf(
"Current dir: %s\n", ocwd.Data());
740 else cout<<
"INDIR not set, use default: "<<
kInDir<<endl;
743 if (sindir.Contains(
"pass1")) kPass =
"pass1";
744 else if(sindir.Contains(
"pass2")) kPass =
"pass2";
745 else if(sindir.Contains(
"pass3")) kPass =
"pass3";
749 else cout<<
"PATTERN not set, use default: "<<
kPattern<<endl;
751 cout<<
"INDIR : "<<
kInDir<<endl;
752 cout<<
"NFILES : "<<
kFile<<endl;
758 for (
Int_t event = 0 ;
event <
kFile ;
event++) {
762 sprintf(fileEm,
"%s/%s%d/embededAOD.root",
kInDir,
kPattern,event) ;
764 TFile * fESD = TFile::Open(fileE) ;
765 TFile * fAOD = TFile::Open(fileA) ;
770 kTreeName =
"esdTree";
772 TFile * fG = TFile::Open(fileG);
773 if(fG) {
kMC = kTRUE; fG->Close();}
777 TTree* esdTree = (
TTree*)fESD->Get(
"esdTree");
779 esd->ReadFromTree(esdTree);
780 esdTree->GetEvent(0);
781 kRun = esd->GetRunNumber();
787 kTreeName =
"aodTree";
789 if(((
TTree*) fAOD->Get(
"aodTree"))->GetBranch(
"mcparticles"))
kMC=kTRUE;
793 TTree* aodTree = (
TTree*)fAOD->Get(
"aodTree");
795 aod->ReadFromTree(aodTree);
796 aodTree->GetEvent(0);
797 kRun = aod->GetRunNumber();
800 else if(TFile::Open(fileEm))
802 kTreeName =
"aodTree";
808 else if(TFile::Open(fileG))
816 if(fESD) fESD->Close();
817 if(fAOD) fAOD->Close();
825 else if(mode ==
mGRID){
832 sprintf(
kXML,
"collection.xml") ;
834 if (!TFile::Open(
kXML)) {
835 printf(
"No collection file with name -- %s -- was found\n",
kXML);
838 else cout<<
"XML file "<<
kXML<<endl;
843 TGrid::Connect(
"alien://") ;
846 TGridCollection * collection = (TGridCollection*) TAlienCollection::Open(
kXML);
848 printf(
"%s not found\n",
kXML) ;
851 TGridResult* result = collection->GetGridResult(
"",0 ,0);
853 for (
Int_t index = 0; index < result->GetEntries(); index++) {
854 TString alienURL = result->GetKey(index,
"turl") ;
855 cout <<
"================== " << alienURL << endl ;
857 if (alienURL.Contains(
"pass1")) kPass =
"pass1";
858 else if(alienURL.Contains(
"pass2")) kPass =
"pass2";
859 else if(alienURL.Contains(
"pass3")) kPass =
"pass3";
861 kRun = AliAnalysisManager::GetRunFromAlienPath(alienURL.Data());
862 printf(
"Run number from alien path = %d\n",
kRun);
866 if (alienURL.Contains(
"AliESDs.root"))
868 kTreeName =
"esdTree";
870 alienURL.ReplaceAll(
"AliESDs.root",
"galice.root");
871 if(TFile::Open(alienURL))
kMC=kTRUE;
875 else if(alienURL.Contains(
"AliAOD.root"))
877 kTreeName =
"aodTree";
879 fAOD = TFile::Open(alienURL);
880 if(((
TTree*) fAOD->Get(
"aodTree"))->GetBranch(
"mcparticles"))
kMC=kTRUE;
884 else if(alienURL.Contains(
"embededAOD.root"))
886 kTreeName =
"aodTree";
891 else if(alienURL.Contains(
"galice.root"))
962 gSystem->ChangeDirectory(ocwd.Data());
972 if(kInputData ==
"AOD")
989 else cout<<
"INDIR not set, use default: "<<
kInDir<<endl;
993 else cout<<
"PATTERN not set, use default: "<<
kPattern<<endl;
997 else cout<<
"NFILES not set, use default: "<<
kFile<<endl;
1002 printf(
"Get %d files from directory %s\n",
kFile,
kInDir);
1005 printf(
"%s does not exist\n",
kInDir) ;
1012 char * kGener = (
char*)
gSystem->Getenv(
"GENER");
1015 cout<<
"GENER "<<kGener<<endl;
1016 if (!strcmp(kGener,
"PYTHIA"))
kXSFileName =
"pyxsec.root";
1017 else if(!strcmp(kGener,
"HERWIG"))
kXSFileName =
"hexsec.root";
1018 else cout<<
" UNKNOWN GENER, use default: "<<
kXSFileName<<endl;
1020 else cout<<
" GENER not set, use default xs file name: "<<
kXSFileName<<endl;
1022 if(kInputData==
"AOD")
1029 cout<<
"INDIR : "<<
kInDir <<endl;
1030 cout<<
"NFILES : "<<
kFile <<endl;
1031 cout<<
"PATTERN : "<<
kPattern <<endl;
1035 if (kInputData ==
"ESD") datafile =
"AliESDs.root" ;
1036 else if(kInputData.Contains(
"AOD")) datafile =
"AliAOD.root" ;
1037 else if(kInputData ==
"MC") datafile =
"galice.root" ;
1045 for (event = 0 ;
event <
kFile ;
event++) {
1046 sprintf(file,
"%s/%s%d/%s",
kInDir,
kPattern,event,datafile.Data()) ;
1049 TFile * fData = TFile::Open(file) ;
1054 if ( fData->Get(kTreeName) )
1056 printf(
"++++ Adding %s\n", file) ;
1057 chain->AddFile(file);
1059 if(kInputData !=
"AOD")
1061 chainxs->Add(filexs) ;
1065 TFile* fxsec = TFile::Open(filexs);
1068 TKey* key = (TKey*)fxsec->GetListOfKeys()->At(0);
1076 TList *list =
dynamic_cast<TList*
>(key->ReadObj());
1084 Float_t xsection = ((TProfile*)list->FindObject(
"h1Xsec")) ->GetBinContent(1);
1085 Int_t ntrials = ((TH1F*) list->FindObject(
"h1Trials"))->GetBinContent(1);
1088 xsArr->SetAt(xsection,event);
1089 trArr->SetAt(ntrials,event);
1091 printf(
"recovered xs %f, ntrials %d, event %d\n",xsection,ntrials, event);
1101 printf(
"---- Skipping %s\n", file) ;
1107 TString input =
"AliESDs.root" ;
1108 cout<<
">>>>>> No list added, take a single file <<<<<<<<< "<<input<<endl;
1109 chain->AddFile(input);
1117 else if(mode ==
mGRID)
1123 TGridCollection * collection = (TGridCollection*) TAlienCollection::Open(
kXML);
1125 printf(
"%s not found\n",
kXML) ;
1129 TGridResult* result = collection->GetGridResult(
"",0 ,0);
1132 printf(
"*** Getting the Chain ***\n");
1133 for (
Int_t index = 0; index < result->GetEntries(); index++) {
1134 TString alienURL = result->GetKey(index,
"turl") ;
1135 cout <<
"================== " << alienURL << endl ;
1136 chain->Add(alienURL) ;
1138 if(kInputData !=
"AOD")
1142 chainxs->Add(alienURL) ;
1146 alienURL.ReplaceAll(
"AliESDs.root",
"pyxsec_hists.root");
1147 alienURL.ReplaceAll(
"AliAOD.root",
"pyxsec_hists.root");
1148 TFile* fxsec = TFile::Open(alienURL);
1151 TKey* key = (TKey*)fxsec->GetListOfKeys()->At(0);
1159 TList *list =
dynamic_cast<TList*
>(key->ReadObj());
1167 Float_t xsection = ((TProfile*)list->FindObject(
"h1Xsec")) ->GetBinContent(1);
1168 Int_t ntrials = ((TH1F*) list->FindObject(
"h1Trials"))->GetBinContent(1);
1171 xsArr->SetAt(xsection,index);
1172 trArr->SetAt(ntrials,index);
1174 printf(
"recovered xs %f, ntrials %d, event %d\n",xsection,ntrials, index);
1193 gSystem->ChangeDirectory(ocwd.Data());
1205 Bool_t bRecalibrate = kFALSE;
1206 Bool_t bBadChannel = kFALSE;
1208 for (
int i=0; i< gApplication->Argc();i++){
1212 printf(
"Arg %d: %s\n",i,gApplication->Argv(i));
1221 if (!(strcmp(gApplication->Argv(i),
"--recalibrate")))
1222 bRecalibrate = atoi(gApplication->Argv(i+1));
1224 if (!(strcmp(gApplication->Argv(i),
"--badchannel")))
1225 bBadChannel = atoi(gApplication->Argv(i+1));
1227 if (!(strcmp(gApplication->Argv(i),
"--run")))
1229 sRun = gApplication->Argv(i+1);
1230 if(sRun.Contains(
"LHC10")) {
1235 kRun = atoi(gApplication->Argv(i+1));
1237 else printf(
"** Run number already set to %d, do not set to %d\n",
kRun,atoi(gApplication->Argv(i+1)));
1246 if(
kRun >= 136851 ) kCollision =
"PbPb";
1248 else if(
kRun < 170600)
1251 if(
kRun >= 166500 ) kCollision =
"PbPb";
1253 else if(
kRun < 200000 )
1256 if(
kRun >= 194000 ) kCollision =
"pPb";
1258 else if(
kRun < 247000 )
1261 if(
kRun >= 244820 ) kCollision =
"PbPb";
1270 printf(
"*********************************************\n");
1273 printf(
"*** Settings year %d, collision %s, run %d ***\n",
kYear,kCollision.Data(),
kRun);
1274 printf(
"*********************************************\n");
1302 if( kInputData !=
"AOD" && tree )
1304 nfiles = tree->GetEntries() ;
1306 tree->SetBranchAddress(
"xsection",&xsection);
1307 tree->SetBranchAddress(
"ntrials" ,&ntrials );
1308 for(
Int_t i = 0; i < nfiles; i++)
1317 cout <<
"xsection " <<xsection<<
" ntrials "<<ntrials<<endl;
1320 else if( kInputData ==
"AOD" &&
xsArr )
1322 nfiles =
xsArr->GetSize();
1324 for(
Int_t i = 0; i < nfiles; i++)
1326 if(
xsArr->GetAt(i) > 0)
1328 xs +=
xsArr->GetAt(i) ;
1329 ntr += trArr->GetAt(i) ;
1332 cout <<
"xsection " <<
xsArr->GetAt(i)<<
" ntrials "<<trArr->GetAt(i)<<endl;
1339 cout <<
"-----------------------------------------------------------------"<<endl;
1340 cout <<
"Average of "<< n <<
" files: xsection " <<xs<<
" ntrials "<<ntr<<endl;
1341 cout <<
"-----------------------------------------------------------------"<<endl;
Analyze locally files in your computer.
void ana(Int_t mode=mGRID)
anaModes
Different analysis modes.
Bool_t GetAverageXsection(TTree *tree, Double_t &xs, Float_t &ntr, Int_t &n)
Count events with different selection criteria.
void CreateChain(const Int_t mode, TChain *chain, TChain *chainxs)
Fills chain with data files paths.
char * kPattern
Global, path to data files.
TArrayF * xsArr
Name of file with pT-hard cross sections.
Bool_t kPrint
Print setted parameters when configuring.
Int_t kYear
ESD, AOD, MC, deltaAOD.
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 CheckEnvironmentVariables()
TString kTreeName
Some tasks doesnt need it.
AliAnalysisTaskCounter * AddTaskCounter(const TString trigger="", Bool_t xsOn=kFALSE)
Analyze files on GRID with Plugin.
Analyze files on GRID with Plugin.
void CheckInputData(const Int_t mode)
Sets input data and tree strings.
Example of configuration of CaloTrackCorrelation package.
void SetupPar(char *pararchivename)
void LoadLibraries(Int_t)
Load analysis libraries.
Main class conecting the CaloTrackCorrelations package and Analysis Frame.
TFile * file
TList with histograms for a given trigger.
const char * kXSFileName
Global name for the xml collection file with data on grid.
AliAnalysisTaskEMCALClusterize * AddTaskEMCALClusterize(const char *clusArrTit="EMCAL_Clusters_New", const Bool_t bFillAOD=kFALSE, const Int_t bMC=kFALSE, const Bool_t exotic=kTRUE, const TString name="V1Unfold", const TString trigger="", const Int_t tm=1, const Int_t minEcell=50, const Int_t minEseed=100, const Int_t maxDeltaT=250, const Int_t timeWindow=1000, const Int_t minEUnf=15, const Int_t minFrac=1, const Bool_t bRecalE=kTRUE, const Bool_t bBad=kTRUE, const Bool_t bRecalT=kTRUE, const Bool_t bNonLine=kFALSE, const Int_t minCen=-1, const Int_t maxCen=-1, const Float_t clusterEnergyCutEvent=-1, const Int_t nRowDiff=1, const Int_t nColDiff=1, const Bool_t skipOrReject=kFALSE, const Int_t tCardMimic=0, const Bool_t cellUpd=kTRUE)
AliAnalysisTaskCaloTrackCorrelation * AddTaskCaloTrackCorr(const TString data="", const TString calorimeter="EMCAL", const Bool_t simulation=kFALSE, const Bool_t eventsel=kFALSE, const Bool_t exotic=kTRUE, const Bool_t nonlin=kFALSE, TString outputfile="", const Int_t year=2010, const TString col="pp", const TString trigger="MB", const TString clustersArray="V1", const Bool_t mix=kTRUE, const Bool_t recaltm=kTRUE, const Bool_t tm=kTRUE, const Int_t minCen=-1, const Int_t maxCen=-1, const Bool_t qaan=kFALSE, const Bool_t hadronan=kFALSE, const Bool_t calibE=kTRUE, const Bool_t badmap=kTRUE, const Bool_t calibT=kTRUE, const Bool_t tender=kFALSE, const Bool_t outputAOD=kFALSE, const Bool_t printSettings=kFALSE, const Double_t scaleFactor=-1, const Int_t runNumber=-1)
Int_t kFile
Data are in files kInDir/kPattern+i.
Configuration of EMCal re-clusterization analysis task.
Counting task configurations.
TString kInputData
With real data kMC = kFALSE.
Reclusterize EMCal clusters, put them in a new branch for other following analysis.
char * kDatasetPROOF
Number of files to analyze in local mode.
Configuration of EMCal QA.