end-of-line normalization
[u/mrichter/AliRoot.git] / PWGCF / EBYE / macros / runBalanceFunctionMC.C
index 0b6e5c5..9728dea 100644 (file)
-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/ANALYSIS/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.so");        
+  gSystem->Load("libGeom.so");
+  gSystem->Load("libVMC.so");
+  gSystem->Load("libPhysics.so");
+  gSystem->Load("libTree.so");
+
+  //----------------------------------------------------------
+  // >>>>>>>>>>> Local mode <<<<<<<<<<<<<< 
+  //----------------------------------------------------------
+  if (mode==mLocal || mode==mGrid || mode == mGridPAR) {
+    //--------------------------------------------------------
+    // If you want to use already compiled libraries 
+    // in the aliroot distribution
+    //--------------------------------------------------------
+    gSystem->Load("libSTEERBase.so");
+    gSystem->Load("libESD.so");
+    gSystem->Load("libAOD.so");
+    gSystem->Load("libANALYSIS.so");
+    gSystem->Load("libANALYSISalice.so");
+    gSystem->Load("libEventMixing.so");
+    gSystem->Load("libPWGCFebye.so");
+    // 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) 
+