//Settings to read locally several files, only for "mLocal" mode
//The different values are default, they can be set with environmental
//variables: INDIR, PATTERN, NEVENT, respectivelly
-char * kInDir = "/user/data/files";
-char * kPattern = ""; // Data are in files kInDir/kPattern+i
+char * kInDir = "/user/data/files/";
+char * kPattern = ""; // Data are in files kInDir/kPattern+i
Int_t kEvent = 1; // Number of files
//---------------------------------------------------------------------------
//Collection file for grid analysis
//---------------------------------------------------------------------------
const Bool_t kMC = kTRUE; //With real data kMC = kFALSE
-const TString kInputData = "ESD";
+const TString kInputData = "ESD";//ESD, AOD, MC
+TString kTreeName = "esdTree";
+
void anaPartCorrJetAn(Int_t mode=mLocal, TString configName = "ConfigAnalysisGammaJetFinderCorrelation")
{
// Main
//-------------------------------------------------------------------------------------------------
//Create chain from ESD and from cross sections files, look below for options.
//-------------------------------------------------------------------------------------------------
- TChain *chain = new TChain("esdTree") ;
+ if(kInputData == "ESD") kTreeName = "esdTree" ;
+ else if(kInputData == "AOD") kTreeName = "aodTree" ;
+ else if (kInputData == "MC") kTreeName = "TE" ;
+ else {
+ cout<<"Wrong data type "<<kInputData<<endl;
+ break;
+ }
+
+ TChain *chain = new TChain(kTreeName) ;
TChain * chainxs = new TChain("Xsection") ;
CreateChain(mode, chain, chainxs);
//-------------------------------------
AliAnalysisManager *mgr = new AliAnalysisManager("Manager", "Manager");
// MC handler
- if(kMC){
+ if(kMC || kInputData == "MC"){
AliMCEventHandler* mcHandler = new AliMCEventHandler();
mcHandler->SetReadTR(kFALSE);//Do not search TrackRef file
- mgr->SetMCtruthEventHandler(mcHandler);
+ mgr->SetMCtruthEventHandler(mcHandler);
+ if( kInputData == "MC") mgr->SetInputEventHandler(NULL);
}
// AOD output handler
mgr->AddTask(taskpwg4);
// Create containers for input/output
- AliAnalysisDataContainer *cinput1 = mgr->CreateContainer("cchain",TChain::Class(),
- AliAnalysisManager::kInputContainer);
- AliAnalysisDataContainer *coutput1 = mgr->CreateContainer("tree", TTree::Class(),
- AliAnalysisManager::kOutputContainer, "default");
+ AliAnalysisDataContainer *cinput1 = mgr->GetCommonInputContainer();
+ AliAnalysisDataContainer *coutput1 = mgr->GetCommonOutputContainer();
AliAnalysisDataContainer *coutput2 = mgr->CreateContainer("corrhistos", TList::Class(),
AliAnalysisManager::kOutputContainer, "histos.root");
GetAverageXsection(chainxs, xsection, ntrials);
AliAnaScale * scale = new AliAnaScale("scale") ;
- scale->Set(xsection/ntrials/kNumberOfEventsPerFile/nfiles) ;
+ scale->Set(xsection/ntrials/nfiles) ;
scale->MakeSumw2(kFALSE);
scale->SetDebugLevel(2);
mgr->AddTask(scale);
//gSystem->Load("libANALYSISalice");
//gSystem->Load("libJETAN");
//gSystem->Load("libPHOSUtils");
+ //gSystem->Load("libEMCALUtils");
//gSystem->Load("libPWG4PartCorrBase");
//gSystem->Load("libPWG4PartCorrDep");
SetupPar("ANALYSIS");
SetupPar("ANALYSISalice");
SetupPar("JETAN");
- //If your analysis needs PHOS geometry uncomment following lines
-// SetupPar("PHOSUtils");
+ SetupPar("PHOSUtils");
+ SetupPar("EMCALUtils");
// //Create Geometry
// TGeoManager::Import("geometry.root") ; //need file "geometry.root" in local dir!!!!
SetupPar("PWG4PartCorrBase");
gProof->UploadPackage("JETAN.par");
gProof->EnablePackage("JETAN");
// Enable PHOSUtils
- //gProof->UploadPackage("PHOSUtils.par");
- //gProof->EnablePackage("PHOSUtils");
+ gProof->UploadPackage("PHOSUtils.par");
+ gProof->EnablePackage("PHOSUtils");
+ // Enable PHOSUtils
+ gProof->UploadPackage("EMCALUtils.par");
+ gProof->EnablePackage("EMCALUtils");
// Enable PartCorr analysis
gProof->UploadPackage("PWG4PartCorrBase.par");
gProof->EnablePackage("PWG4PartCorrBase");
cout<<"INDIR : "<<kInDir<<endl;
cout<<"NEVENT : "<<kEvent<<endl;
cout<<"PATTERN: " <<kPattern<<endl;
-
+
+ TString datafile="";
+ if(kInputData == "ESD") datafile = "AliESDs.root" ;
+ else if(kInputData == "AOD") datafile = "aod.root" ;
+ else if(kInputData == "MC") datafile = "galice.root" ;
+
//Loop on ESD files, add them to chain
Int_t event =0;
Int_t skipped=0 ;
char filexs[120] ;
for (event = 0 ; event < kEvent ; event++) {
- sprintf(file, "%s/%s%d/AliESDs.root", kInDir,kPattern,event) ;
+ sprintf(file, "%s/%s%d/%s", kInDir,kPattern,event,datafile.Data()) ;
sprintf(filexs, "%s/%s%d/%s", kInDir,kPattern,event,kXSFileName) ;
TFile * fESD = 0 ;
//Check if file exists and add it, if not skip it
if ( fESD = TFile::Open(file)) {
- if ( fESD->Get("esdTree") ) {
+ if ( fESD->Get(kTreeName) ) {
printf("++++ Adding %s\n", file) ;
chain->AddFile(file);
chainxs->Add(filexs) ;
skipped++ ;
}
}
- printf("number of entries # %lld, skipped %d\n", chain->GetEntries(), skipped*100) ;
+ printf("number of entries # %lld, skipped %d\n", chain->GetEntries(), skipped) ;
}
else {
TString input = "AliESDs.root" ;