-//______________________________________________________________________________\r
-void AnalysisTrainCAF(Int_t nEvents = 10000, Int_t nOffset = 0, char *ds = "/PWG4/kleinb/LHC09a1_test500")\r
-{\r
- // Example of running analysis train in CAF. To run in debug mode:\r
- // - export ROOTSYS=debug on your local client\r
- // - un-comment gProof->ClearPackages()\r
- // - un-comment lines with debugging info\r
-\r
-\r
- Bool_t debug = kTRUE;\r
- Bool_t useMC = kTRUE;\r
- Bool_t readTR = kFALSE;\r
- Bool_t bPROOF = kFALSE;\r
- Bool_t bLOCALPAR = kFALSE; // flag that swtiches on loading of local par files insead of loading libs, needed for grid and local testing\r
-\r
- \r
- Int_t iAODanalysis = 1;\r
- Int_t iAODhandler = 1;\r
- Int_t iESDfilter = 1; // Only active if iAODanalysis=0\r
- Int_t iJETAN = 1;\r
- Int_t iJETANESD = 0;\r
- Int_t iJETANMC = 0;\r
- Int_t iJETANMC2 = 0;\r
- Int_t iFASTJET = 1;\r
- Int_t iDIJETAN = 0;\r
- Int_t iPWG4SPECTRUM = 0;\r
- Int_t iPWG4JFSYSTEMATICS = 0;\r
- Int_t iPWG4JETCORRECTION = 0;\r
- Int_t iPWG4THREEJETS = 0;\r
- Int_t iPWG4UE = 0;\r
- Int_t iPWG4PID = 0;\r
-\r
- if (iAODanalysis) {\r
- useMC = kFALSE;\r
- readTR = kFALSE;\r
- iESDfilter = 0;\r
- } \r
- if (iJETAN) iESDfilter=1;\r
- if (iESDfilter) iAODhandler=1;\r
- \r
- // Dataset from CAF\r
- TString dataset(ds);\r
- TChain *chain = 0;\r
- // CKB quick hack for local analysis\r
- gROOT->LoadMacro("CreateESDChain.C");\r
- TChain *chain = CreateChain("aodTree",ds,1);\r
- // TChain *chain = CreateChain("esdTree",ds,100);\r
- // chain = new TChain("aodTree");\r
- // chain->Add("/Users/kleinb/bigdisk/1/LHC09a3/001/AliAOD.root");\r
-\r
- \r
- printf("==================================================================\n");\r
- printf("=========== RUNNING ANALYSIS TRAIN IN CAF MODE =============\n");\r
- printf("==================================================================\n");\r
- if (iAODanalysis) printf("= AOD analysis on dataset: %s\n", dataset.Data());\r
- else printf("= ESD analysis on dataset: %s\n", dataset.Data());\r
- if (iESDfilter) printf("= ESD filter =\n");\r
- if (iJETAN) printf("= Jet analysis from AOD =\n");\r
- if (iJETANESD) printf("= Jet analysis from ESD =\n");\r
- if (iJETANMC) printf("= Jet analysis from Kinematics =\n");\r
- if (iJETANMC2) printf("= Jet analysis 2 from Kinematics =\n");\r
- if (iFASTJET) printf("= Loading FastJet =\n");\r
- if (iDIJETAN) printf("= DiJet analysis =\n");\r
- if (iPWG4SPECTRUM)printf("= PWG4 Jet spectrum analysis =\n");\r
- if (iPWG4JFSYSTEMATICS)printf("= PWG4 Jet Finder systematics =\n");\r
- if (iPWG4JETCORRECTION)printf("= PWG4 Jet Correction =\n");\r
- if (iPWG4THREEJETS)printf("= PWG4 Three Jets =\n");\r
-\r
- if (iPWG4UE) printf("= PWG4 UE =\n");\r
- printf("==================================================================\n");\r
- if (useMC) printf(":: use MC TRUE\n");\r
- else printf(":: use MC FALSE\n");\r
- if (readTR) printf(":: read TR TRUE\n");\r
- else printf(":: read TR FALSE\n");\r
- if (debug) printf(":: debugging TRUE\n");\r
- else printf(":: debugging FALSE\n");\r
- \r
- // Load common libraries\r
- gSystem->Load("libTree.so");\r
- gSystem->Load("libGeom.so");\r
- gSystem->Load("libVMC.so");\r
- gSystem->Load("libPhysics.so");\r
- if(iFASTJET){\r
- gSystem->Load("libCGAL.so");\r
- gSystem->Load("libfastjet.so");\r
- gSystem->Load("libsiscone.so");\r
- gSystem->Load("libSISConePlugin.so"); \r
- }\r
-\r
-\r
- // Reset user processes if CAF if not responding anymore\r
- // TProof::Reset("alicecaf"); \r
- // One may enable a different ROOT version on CAF\r
- \r
- // const char* proofNode = "localhost";\r
- const char* proofNode = "alicecaf";\r
- \r
- // Connect to proof\r
- if(bPROOF){\r
- TProof::Mgr(proofNode)->ShowROOTVersions();\r
- // TProof::Mgr(proofNode)->SetROOTVersion("v5-21-01-alice_dbg");\r
- TProof::Open(proofNode); \r
- \r
- // Clear packages if changing ROOT version on CAF or local\r
- gProof->ClearPackages();\r
- // Enable proof debugging if needed\r
- // gProof->SetLogLevel(5);\r
- // To debug the train in PROOF mode, type in a root session:\r
- // root[0] TProof::Mgr("lxb6064")->GetSessionLogs()->Display("*",0,10000);\r
- // Common packages\r
- // --- Enable the STEERBase Package\r
- gProof->UploadPackage("STEERBase.par");\r
- gProof->EnablePackage("STEERBase"); \r
- // --- Enable the ESD Package \r
- gProof->UploadPackage("ESD.par"); \r
- gProof->EnablePackage("ESD"); \r
- // --- Enable the AOD Package \r
- gProof->UploadPackage("AOD.par"); \r
- gProof->EnablePackage("AOD"); \r
- // --- Enable the ANALYSIS Package \r
- gProof->UploadPackage("ANALYSIS.par"); \r
- gProof->EnablePackage("ANALYSIS"); \r
- // --- Enable the ANALYSISalice Package\r
- gProof->UploadPackage("ANALYSISalice.par");\r
- gProof->EnablePackage("ANALYSISalice");\r
- \r
- \r
- // --- Enable the JETAN Package\r
- if (iJETAN||iJETANESD||iJETANMC||iJETANMC2) {\r
- gProof->UploadPackage("JETAN.par");\r
- gProof->EnablePackage("JETAN");\r
- if(iFASTJET){\r
- gProof->UploadPackage("FASTJETAN.par");\r
- gProof->EnablePackage("FASTJETAN"); \r
- }\r
- } \r
- // --- Enable particle correlation analysis\r
- if (iPWG4UE||iPWG4SPECTRUM||iPWG4JFSYSTEMATICS||iPWG4JETCORRECTION||iPWG4THREEJETS) {\r
- gProof->UploadPackage("JETAN.par");\r
- gProof->EnablePackage("JETAN");\r
- gProof->UploadPackage("PWG4JetTasks.par");\r
- gProof->EnablePackage("PWG4JetTasks");\r
- } \r
- \r
- }\r
- else{\r
-\r
- // \r
- // We are local or on grid\r
- // access remote files in lcoal case as well so open alien connection\r
-\r
- /*\r
- printf("*** Connect to AliEn ***\n");\r
- TGrid::Connect("alien://");\r
-\r
- chain = CreateChainFromCollection("wn.xml","esdTree",2); \r
- */\r
-\r
- if(bLOCALPAR){\r
- SetupPar("STEERBase");\r
- SetupPar("ESD"); \r
- SetupPar("AOD"); \r
- SetupPar("ANALYSIS"); \r
- SetupPar("ANALYSISalice");\r
- if (iJETAN||iJETANESD||iJETANMC||iJETANMC2){\r
- SetupPar("JETAN"); \r
- if(iFASTJET) SetupPar("FASTJETAN"); \r
- }\r
- if (iPWG4UE||iPWG4SPECTRUM||iPWG4JFSYSTEMATICS){\r
- SetupPar("JETAN"); \r
- SetupPar("PWG4JetTasks");\r
- }\r
- }\r
- else{\r
- Printf("Loading Local libs");\r
- gSystem->Load("libSTEERBase");\r
- gSystem->Load("libESD");\r
- gSystem->Load("libAOD");\r
- gSystem->Load("libANALYSIS");\r
- gSystem->Load("libANALYSISalice"); \r
- // --- Enable the JETAN Package\r
- if (iJETAN||iJETANESD||iJETANMC||iJETANMC2){\r
- gSystem->Load("libJETAN");\r
- if(iFASTJET)gSystem->Load("libFASTJETAN");\r
- }\r
- // --- Enable particle correlation analysis\r
- if (iPWG4UE||iPWG4SPECTRUM||iPWG4JFSYSTEMATICS||iPWG4THREEJETS){\r
- gSystem->Load("libJETAN");\r
- gSystem->Load("libPWG4JetTasks"); \r
- }\r
- }\r
-\r
- }\r
-\r
-\r
- // Make the analysis manager\r
- AliAnalysisManager *mgr = new AliAnalysisManager("Analysis Train", "A test setup for the analysis train");\r
- if (iAODanalysis) {\r
- // AOD input handler\r
- AliAODInputHandler *aodH = new AliAODInputHandler();\r
- mgr->SetInputEventHandler(aodH);\r
- } else { \r
- // ESD input handler\r
- AliESDInputHandler *esdHandler = new AliESDInputHandler();\r
- mgr->SetInputEventHandler(esdHandler);\r
-// esdHandler->SetInactiveBranches("FMD CaloCluster");\r
- }\r
- // Monte Carlo handler\r
- if (useMC && !iAODanalysis) {\r
- AliMCEventHandler* mcHandler = new AliMCEventHandler();\r
- mgr->SetMCtruthEventHandler(mcHandler);\r
- mcHandler->SetReadTR(readTR); \r
- } \r
- // Top container for input \r
- AliAnalysisDataContainer *cinput = 0;\r
- \r
- cinput = mgr->GetCommonInputContainer();\r
-\r
- // This container is managed by the AOD handler\r
- AliAnalysisDataContainer *cout_aod = 0;\r
- if (iAODhandler) {\r
- // AOD output handler\r
- AliAODHandler* aodHandler = new AliAODHandler();\r
- // aodHandler->SetFillAOD(kFALSE);\r
- mgr->SetOutputEventHandler(aodHandler); \r
- aodHandler->SetOutputFileName(Form("AliAODs_pwg4_%07d-%07d.root",nOffset,nOffset+nEvents));\r
- cout_aod = mgr->GetCommonOutputContainer();\r
- cout_aod->SetSpecialOutput();\r
- } \r
-\r
- // Debugging if needed\r
- if (debug) mgr->SetDebugLevel(10);\r
- // AliLog::EnableDebug(kTRUE);\r
- AliLog::SetGlobalLogLevel(1);\r
-\r
-\r
- if (iESDfilter && !iAODanalysis) {\r
- gSystem->Load("libCORRFW.so");\r
- gSystem->Load("libPWGmuon.so");\r
-\r
- gROOT->LoadMacro(Form("%s/ANALYSIS/macros/AddTaskESDFilter.C",gSystem->ExpandPathName("${ALICE_ROOT}")));\r
- // gROOT->LoadMacro("AddTaskESDfilter.C");\r
- AliAnalysisTaskESDfilter *esdfilter = AddTaskESDFilter();\r
- Printf("esdFilter %p",esdfilter); \r
- } \r
- // Jet analysis from the AOD\r
- if (iJETAN) {\r
- gROOT->LoadMacro("AddTaskJets.C");\r
- // AliAnalysisTaskJets *jetanaAOD = AddTaskJets("AOD","UA1",0.4);\r
- // AliAnalysisTaskJets *jetanaAOD = AddTaskJets("AOD","UA1",0.4);\r
- // jetanaAOD->SetNonStdBranch("jetsAOD_UA1"); \r
- AliAnalysisTaskJets *jetanaAOD = AddTaskJets();\r
- Int_t i = AddTaskJetsDelta();\r
- } \r
- // JETANALYSIS from the ESD\r
- if (iJETANESD && !iAODanalysis) {\r
- gROOT->LoadMacro("AddTaskJets.C");\r
- AliAnalysisTaskJets *jetanaESD = AddTaskJets("ESD","UA1");\r
- jetanaESD->SetDebugLevel(0);\r
- jetanaESD->SetNonStdBranch("jetsESD"); \r
- } \r
- // Jet analysisMC\r
- if (iJETANMC ){ \r
- gROOT->LoadMacro("AddTaskJets.C");\r
- // AliAnalysisTaskJets *jetanaMC = AddTaskJets("AODMC","UA1",0.4);\r
- AliAnalysisTaskJets *jetanaMC = AddTaskJets("AODMC","UA1",0.4);\r
- jetanaMC->SetDebugLevel(0);\r
- jetanaMC->SetNonStdBranch("jetsMC_UA1");\r
- } \r
- if (iJETANMC2 ){ \r
- gROOT->LoadMacro("AddTaskJets.C");\r
- // AliAnalysisTaskJets *jetanaMC2 = AddTaskJets("AODMC2","UA1",0.4);\r
- AliAnalysisTaskJets *jetanaMC2 = AddTaskJets("AODMC2","UA1",0.4);\r
- jetanaMC2->SetDebugLevel(0);\r
- jetanaMC2->SetNonStdBranch("jetsMC2_UA1");\r
- } \r
- // Dijet analysis\r
- if(iDIJETAN){\r
- gROOT->LoadMacro("AddTaskDiJets.C");\r
- AliAnalysisTaskDiJets *dijetana = AddTaskDiJets();\r
- }\r
- if (iPWG4SPECTRUM) {\r
- gROOT->LoadMacro("AddTaskJetSpectrum2.C");\r
- AliAnalysisTaskJetSpectrum2* pwg4spec = AddTaskJetSpectrum2();\r
- pwg4spec->SetAODInput(kTRUE);\r
- pwg4spec->SetBranchRec("jets");\r
- pwg4spec->SetAnalysisType(0);\r
- pwg4spec->SetDebugLevel(0);\r
- } \r
- if (iPWG4JFSYSTEMATICS) {\r
- gROOT->LoadMacro("AddTaskJFSystematics.C");\r
- AliAnalysisTaskJFSystematics* pwg4jfs = AddTaskJFSystematics("jetsMC","jets");\r
- pwg4jfs->SetAODInput(kTRUE);\r
- pwg4jfs->SetDebugLevel(0);\r
- } \r
- if (iPWG4JETCORRECTION) {\r
- gROOT->LoadMacro("AddTaskJetCorrections.C");\r
- AliAnalysisTaskJetCorrections* pwg4jc = AddTaskJetCorrections();\r
- pwg4jc->SetDebugLevel(11);\r
- } \r
- if (iPWG4THREEJETS) {\r
- gROOT->LoadMacro("AddTaskThreeJets.C");\r
- AliAnalysisTaskThreeJets* pwg4jjj = AddTaskThreeJets();\r
- pwg4jjj->SetDebugLevel(11);\r
- } \r
- if (iPWG4UE) {\r
- gROOT->LoadMacro("AddTaskUE.C");\r
- AliAnalysisTaskUE* ueana = AddTaskUE();\r
- } \r
- if(iPWG4PID){\r
- gROOT->LoadMacro("AddTaskPWG4PidDetEx.C");\r
- AliAnalysisTaskPWG4PidDetEx *taskPid = AddTaskPWG4PidDetEx();\r
- taskPid->SetDebugLevel(0);\r
- }\r
- // Run the analysis\r
- // \r
- if (mgr->InitAnalysis()) {\r
- mgr->PrintStatus();\r
- Printf("Chain with %d entries",chain->GetEntries()); \r
- if(bPROOF)mgr->StartAnalysis("proof",dataset.Data(), nEvents,nOffset);\r
- else mgr->StartAnalysis("local",chain,nEvents);\r
- } \r
-}\r
-TChain *CreateChainFromCollection(const char* xmlfile, const char *treeName="esdTree",Int_t nFiles = 0)\r
-{\r
-// Create a chain from an alien collection. \r
- TAlienCollection * myCollection = TAlienCollection::Open(xmlfile);\r
-\r
- if (!myCollection) {\r
- ::Error("CreateChainSingle", "Cannot create an AliEn collection from %s", xmlfile) ;\r
- return NULL ;\r
- }\r
-\r
- TChain* chain = new TChain(treeName);\r
- myCollection->Reset() ;\r
- Int_t iCount = 0;\r
- while ( myCollection->Next() ){\r
- if(nFiles!=0)iCount++;\r
- if(iCount > nFiles)break;\r
- chain->Add(myCollection->GetTURL("")) ;\r
- Printf("Adding %s",myCollection->GetTURL(""));\r
- }\r
- chain->ls();\r
- return chain;\r
-}\r
-\r
-\r
-void SetupPar(char* pararchivename)\r
-{\r
- //Load par files, create analysis libraries \r
- //For testing, if par file already decompressed and modified \r
- //classes then do not decompress. \r
-\r
- TString cdir(Form("%s", gSystem->WorkingDirectory() )) ;\r
- TString parpar(Form("%s.par", pararchivename)) ;\r
- /*\r
- if ( gSystem->AccessPathName(parpar.Data()) ) {\r
- gSystem->ChangeDirectory(gSystem->Getenv("ALICE_ROOT")) ;\r
- TString processline(Form(".! make %s", parpar.Data())) ;\r
- gROOT->ProcessLine(processline.Data()) ;\r
- gSystem->ChangeDirectory(cdir) ;\r
- processline = Form(".! mv /tmp/%s .", parpar.Data()) ;\r
- gROOT->ProcessLine(processline.Data()) ;\r
- }\r
- */\r
-\r
- if (!gSystem->AccessPathName(pararchivename) ) {\r
- TString processline = Form(".! tar xvzf %s",parpar.Data()) ;\r
- gROOT->ProcessLine(processline.Data());\r
- }\r
-\r
- TString ocwd = gSystem->WorkingDirectory();\r
- gSystem->ChangeDirectory(pararchivename);\r
-\r
- // check for BUILD.sh and execute \r
- if (!gSystem->AccessPathName("PROOF-INF/BUILD.sh")) {\r
- printf("*******************************\n");\r
- printf("*** Building PAR archive ***\n");\r
- cout<<pararchivename<<endl;\r
- printf("*******************************\n");\r
-\r
- if (gSystem->Exec("PROOF-INF/BUILD.sh")) {\r
- Error("runProcess","Cannot Build the PAR Archive! - Abort!");\r
- return -1;\r
- }\r
- }\r
- // check for SETUP.C and execute \r
- if (!gSystem->AccessPathName("PROOF-INF/SETUP.C")) {\r
- printf("*******************************\n");\r
- printf("*** Setup PAR archive ***\n");\r
- cout<<pararchivename<<endl;\r
- printf("*******************************\n");\r
- gROOT->Macro("PROOF-INF/SETUP.C");\r
- }\r
-\r
- gSystem->ChangeDirectory(ocwd.Data());\r
- printf("Current dir: %s\n", ocwd.Data());\r
-}\r
+//______________________________________________________________________________
+void AnalysisTrainCAF(Int_t nEvents = 10000, Int_t nOffset = 0, char *ds = "/PWG4/kleinb/LHC09a1_test500")
+{
+ // Example of running analysis train in CAF. To run in debug mode:
+ // - export ROOTSYS=debug on your local client
+ // - un-comment gProof->ClearPackages()
+ // - un-comment lines with debugging info
+
+
+ Bool_t debug = kTRUE;
+ Bool_t useMC = kTRUE;
+ Bool_t readTR = kFALSE;
+ Bool_t bPROOF = kFALSE;
+ Bool_t bLOCALPAR = kFALSE; // flag that swtiches on loading of local par files insead of loading libs, needed for grid and local testing
+
+
+ Int_t iAODanalysis = 1;
+ Int_t iAODhandler = 1;
+ Int_t iESDfilter = 1; // Only active if iAODanalysis=0
+ Int_t iJETAN = 1;
+ Int_t iJETANESD = 0;
+ Int_t iJETANMC = 0;
+ Int_t iJETANMC2 = 0;
+ Int_t iFASTJET = 1;
+ Int_t iDIJETAN = 0;
+ Int_t iPWG4SPECTRUM = 0;
+ Int_t iPWG4JFSYSTEMATICS = 0;
+ Int_t iPWG4JETCORRECTION = 0;
+ Int_t iPWG4THREEJETS = 0;
+ Int_t iPWG4UE = 0;
+ Int_t iPWG4PID = 0;
+
+ if (iAODanalysis) {
+ useMC = kFALSE;
+ readTR = kFALSE;
+ iESDfilter = 0;
+ }
+ if (iJETAN) iESDfilter=1;
+ if (iESDfilter) iAODhandler=1;
+
+ // Dataset from CAF
+ TString dataset(ds);
+ TChain *chain = 0;
+ // CKB quick hack for local analysis
+ gROOT->LoadMacro("CreateESDChain.C");
+ TChain *chain = CreateChain("aodTree",ds,1);
+ // TChain *chain = CreateChain("esdTree",ds,100);
+ // chain = new TChain("aodTree");
+ // chain->Add("/Users/kleinb/bigdisk/1/LHC09a3/001/AliAOD.root");
+
+
+ printf("==================================================================\n");
+ printf("=========== RUNNING ANALYSIS TRAIN IN CAF MODE =============\n");
+ printf("==================================================================\n");
+ if (iAODanalysis) printf("= AOD analysis on dataset: %s\n", dataset.Data());
+ else printf("= ESD analysis on dataset: %s\n", dataset.Data());
+ if (iESDfilter) printf("= ESD filter =\n");
+ if (iJETAN) printf("= Jet analysis from AOD =\n");
+ if (iJETANESD) printf("= Jet analysis from ESD =\n");
+ if (iJETANMC) printf("= Jet analysis from Kinematics =\n");
+ if (iJETANMC2) printf("= Jet analysis 2 from Kinematics =\n");
+ if (iFASTJET) printf("= Loading FastJet =\n");
+ if (iDIJETAN) printf("= DiJet analysis =\n");
+ if (iPWG4SPECTRUM)printf("= PWG4 Jet spectrum analysis =\n");
+ if (iPWG4JFSYSTEMATICS)printf("= PWG4 Jet Finder systematics =\n");
+ if (iPWG4JETCORRECTION)printf("= PWG4 Jet Correction =\n");
+ if (iPWG4THREEJETS)printf("= PWG4 Three Jets =\n");
+
+ if (iPWG4UE) printf("= PWG4 UE =\n");
+ printf("==================================================================\n");
+ if (useMC) printf(":: use MC TRUE\n");
+ else printf(":: use MC FALSE\n");
+ if (readTR) printf(":: read TR TRUE\n");
+ else printf(":: read TR FALSE\n");
+ if (debug) printf(":: debugging TRUE\n");
+ else printf(":: debugging FALSE\n");
+
+ // Load common libraries
+ gSystem->Load("libTree.so");
+ gSystem->Load("libGeom.so");
+ gSystem->Load("libVMC.so");
+ gSystem->Load("libPhysics.so");
+ if(iFASTJET){
+ gSystem->Load("libCGAL.so");
+ gSystem->Load("libfastjet.so");
+ gSystem->Load("libsiscone.so");
+ gSystem->Load("libSISConePlugin.so");
+ }
+
+
+ // Reset user processes if CAF if not responding anymore
+ // TProof::Reset("alicecaf");
+ // One may enable a different ROOT version on CAF
+
+ // const char* proofNode = "localhost";
+ const char* proofNode = "alicecaf";
+
+ // Connect to proof
+ if(bPROOF){
+ TProof::Mgr(proofNode)->ShowROOTVersions();
+ // TProof::Mgr(proofNode)->SetROOTVersion("v5-21-01-alice_dbg");
+ TProof::Open(proofNode);
+
+ // Clear packages if changing ROOT version on CAF or local
+ gProof->ClearPackages();
+ // Enable proof debugging if needed
+ // gProof->SetLogLevel(5);
+ // To debug the train in PROOF mode, type in a root session:
+ // root[0] TProof::Mgr("lxb6064")->GetSessionLogs()->Display("*",0,10000);
+ // Common packages
+ // --- Enable the STEERBase Package
+ gProof->UploadPackage("STEERBase.par");
+ gProof->EnablePackage("STEERBase");
+ // --- Enable the ESD Package
+ gProof->UploadPackage("ESD.par");
+ gProof->EnablePackage("ESD");
+ // --- Enable the AOD Package
+ gProof->UploadPackage("AOD.par");
+ gProof->EnablePackage("AOD");
+ // --- Enable the ANALYSIS Package
+ gProof->UploadPackage("ANALYSIS.par");
+ gProof->EnablePackage("ANALYSIS");
+ // --- Enable the ANALYSISalice Package
+ gProof->UploadPackage("ANALYSISalice.par");
+ gProof->EnablePackage("ANALYSISalice");
+
+
+ // --- Enable the JETAN Package
+ if (iJETAN||iJETANESD||iJETANMC||iJETANMC2) {
+ gProof->UploadPackage("JETAN.par");
+ gProof->EnablePackage("JETAN");
+ if(iFASTJET){
+ gProof->UploadPackage("FASTJETAN.par");
+ gProof->EnablePackage("FASTJETAN");
+ }
+ }
+ // --- Enable particle correlation analysis
+ if (iPWG4UE||iPWG4SPECTRUM||iPWG4JFSYSTEMATICS||iPWG4JETCORRECTION||iPWG4THREEJETS) {
+ gProof->UploadPackage("JETAN.par");
+ gProof->EnablePackage("JETAN");
+ gProof->UploadPackage("PWG4JetTasks.par");
+ gProof->EnablePackage("PWG4JetTasks");
+ }
+
+ }
+ else{
+
+ //
+ // We are local or on grid
+ // access remote files in lcoal case as well so open alien connection
+
+ /*
+ printf("*** Connect to AliEn ***\n");
+ TGrid::Connect("alien://");
+
+ chain = CreateChainFromCollection("wn.xml","esdTree",2);
+ */
+
+ if(bLOCALPAR){
+ SetupPar("STEERBase");
+ SetupPar("ESD");
+ SetupPar("AOD");
+ SetupPar("ANALYSIS");
+ SetupPar("ANALYSISalice");
+ if (iJETAN||iJETANESD||iJETANMC||iJETANMC2){
+ SetupPar("JETAN");
+ if(iFASTJET) SetupPar("FASTJETAN");
+ }
+ if (iPWG4UE||iPWG4SPECTRUM||iPWG4JFSYSTEMATICS){
+ SetupPar("JETAN");
+ SetupPar("PWG4JetTasks");
+ }
+ }
+ else{
+ Printf("Loading Local libs");
+ gSystem->Load("libSTEERBase");
+ gSystem->Load("libESD");
+ gSystem->Load("libAOD");
+ gSystem->Load("libANALYSIS");
+ gSystem->Load("libANALYSISalice");
+ // --- Enable the JETAN Package
+ if (iJETAN||iJETANESD||iJETANMC||iJETANMC2){
+ gSystem->Load("libJETAN");
+ if(iFASTJET)gSystem->Load("libFASTJETAN");
+ }
+ // --- Enable particle correlation analysis
+ if (iPWG4UE||iPWG4SPECTRUM||iPWG4JFSYSTEMATICS||iPWG4THREEJETS){
+ gSystem->Load("libJETAN");
+ gSystem->Load("libPWG4JetTasks");
+ }
+ }
+
+ }
+
+
+ // Make the analysis manager
+ AliAnalysisManager *mgr = new AliAnalysisManager("Analysis Train", "A test setup for the analysis train");
+ if (iAODanalysis) {
+ // AOD input handler
+ AliAODInputHandler *aodH = new AliAODInputHandler();
+ mgr->SetInputEventHandler(aodH);
+ } else {
+ // ESD input handler
+ AliESDInputHandler *esdHandler = new AliESDInputHandler();
+ mgr->SetInputEventHandler(esdHandler);
+// esdHandler->SetInactiveBranches("FMD CaloCluster");
+ }
+ // Monte Carlo handler
+ if (useMC && !iAODanalysis) {
+ AliMCEventHandler* mcHandler = new AliMCEventHandler();
+ mgr->SetMCtruthEventHandler(mcHandler);
+ mcHandler->SetReadTR(readTR);
+ }
+ // Top container for input
+ AliAnalysisDataContainer *cinput = 0;
+
+ cinput = mgr->GetCommonInputContainer();
+
+ // This container is managed by the AOD handler
+ AliAnalysisDataContainer *cout_aod = 0;
+ if (iAODhandler) {
+ // AOD output handler
+ AliAODHandler* aodHandler = new AliAODHandler();
+ // aodHandler->SetFillAOD(kFALSE);
+ mgr->SetOutputEventHandler(aodHandler);
+ aodHandler->SetOutputFileName(Form("AliAODs_pwg4_%07d-%07d.root",nOffset,nOffset+nEvents));
+ cout_aod = mgr->GetCommonOutputContainer();
+ cout_aod->SetSpecialOutput();
+ }
+
+ // Debugging if needed
+ if (debug) mgr->SetDebugLevel(10);
+ // AliLog::EnableDebug(kTRUE);
+ AliLog::SetGlobalLogLevel(1);
+
+
+ if (iESDfilter && !iAODanalysis) {
+ gSystem->Load("libCORRFW.so");
+ gSystem->Load("libPWGmuon.so");
+
+ gROOT->LoadMacro(Form("%s/ANALYSIS/macros/AddTaskESDFilter.C",gSystem->ExpandPathName("${ALICE_ROOT}")));
+ // gROOT->LoadMacro("AddTaskESDfilter.C");
+ AliAnalysisTaskESDfilter *esdfilter = AddTaskESDFilter();
+ Printf("esdFilter %p",esdfilter);
+ }
+ // Jet analysis from the AOD
+ if (iJETAN) {
+ gROOT->LoadMacro("AddTaskJets.C");
+ // AliAnalysisTaskJets *jetanaAOD = AddTaskJets("AOD","UA1",0.4);
+ // AliAnalysisTaskJets *jetanaAOD = AddTaskJets("AOD","UA1",0.4);
+ // jetanaAOD->SetNonStdBranch("jetsAOD_UA1");
+ AliAnalysisTaskJets *jetanaAOD = AddTaskJets();
+ Int_t i = AddTaskJetsDelta();
+ }
+ // JETANALYSIS from the ESD
+ if (iJETANESD && !iAODanalysis) {
+ gROOT->LoadMacro("AddTaskJets.C");
+ AliAnalysisTaskJets *jetanaESD = AddTaskJets("ESD","UA1");
+ jetanaESD->SetDebugLevel(0);
+ jetanaESD->SetNonStdBranch("jetsESD");
+ }
+ // Jet analysisMC
+ if (iJETANMC ){
+ gROOT->LoadMacro("AddTaskJets.C");
+ // AliAnalysisTaskJets *jetanaMC = AddTaskJets("AODMC","UA1",0.4);
+ AliAnalysisTaskJets *jetanaMC = AddTaskJets("AODMC","UA1",0.4);
+ jetanaMC->SetDebugLevel(0);
+ jetanaMC->SetNonStdBranch("jetsMC_UA1");
+ }
+ if (iJETANMC2 ){
+ gROOT->LoadMacro("AddTaskJets.C");
+ // AliAnalysisTaskJets *jetanaMC2 = AddTaskJets("AODMC2","UA1",0.4);
+ AliAnalysisTaskJets *jetanaMC2 = AddTaskJets("AODMC2","UA1",0.4);
+ jetanaMC2->SetDebugLevel(0);
+ jetanaMC2->SetNonStdBranch("jetsMC2_UA1");
+ }
+ // Dijet analysis
+ if(iDIJETAN){
+ gROOT->LoadMacro("AddTaskDiJets.C");
+ AliAnalysisTaskDiJets *dijetana = AddTaskDiJets();
+ }
+ if (iPWG4SPECTRUM) {
+ gROOT->LoadMacro("AddTaskJetSpectrum2.C");
+ AliAnalysisTaskJetSpectrum2* pwg4spec = AddTaskJetSpectrum2();
+ pwg4spec->SetAODInput(kTRUE);
+ pwg4spec->SetBranchRec("jets");
+ pwg4spec->SetAnalysisType(0);
+ pwg4spec->SetDebugLevel(0);
+ }
+ if (iPWG4JFSYSTEMATICS) {
+ gROOT->LoadMacro("AddTaskJFSystematics.C");
+ AliAnalysisTaskJFSystematics* pwg4jfs = AddTaskJFSystematics("jetsMC","jets");
+ pwg4jfs->SetAODInput(kTRUE);
+ pwg4jfs->SetDebugLevel(0);
+ }
+ if (iPWG4JETCORRECTION) {
+ gROOT->LoadMacro("AddTaskJetCorrections.C");
+ AliAnalysisTaskJetCorrections* pwg4jc = AddTaskJetCorrections();
+ pwg4jc->SetDebugLevel(11);
+ }
+ if (iPWG4THREEJETS) {
+ gROOT->LoadMacro("AddTaskThreeJets.C");
+ AliAnalysisTaskThreeJets* pwg4jjj = AddTaskThreeJets();
+ pwg4jjj->SetDebugLevel(11);
+ }
+ if (iPWG4UE) {
+ gROOT->LoadMacro("AddTaskUE.C");
+ AliAnalysisTaskUE* ueana = AddTaskUE();
+ }
+ if(iPWG4PID){
+ gROOT->LoadMacro("AddTaskPWG4PidDetEx.C");
+ AliAnalysisTaskPWG4PidDetEx *taskPid = AddTaskPWG4PidDetEx();
+ taskPid->SetDebugLevel(0);
+ }
+ // Run the analysis
+ //
+ if (mgr->InitAnalysis()) {
+ mgr->PrintStatus();
+ Printf("Chain with %d entries",chain->GetEntries());
+ if(bPROOF)mgr->StartAnalysis("proof",dataset.Data(), nEvents,nOffset);
+ else mgr->StartAnalysis("local",chain,nEvents);
+ }
+}
+TChain *CreateChainFromCollection(const char* xmlfile, const char *treeName="esdTree",Int_t nFiles = 0)
+{
+// Create a chain from an alien collection.
+ TAlienCollection * myCollection = TAlienCollection::Open(xmlfile);
+
+ if (!myCollection) {
+ ::Error("CreateChainSingle", "Cannot create an AliEn collection from %s", xmlfile) ;
+ return NULL ;
+ }
+
+ TChain* chain = new TChain(treeName);
+ myCollection->Reset() ;
+ Int_t iCount = 0;
+ while ( myCollection->Next() ){
+ if(nFiles!=0)iCount++;
+ if(iCount > nFiles)break;
+ chain->Add(myCollection->GetTURL("")) ;
+ Printf("Adding %s",myCollection->GetTURL(""));
+ }
+ chain->ls();
+ return chain;
+}
+
+
+void SetupPar(char* pararchivename)
+{
+ //Load par files, create analysis libraries
+ //For testing, if par file already decompressed and modified
+ //classes then do not decompress.
+
+ TString cdir(Form("%s", gSystem->WorkingDirectory() )) ;
+ TString parpar(Form("%s.par", pararchivename)) ;
+ /*
+ if ( gSystem->AccessPathName(parpar.Data()) ) {
+ gSystem->ChangeDirectory(gSystem->Getenv("ALICE_ROOT")) ;
+ TString processline(Form(".! make %s", parpar.Data())) ;
+ gROOT->ProcessLine(processline.Data()) ;
+ gSystem->ChangeDirectory(cdir) ;
+ processline = Form(".! mv /tmp/%s .", parpar.Data()) ;
+ gROOT->ProcessLine(processline.Data()) ;
+ }
+ */
+
+ if (!gSystem->AccessPathName(pararchivename) ) {
+ TString processline = Form(".! tar xvzf %s",parpar.Data()) ;
+ gROOT->ProcessLine(processline.Data());
+ }
+
+ TString ocwd = gSystem->WorkingDirectory();
+ gSystem->ChangeDirectory(pararchivename);
+
+ // check for BUILD.sh and execute
+ if (!gSystem->AccessPathName("PROOF-INF/BUILD.sh")) {
+ printf("*******************************\n");
+ printf("*** Building PAR archive ***\n");
+ cout<<pararchivename<<endl;
+ printf("*******************************\n");
+
+ if (gSystem->Exec("PROOF-INF/BUILD.sh")) {
+ Error("runProcess","Cannot Build the PAR Archive! - Abort!");
+ return -1;
+ }
+ }
+ // check for SETUP.C and execute
+ if (!gSystem->AccessPathName("PROOF-INF/SETUP.C")) {
+ printf("*******************************\n");
+ printf("*** Setup PAR archive ***\n");
+ cout<<pararchivename<<endl;
+ printf("*******************************\n");
+ gROOT->Macro("PROOF-INF/SETUP.C");
+ }
+
+ gSystem->ChangeDirectory(ocwd.Data());
+ printf("Current dir: %s\n", ocwd.Data());
+}