-enum analysisModes {mLocal,mLocalPAR,mPROOF,mGrid,mGridPAR};\r
-enum analysisTypes {mESD,mAOD,mMC,mMCESD};\r
-\r
-//\r
-class AliAnalysisGrid;\r
-class AliAnalysisTaskBF;\r
-class AliBalance;\r
-\r
-//Centrality stuff\r
-Int_t binfirst = 0; //where do we start numbering bins\r
-Int_t binlast = 8; //where do we stop numbering bins\r
-const Int_t numberOfCentralityBins = 9;\r
-Float_t centralityArray[numberOfCentralityBins+1] = {0.,5.,10.,20.,30.,40.,50.,60.,70.,80.}; // in centrality percentile\r
-Float_t impactParameterArray[numberOfCentralityBins+1] = {0.0,3.79,5.30,7.41,9.04,10.40,11.61,12.68,13.67,14.63}; // in fm (impact parametger taken from the MC header)\r
-\r
-//Acceptance parameterization\r
-Bool_t kUseAcceptance = kTRUE;\r
-const char *acceptanceFilename = "efficiencyALICE.root";\r
-TF1 *fParameterization[numberOfCentralityBins];\r
-\r
-//Analyze a particle\r
-Int_t gPdgCode = -1;\r
-\r
-//________________________________________________________________________//\r
-void runBalanceFunctionMC(Int_t mode = mLocal, \r
- Int_t type = mMC,\r
- Bool_t DATA = kFALSE) {\r
- // Time:\r
- TStopwatch timer;\r
- timer.Start();\r
- \r
- //Check analysis mode\r
- if((mode < 0) || (mode > 4)) {\r
- Printf("Analysis mode not recognized!");\r
- Printf("You can select out of 0: local, 1: local with par files, 2: proof, 3: grid, 4: grid with par files");\r
- return;\r
- }\r
- \r
- //Check analysis type\r
- if((type < 0) || (type > 3)) {\r
- Printf("Analysis type not recognized!");\r
- Printf("You can select out of 0: ESD, 1: AOD, 2: MC (stack), 3: MC (from the ESD)");\r
- return;\r
- }\r
- \r
- // Load needed libraries:\r
- LoadLibraries(mode);\r
- \r
-\r
- // Create and configure the AliEn plug-in:\r
- if(mode == mGrid || mode == mGridPAR) {\r
- gROOT->LoadMacro("CreateAlienHandler.C");\r
- AliAnalysisGrid *alienHandler = CreateAlienHandler(runListFileName); \r
- if (!alienHandler) return;\r
- }\r
- // Chains: \r
- if(mode == mLocal || mode == mLocalPAR) {\r
- TChain* chain = 0x0;\r
- if((type == mESD)||(type == mMCESD)) \r
- chain = new TChain("esdTree");\r
- else if(type == mAOD)\r
- chain = new TChain("aodTree");\r
- else if(type == mMC)\r
- chain = new TChain("TE");\r
-\r
- TString filename = "galice.root";\r
- chain->Add(filename.Data());\r
- }\r
-\r
- //Proof\r
- if(mode == mPROOF) {\r
- gROOT->ProcessLine(Form(".include %s/include", gSystem->ExpandPathName("$ALICE_ROOT")));\r
- }\r
- \r
- // analysis manager\r
- AliAnalysisManager* mgr = new AliAnalysisManager("balanceFunctionManager");\r
- if(mode == mGrid || mode == mGridPAR)\r
- mgr->SetGridHandler(alienHandler);\r
- \r
- // input handler (ESD or AOD)\r
- AliVEventHandler* inputH = NULL;\r
- if((type == mESD)||(type == mMCESD)||(type == mMC)) \r
- inputH = new AliESDInputHandler();\r
- else if(type == mAOD)\r
- inputH = new AliAODInputHandler();\r
- mgr->SetInputEventHandler(inputH);\r
- \r
- // mc event handler\r
- if((type == mMC) || (type == mMCESD)) {\r
- AliMCEventHandler* mchandler = new AliMCEventHandler();\r
- // Not reading track references\r
- mchandler->SetReadTR(kFALSE);\r
- mgr->SetMCtruthEventHandler(mchandler);\r
- } \r
-\r
- if(mAOD){\r
- gROOT->LoadMacro("$ALICE_ROOT/ANALYSIS/macros/AddTaskCentrality.C");\r
- AliCentralitySelectionTask *taskCentrality = AddTaskCentrality();\r
-\r
- // Add physics selection task (NOT needed for AODs)\r
- gROOT->LoadMacro("$ALICE_ROOT/ANALYSIS/macros/AddTaskPhysicsSelection.C");\r
- AliPhysicsSelectionTask* physSelTask = AddTaskPhysicsSelection(DATA);\r
- }\r
-\r
- //Setup the parameterization\r
- if(kUseAcceptance) {\r
- TFile *gParamFile = TFile::Open(acceptanceFilename);\r
- if((!gParamFile) || (!gParamFile->IsOpen())) {\r
- Printf("File %s not found!!!",acceptanceFilename);\r
- return;\r
- }\r
-\r
- TString gParamName;\r
- for(Int_t iCentrality = 0; iCentrality < numberOfCentralityBins; iCentrality++) {\r
- gParamName = "gParamCentrality"; gParamName += iCentrality;\r
- fParameterization[iCentrality] = dynamic_cast<TF1 *>(gParamFile->Get(gParamName.Data()));\r
- }\r
- }\r
-\r
- //Add the BF task (all centralities)\r
- gROOT->LoadMacro("AddTaskBalanceMCCentralityTrain.C"); \r
- for (Int_t i=binfirst; i<binlast+1; i++) {\r
- Float_t lowCentralityBinEdge = centralityArray[i];\r
- Float_t highCentralityBinEdge = centralityArray[i+1];\r
- Printf("\nWagon for centrality bin %i: %.0f-%.0f",i,lowCentralityBinEdge,highCentralityBinEdge);\r
- AddTaskBalanceMCCentralityTrain(lowCentralityBinEdge,\r
- highCentralityBinEdge,\r
- impactParameterArray[i],\r
- impactParameterArray[i+1],\r
- kTRUE,\r
- 10.,0.3,1.5,-0.8,0.8,\r
- fParameterization[i],\r
- gPdgCode);\r
- }\r
-\r
- // enable debug printouts\r
- mgr->SetDebugLevel(2);\r
- mgr->SetUseProgressBar(1,100);\r
- if (!mgr->InitAnalysis()) return;\r
- mgr->PrintStatus();\r
- \r
- // start analysis\r
- if(mode == mLocal || mode == mLocalPAR) \r
- mgr->StartAnalysis("local",chain);\r
- else if(mode == mPROOF) \r
- mgr->StartAnalysis("proof",dataDir,nRuns,offset);\r
- else if(mode == mGrid || mode == mGridPAR) \r
- mgr->StartAnalysis("grid");\r
- \r
- // Print real and CPU time used for analysis: \r
- timer.Stop();\r
- timer.Print();\r
-}\r
-\r
-//=============================================================//\r
-void LoadLibraries(const analysisModes mode) { \r
- //--------------------------------------\r
- // Load the needed libraries most of them already loaded by aliroot\r
- //--------------------------------------\r
- gSystem->Load("libCore.so"); \r
- gSystem->Load("libGeom.so");\r
- gSystem->Load("libVMC.so");\r
- gSystem->Load("libPhysics.so");\r
- gSystem->Load("libTree.so");\r
-\r
- //----------------------------------------------------------\r
- // >>>>>>>>>>> Local mode <<<<<<<<<<<<<< \r
- //----------------------------------------------------------\r
- if (mode==mLocal || mode==mGrid || mode == mGridPAR) {\r
- //--------------------------------------------------------\r
- // If you want to use already compiled libraries \r
- // in the aliroot distribution\r
- //--------------------------------------------------------\r
- gSystem->Load("libSTEERBase.so");\r
- gSystem->Load("libESD.so");\r
- gSystem->Load("libAOD.so");\r
- gSystem->Load("libANALYSIS.so");\r
- gSystem->Load("libANALYSISalice.so");\r
- gSystem->Load("libEventMixing.so");\r
- gSystem->Load("libPWGCFebye.so");\r
- // Use AliRoot includes to compile our task\r
- gROOT->ProcessLine(".include $ALICE_ROOT/include");\r
- }\r
- \r
- else if (mode == mLocalPAR) {\r
- //--------------------------------------------------------\r
- //If you want to use root and par files from aliroot\r
- //-------------------------------------------------------- \r
- SetupPar("STEERBase");\r
- SetupPar("ESD");\r
- SetupPar("AOD");\r
- SetupPar("ANALYSIS");\r
- SetupPar("ANALYSISalice");\r
- SetupPar("PWGCFebye");\r
-}\r
- \r
- //---------------------------------------------------------\r
- // <<<<<<<<<< PROOF mode >>>>>>>>>>>>\r
- //---------------------------------------------------------\r
- else if (mode==mPROOF) {\r
- // Connect to proof\r
- printf("*** Connect to PROOF ***\n");\r
- gEnv->SetValue("XSec.GSI.DelegProxy","2");\r
- // Put appropriate username here\r
- TProof::Open("alice-caf.cern.ch");\r
- //TProof::Open("skaf.saske.sk");\r
- //TProof::Open("prf000-iep-grid.saske.sk");\r
-\r
- gProof->EnablePackage("VO_ALICE@AliRoot::v4-21-12-AN");\r
- } \r
- \r
-} // end of void LoadLibraries(const anaModes mode)\r
-\r
-//======================================================================//\r
-void SetupPar(char* pararchivename) {\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
- 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
- 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
- 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
-} // end of void SetupPar(char* pararchivename) \r
-\r
+enum analysisModes {mLocal,mLocalPAR,mPROOF,mGrid,mGridPAR};
+enum analysisTypes {mESD,mAOD,mMC,mMCESD};
+
+//
+class AliAnalysisGrid;
+class AliAnalysisTaskBF;
+class AliBalance;
+
+//Centrality stuff
+Int_t binfirst = 0; //where do we start numbering bins
+Int_t binlast = 8; //where do we stop numbering bins
+const Int_t numberOfCentralityBins = 9;
+Float_t centralityArray[numberOfCentralityBins+1] = {0.,5.,10.,20.,30.,40.,50.,60.,70.,80.}; // in centrality percentile
+Float_t impactParameterArray[numberOfCentralityBins+1] = {0.0,3.79,5.30,7.41,9.04,10.40,11.61,12.68,13.67,14.63}; // in fm (impact parametger taken from the MC header)
+
+//Acceptance parameterization
+Bool_t kUseAcceptance = kTRUE;
+const char *acceptanceFilename = "efficiencyALICE.root";
+TF1 *fParameterization[numberOfCentralityBins];
+
+//Analyze a particle
+Int_t gPdgCode = -1;
+
+//________________________________________________________________________//
+void runBalanceFunctionMC(Int_t mode = mLocal,
+ Int_t type = mMC,
+ Bool_t DATA = kFALSE) {
+ // Time:
+ TStopwatch timer;
+ timer.Start();
+
+ //Check analysis mode
+ if((mode < 0) || (mode > 4)) {
+ Printf("Analysis mode not recognized!");
+ Printf("You can select out of 0: local, 1: local with par files, 2: proof, 3: grid, 4: grid with par files");
+ return;
+ }
+
+ //Check analysis type
+ if((type < 0) || (type > 3)) {
+ Printf("Analysis type not recognized!");
+ Printf("You can select out of 0: ESD, 1: AOD, 2: MC (stack), 3: MC (from the ESD)");
+ return;
+ }
+
+ // Load needed libraries:
+ LoadLibraries(mode);
+
+
+ // Create and configure the AliEn plug-in:
+ if(mode == mGrid || mode == mGridPAR) {
+ gROOT->LoadMacro("CreateAlienHandler.C");
+ AliAnalysisGrid *alienHandler = CreateAlienHandler(runListFileName);
+ if (!alienHandler) return;
+ }
+ // Chains:
+ if(mode == mLocal || mode == mLocalPAR) {
+ TChain* chain = 0x0;
+ if((type == mESD)||(type == mMCESD))
+ chain = new TChain("esdTree");
+ else if(type == mAOD)
+ chain = new TChain("aodTree");
+ else if(type == mMC)
+ chain = new TChain("TE");
+
+ TString filename = "galice.root";
+ chain->Add(filename.Data());
+ }
+
+ //Proof
+ if(mode == mPROOF) {
+ gROOT->ProcessLine(Form(".include %s/include", gSystem->ExpandPathName("$ALICE_ROOT")));
+ }
+
+ // analysis manager
+ AliAnalysisManager* mgr = new AliAnalysisManager("balanceFunctionManager");
+ if(mode == mGrid || mode == mGridPAR)
+ mgr->SetGridHandler(alienHandler);
+
+ // input handler (ESD or AOD)
+ AliVEventHandler* inputH = NULL;
+ if((type == mESD)||(type == mMCESD)||(type == mMC))
+ inputH = new AliESDInputHandler();
+ else if(type == mAOD)
+ inputH = new AliAODInputHandler();
+ mgr->SetInputEventHandler(inputH);
+
+ // mc event handler
+ if((type == mMC) || (type == mMCESD)) {
+ AliMCEventHandler* mchandler = new AliMCEventHandler();
+ // Not reading track references
+ mchandler->SetReadTR(kFALSE);
+ mgr->SetMCtruthEventHandler(mchandler);
+ }
+
+ if(mAOD){
+ gROOT->LoadMacro("$ALICE_ROOT/OADB/macros/AddTaskCentrality.C");
+ AliCentralitySelectionTask *taskCentrality = AddTaskCentrality();
+
+ // Add physics selection task (NOT needed for AODs)
+ gROOT->LoadMacro("$ALICE_ROOT/ANALYSIS/macros/AddTaskPhysicsSelection.C");
+ AliPhysicsSelectionTask* physSelTask = AddTaskPhysicsSelection(DATA);
+ }
+
+ //Setup the parameterization
+ if(kUseAcceptance) {
+ TFile *gParamFile = TFile::Open(acceptanceFilename);
+ if((!gParamFile) || (!gParamFile->IsOpen())) {
+ Printf("File %s not found!!!",acceptanceFilename);
+ return;
+ }
+
+ TString gParamName;
+ for(Int_t iCentrality = 0; iCentrality < numberOfCentralityBins; iCentrality++) {
+ gParamName = "gParamCentrality"; gParamName += iCentrality;
+ fParameterization[iCentrality] = dynamic_cast<TF1 *>(gParamFile->Get(gParamName.Data()));
+ }
+ }
+
+ //Add the BF task (all centralities)
+ gROOT->LoadMacro("AddTaskBalanceMCCentralityTrain.C");
+ for (Int_t i=binfirst; i<binlast+1; i++) {
+ Float_t lowCentralityBinEdge = centralityArray[i];
+ Float_t highCentralityBinEdge = centralityArray[i+1];
+ Printf("\nWagon for centrality bin %i: %.0f-%.0f",i,lowCentralityBinEdge,highCentralityBinEdge);
+ AddTaskBalanceMCCentralityTrain(lowCentralityBinEdge,
+ highCentralityBinEdge,
+ impactParameterArray[i],
+ impactParameterArray[i+1],
+ kTRUE,
+ 10.,0.3,1.5,-0.8,0.8,
+ fParameterization[i],
+ gPdgCode);
+ }
+
+ // enable debug printouts
+ mgr->SetDebugLevel(2);
+ mgr->SetUseProgressBar(1,100);
+ if (!mgr->InitAnalysis()) return;
+ mgr->PrintStatus();
+
+ // start analysis
+ if(mode == mLocal || mode == mLocalPAR)
+ mgr->StartAnalysis("local",chain);
+ else if(mode == mPROOF)
+ mgr->StartAnalysis("proof",dataDir,nRuns,offset);
+ else if(mode == mGrid || mode == mGridPAR)
+ mgr->StartAnalysis("grid");
+
+ // Print real and CPU time used for analysis:
+ timer.Stop();
+ timer.Print();
+}
+
+//=============================================================//
+void LoadLibraries(const analysisModes mode) {
+ //--------------------------------------
+ // Load the needed libraries most of them already loaded by aliroot
+ //--------------------------------------
+ gSystem->Load("libCore");
+ gSystem->Load("libGeom");
+ gSystem->Load("libVMC");
+ gSystem->Load("libPhysics");
+ gSystem->Load("libTree");
+
+ //----------------------------------------------------------
+ // >>>>>>>>>>> Local mode <<<<<<<<<<<<<<
+ //----------------------------------------------------------
+ if (mode==mLocal || mode==mGrid || mode == mGridPAR) {
+ //--------------------------------------------------------
+ // If you want to use already compiled libraries
+ // in the aliroot distribution
+ //--------------------------------------------------------
+ gSystem->Load("libSTEERBase");
+ gSystem->Load("libESD");
+ gSystem->Load("libAOD");
+ gSystem->Load("libANALYSIS");
+ gSystem->Load("libANALYSISalice");
+ gSystem->Load("libEventMixing");
+ gSystem->Load("libPWGCFebye");
+ // Use AliRoot includes to compile our task
+ gROOT->ProcessLine(".include $ALICE_ROOT/include");
+ }
+
+ else if (mode == mLocalPAR) {
+ //--------------------------------------------------------
+ //If you want to use root and par files from aliroot
+ //--------------------------------------------------------
+ SetupPar("STEERBase");
+ SetupPar("ESD");
+ SetupPar("AOD");
+ SetupPar("ANALYSIS");
+ SetupPar("ANALYSISalice");
+ SetupPar("PWGCFebye");
+}
+
+ //---------------------------------------------------------
+ // <<<<<<<<<< PROOF mode >>>>>>>>>>>>
+ //---------------------------------------------------------
+ else if (mode==mPROOF) {
+ // Connect to proof
+ printf("*** Connect to PROOF ***\n");
+ gEnv->SetValue("XSec.GSI.DelegProxy","2");
+ // Put appropriate username here
+ TProof::Open("alice-caf.cern.ch");
+ //TProof::Open("skaf.saske.sk");
+ //TProof::Open("prf000-iep-grid.saske.sk");
+
+ gProof->EnablePackage("VO_ALICE@AliRoot::v4-21-12-AN");
+ }
+
+} // end of void LoadLibraries(const anaModes mode)
+
+//======================================================================//
+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());
+
+} // end of void SetupPar(char* pararchivename)
+