]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - PWG0/multPbPb/run.C
Added a temptative task for monitors
[u/mrichter/AliRoot.git] / PWG0 / multPbPb / run.C
index 21795a499518f2752494d7d665379ba90a87960b..34c8a81820549d3feb744b2d1bf7a8f94be8e35a 100644 (file)
@@ -9,7 +9,9 @@ TList * listToLoad = new TList();
 
 TChain * GetAnalysisChain(const char * incollection);
 
-void run(Char_t* data, Long64_t nev = -1, Long64_t offset = 0, Bool_t debug = kFALSE, Int_t runMode = 0, Bool_t isMC = 0, Int_t centrBin = 0, const char * centrEstimator = "VOM", const char* option = "",TString customSuffix = "", Int_t workers = -1)
+void run(Char_t* data, Long64_t nev = -1, Long64_t offset = 0, Bool_t debug = kFALSE, Int_t runMode = 0, Bool_t isMC = 0, 
+        Int_t centrBin = 0, const char * centrEstimator = "VOM", Int_t useOtherCentralityCut = 0, Int_t trackMin=0, Int_t trackMax=10000, 
+        const char* option = "",TString customSuffix = "", Int_t workers = -1, Bool_t useSingleBin=kTRUE)
 {
   // runMode:
   //
@@ -27,7 +29,7 @@ void run(Char_t* data, Long64_t nev = -1, Long64_t offset = 0, Bool_t debug = kF
   // Add ESD handler
   AliESDInputHandler* esdH = new AliESDInputHandler;
   // Do I need any of this? 
-  //  esdH->SetInactiveBranches("AliESDACORDE FMD ALIESDTZERO ALIESDZDC AliRawDataErrorLogs CaloClusters Cascades EMCALCells EMCALTrigger ESDfriend Kinks AliESDTZERO ALIESDACORDE MuonTracks TrdTracks");
+  esdH->SetInactiveBranches("AliESDACORDE FMD ALIESDTZERO ALIESDZDC AliRawDataErrorLogs CaloClusters Cascades EMCALCells EMCALTrigger ESDfriend Kinks AliESDTZERO ALIESDACORDE MuonTracks TrdTracks");
   mgr->SetInputEventHandler(esdH);
 
   if(isMC) {
@@ -54,34 +56,47 @@ void run(Char_t* data, Long64_t nev = -1, Long64_t offset = 0, Bool_t debug = kF
   // physics selection
   gROOT->ProcessLine(".L $ALICE_ROOT/ANALYSIS/macros/AddTaskPhysicsSelection.C");
   physicsSelectionTask = AddTaskPhysicsSelection(isMC);
-  // FIXME!!
-  if(!isMC) {
-    AliPhysicsSelection * physSel = physicsSelectionTask->GetPhysicsSelection();
-    //    physSel->AddCollisionTriggerClass("+CTRUE-B-NOPF-ALL");
-    physSel->AddCollisionTriggerClass("+C0SM1-B-NOPF-ALL");
-    physSel->AddBGTriggerClass       ("+C0SM1-A-NOPF-ALL");
-    physSel->AddBGTriggerClass       ("+C0SM1-C-NOPF-ALL");
-    physSel->AddBGTriggerClass       ("+C0SM1-E-NOPF-ALL");
-  }
 
   // Centrality
   AliCentralitySelectionTask *taskCentr = new AliCentralitySelectionTask("CentralitySelection");
   const char * file1 = "$ALICE_ROOT/ANALYSIS/macros/test_AliCentralityBy1D.root";
   const char * file2 = "$ALICE_ROOT/ANALYSIS/macros/test_AliCentralityByFunction.root";
-  taskCentr->SetPercentileFile (file1);
-  taskCentr->SetPercentileFile2(file2);
-  mgr->AddTask(taskCentr);
-  mgr->ConnectInput (taskCentr,0, mgr->GetCommonInputContainer());
+  // const char * file1 = "$ALICE_ROOT/ANALYSIS/macros/AliCentralityBy1D_LHC10g2a_100.root";
+  // const char * file2 = "$ALICE_ROOT/ANALYSIS/macros/AliCentralityByFunction_LHC10g2a_100.root";
+  // const char * file1 = "$ALICE_ROOT/ANALYSIS/macros/AliCentralityBy1D_137161_GLAU.root";
+  // const char * file2 = "$ALICE_ROOT/ANALYSIS/macros/test_AliCentralityByFunction.root";
+  
+  // taskCentr->SetPercentileFile (file1);
+  // taskCentr->SetPercentileFile2(file2);
+  //FIXME: include back centrality estimator
+  //  mgr->AddTask(taskCentr);
+  //  mgr->ConnectInput (taskCentr,0, mgr->GetCommonInputContainer());
 
   // Create my own centrality selector
   AliAnalysisMultPbCentralitySelector * centrSelector = new AliAnalysisMultPbCentralitySelector();
+  centrSelector->SetIsMC(isMC);
   centrSelector->SetCentrTaskFiles(file1,file2); // for bookkeping only
   centrSelector->SetCentralityBin(centrBin);
+  if (!useSingleBin) centrSelector->SetCentralityBin(0); // FIXME: ok?
   centrSelector->SetCentralityEstimator(centrEstimator);
-  // FIXME!!!
-  // centrSelector->SetUseMultRange();
-  // centrSelector->SetIsMC(isMC,1000,2000);
-  //  centrSelector->SetMultRange(10,20);
+
+  
+  if(useOtherCentralityCut == 1){
+    cout << "Setting centrality by MULT" << endl;
+    centrSelector->SetUseMultRange();
+    centrSelector->SetMultRange(trackMin,trackMax);
+  }
+  if(useOtherCentralityCut == 2){
+    cout << "Setting centrality by V0" << endl;
+    
+    centrSelector->SetUseV0Range();
+    centrSelector->SetMultRange(trackMin,trackMax);
+  }
+  if(useOtherCentralityCut == 3){
+    cout << "Setting centrality by SPD outer" << endl;    
+    centrSelector->SetUseSPDOuterRange();
+    centrSelector->SetMultRange(trackMin,trackMax);
+  }
 
   // Parse option strings
   TString optionStr(option);
@@ -91,54 +106,85 @@ void run(Char_t* data, Long64_t nev = -1, Long64_t offset = 0, Bool_t debug = kF
   Bool_t doSave = kFALSE;
   TString optionStr(option);
   if (optionStr.Contains("SAVE"))
-  {
-    optionStr = optionStr(0,optionStr.Index("SAVE")) + optionStr(optionStr.Index("SAVE")+4, optionStr.Length());
-    doSave = kTRUE;
-  }
+    {
+      optionStr = optionStr(0,optionStr.Index("SAVE")) + optionStr(optionStr.Index("SAVE")+4, optionStr.Length());
+      doSave = kTRUE;
+    }
 
-  AliESDtrackCuts * cuts = AliESDtrackCuts::GetStandardITSTPCTrackCuts2010(kTRUE);
+  AliESDtrackCuts * cuts = AliESDtrackCuts::GetStandardITSTPCTrackCuts2010(kFALSE);  
   TString pathsuffix = "";
-  // cuts->SetPtRange(0.15,0.2);// FIXME pt cut
-  // const char * pathsuffix = "_pt_015_020_nofakes";
+
+  if(!useSingleBin) pathsuffix += "_AllCentr";
+
+  if (optionStr.Contains("DCA")) {
+    delete cuts;
+    //    cuts = AliESDtrackCuts::GetStandardITSPureSATrackCuts2009();
+    cout << ">>>> USING DCA cut" << endl;
+    cuts = AliESDtrackCuts::GetStandardITSTPCTrackCuts2010(kFALSE);  
+    pathsuffix+="_DCAcut";
+  }
 
   if (optionStr.Contains("ITSsa")) {
     delete cuts;
     cuts = AliESDtrackCuts::GetStandardITSPureSATrackCuts2009();
     cout << ">>>> USING ITS sa tracks" << endl;
-    pathsuffix="ITSsa";
+    pathsuffix+="_ITSsa";
   }
 
   if (optionStr.Contains("TPC")) {
     delete cuts;
     cuts = AliESDtrackCuts::GetStandardTPCOnlyTrackCuts();
     cout << ">>>> USING TPC only tracks" << endl;
-    pathsuffix="TPC";
+    pathsuffix+="_TPC";
   }
 
   Bool_t useMCKinematics = isMC;
   if (optionStr.Contains("NOMCKIN")) {
     cout << ">>>> Ignoring MC kinematics" << endl;
     useMCKinematics=kFALSE;
+    pathsuffix+="_NOMCKIN";
   }
   
+  AliLog::SetClassDebugLevel("AliESDtrackCuts", AliLog::kDebug);// FIXME
+  cuts->DefineHistograms();
   
   // load my task
-  gROOT->ProcessLine(".L $ALICE_ROOT/PWG0/multPbPb/AddTaskMultPbPbTracks.C");
-  AliAnalysisTaskMultPbTracks * task = AddTaskMultPbPbTracks("multPbPbtracks.root", cuts, centrSelector); // kTRUE enables DCA cut
-  task->SetIsMC(useMCKinematics);
-  if (isMC) {
+  if (useSingleBin) {
+    gROOT->ProcessLine(".L $ALICE_ROOT/PWG0/multPbPb/AddTaskMultPbPbTracks.C");
+    AliAnalysisTaskMultPbTracks * task = AddTaskMultPbPbTracks("multPbPbtracks.root", cuts, centrSelector); 
+    task->SetIsMC(useMCKinematics);
     task->SetOfflineTrigger(AliVEvent::kMB);
+    if(optionStr.Contains("TPC")) task->SetTPCOnly();
+    if(useMCKinematics) task->GetHistoManager()->SetSuffix("MC");
+    if(customSuffix!=""){
+      cout << "Setting custom suffix: " << customSuffix << endl;    
+      task->GetHistoManager()->SetSuffix(customSuffix);
+    }
   } else {
-    task->SetOfflineTrigger(AliVEvent::kUserDefined);
-  }
-  if(useMCKinematics) task->GetHistoManager()->SetSuffix("MC");
-  if(customSuffix!=""){
-    cout << "Setting custom suffix: " << customSuffix << endl;    
-    task->GetHistoManager()->SetSuffix(customSuffix);
+    gROOT->ProcessLine(".L $ALICE_ROOT/PWG0/multPbPb/AddTaskMultPbPbTracksAllCentrality.C");
+    centrSelector->SetUseV0Range(kTRUE);
+    Int_t ncentr = 11;
+   
+    const Float_t minCentr[] = {0 ,79 ,239,559 ,1165,2135,3555,5525,8213 ,12191,15079};
+    const Float_t maxCentr[] = {79,239,559,1165,2135,3555,5525,8213,12191,15079,21000};
+    AliAnalysisTaskMultPbTracks ** tasks = AddTaskMultPbPbTracksAllCentrality("multPbPbtracks.root", cuts, centrSelector, ncentr,minCentr,maxCentr); 
+    for(Int_t icentr = 0; icentr < ncentr; icentr++){
+      tasks[icentr]->Print();
+      cout << "MC KINEMATICS:" << useMCKinematics << endl;
+      
+      tasks[icentr]->SetIsMC(useMCKinematics);
+      tasks[icentr]->SetOfflineTrigger(AliVEvent::kMB);
+      if(optionStr.Contains("TPC")) tasks[icentr]->SetTPCOnly();
+      if(useMCKinematics) tasks[icentr]->GetHistoManager()->SetSuffix("MC");
+      if(customSuffix!=""){
+       cout << "Setting custom suffix: " << customSuffix+long(icentr) << endl;    
+       tasks[icentr]->GetHistoManager()->SetSuffix(customSuffix+long(icentr));
+      }        
+    }    
   }
-  
+  // Init and run the analy
   if (!mgr->InitAnalysis()) return;
-       
+
   mgr->PrintStatus();
   
   if (runMode == kMyRunModeLocal ) {
@@ -155,9 +201,23 @@ void run(Char_t* data, Long64_t nev = -1, Long64_t offset = 0, Bool_t debug = kF
     cout << "ERROR: unknown run mode" << endl;        
   }
 
-  pathsuffix = pathsuffix + "_" + centrEstimator + "_bin_"+long(centrBin);
+  if (!useOtherCentralityCut) {
+    pathsuffix = pathsuffix + "_" + centrEstimator + "_bin_"+long(centrBin);
+  } else if(useOtherCentralityCut==1){
+    pathsuffix = pathsuffix + "_TrackRange_" + long(trackMin) + "_" + long(trackMax);
+  } else if(useOtherCentralityCut==2){
+    pathsuffix = pathsuffix + "_V0Range_" + long(trackMin) + "_" + long(trackMax);
+  } else if(useOtherCentralityCut==3){
+    pathsuffix = pathsuffix + "_SPDOutRange_" + long(trackMin) + "_" + long(trackMax);
+  }
+  pathsuffix += customSuffix;
+
   if (doSave) MoveOutput(data, pathsuffix.Data());
 
+  // FIXME
+  TFile * f = new TFile("cuts.root", "recreate");
+  cuts->SaveHistograms();
+  f->Close();
   
 }
 
@@ -170,6 +230,12 @@ void MoveOutput(const char * data, const char * suffix = ""){
   TString fileName = "multPbPbtracks.root";
   gSystem->mkdir(path, kTRUE);
   gSystem->Rename(fileName, path + "/" + fileName);
+  for(Int_t ibin = 0; ibin < 20; ibin++){
+    TString fileBin = fileName;
+    fileBin.ReplaceAll(".root",Form("_%2.2d.root",ibin));
+    gSystem->Rename(fileBin, path + "/" + fileBin);    
+  }
+  
   gSystem->Rename("event_stat.root", path + "/event_stat.root");      
   Printf(">>>>> Moved files to %s", path.Data());
 }  
@@ -219,57 +285,75 @@ void InitAndLoadLibs(Int_t runMode=kMyRunModeLocal, Int_t workers=0,Bool_t debug
 
 
   if (runMode == kMyRunModeCAF)
-  {
-    cout << "Init in CAF mode" << endl;
-    
-    gEnv->SetValue("XSec.GSI.DelegProxy", "2");
-    TProof::Open("alice-caf.cern.ch", workers>0 ? Form("workers=%d",workers) : "");
+    {
+      cout << "Init in CAF mode" << endl;
     
-    // Enable the needed package
-    gProof->UploadPackage("$ALICE_ROOT/STEERBase");
-    gProof->EnablePackage("$ALICE_ROOT/STEERBase");
-    gProof->UploadPackage("$ALICE_ROOT/ESD");
-    gProof->EnablePackage("$ALICE_ROOT/ESD");
-    gProof->UploadPackage("$ALICE_ROOT/AOD");
-    gProof->EnablePackage("$ALICE_ROOT/AOD");
-    gProof->UploadPackage("$ALICE_ROOT/ANALYSIS");
-    gProof->EnablePackage("$ALICE_ROOT/ANALYSIS");
-    gProof->UploadPackage("$ALICE_ROOT/ANALYSISalice");
-    gProof->EnablePackage("$ALICE_ROOT/ANALYSISalice");
-    gProof->UploadPackage("$ALICE_ROOT/PWG0base");
-    gProof->EnablePackage("$ALICE_ROOT/PWG0base");
-    gROOT->ProcessLine(gSystem->ExpandPathName(".include $ALICE_ROOT/PWG0/multPb"));
-    gROOT->ProcessLine(gSystem->ExpandPathName(".include $ALICE_ROOT/PWG1/background"));
-  }
+      //gEnv->SetValue("XSec.GSI.DelegProxy", "2");
+      TProof * p = TProof::Open("alice-caf.cern.ch", workers>0 ? Form("workers=%d",workers) : "");
+      //      TProof * p = TProof::Open("skaf.saske.sk", workers>0 ? Form("workers=%d",workers) : "");    
+      p->Exec("TObject *o = gEnv->GetTable()->FindObject(\"Proof.UseMergers\"); gEnv->GetTable()->Remove(o);", kTRUE);
+
+      // gProof->EnablePackage("VO_ALICE@AliRoot::v4-21-17b-AN");
+      // gSystem->Load("libCore.so");  
+      // gSystem->Load("libTree.so");
+      // gSystem->Load("libGeom.so");
+      // gSystem->Load("libVMC.so");
+      // gSystem->Load("libPhysics.so");
+      // gSystem->Load("libSTEERBase");
+      // gSystem->Load("libESD");
+      // gSystem->Load("libAOD");
+      // gSystem->Load("libANALYSIS");
+      // gSystem->Load("libOADB");
+      // gSystem->Load("libANALYSISalice");   
+
+      // Enable the needed package
+      gProof->UploadPackage("$ALICE_ROOT/obj/STEERBase");
+      gProof->EnablePackage("$ALICE_ROOT/obj/STEERBase");
+      gProof->UploadPackage("$ALICE_ROOT/obj/ESD");
+      gProof->EnablePackage("$ALICE_ROOT/obj/ESD");
+      gProof->UploadPackage("$ALICE_ROOT/obj/AOD");
+      gProof->EnablePackage("$ALICE_ROOT/obj/AOD");
+      gProof->UploadPackage("$ALICE_ROOT/obj/ANALYSIS");
+      gProof->EnablePackage("$ALICE_ROOT/obj/ANALYSIS");
+      gProof->UploadPackage("$ALICE_ROOT/obj/OADB");
+      gProof->EnablePackage("$ALICE_ROOT/obj/OADB");
+      gProof->UploadPackage("$ALICE_ROOT/obj/ANALYSISalice");
+      gProof->EnablePackage("$ALICE_ROOT/obj/ANALYSISalice");
+      gProof->UploadPackage("$ALICE_ROOT/obj/PWG0base");
+      gProof->EnablePackage("$ALICE_ROOT/obj/PWG0base");
+      gROOT->ProcessLine(gSystem->ExpandPathName(".include $ALICE_ROOT/PWG0/multPb"));
+      gROOT->ProcessLine(gSystem->ExpandPathName(".include $ALICE_ROOT/PWG1/background"));
+    }
   else
-  {
-    cout << "Init in Local or Grid mode" << endl;
-    gSystem->Load("libCore.so");  
-    gSystem->Load("libTree.so");
-    gSystem->Load("libGeom.so");
-    gSystem->Load("libVMC.so");
-    gSystem->Load("libPhysics.so");
-    gSystem->Load("libSTEERBase");
-    gSystem->Load("libESD");
-    gSystem->Load("libAOD");
-    gSystem->Load("libANALYSIS");
-    gSystem->Load("libANALYSISalice");   
-  // Use AliRoot includes to compile our task
-    gROOT->ProcessLine(".include $ALICE_ROOT/include");
-
-    // gSystem->Load("libVMC");
-    // gSystem->Load("libTree");
-    // gSystem->Load("libSTEERBase");
-    // gSystem->Load("libESD");
-    // gSystem->Load("libAOD");
-    // gSystem->Load("libANALYSIS");
-    // gSystem->Load("libANALYSISalice");
-    // gSystem->Load("libPWG0base");
+    {
+      cout << "Init in Local or Grid mode" << endl;
+      gSystem->Load("libCore.so");  
+      gSystem->Load("libTree.so");
+      gSystem->Load("libGeom.so");
+      gSystem->Load("libVMC.so");
+      gSystem->Load("libPhysics.so");
+      gSystem->Load("libSTEERBase");
+      gSystem->Load("libESD");
+      gSystem->Load("libAOD");
+      gSystem->Load("libANALYSIS");
+      gSystem->Load("libOADB");
+      gSystem->Load("libANALYSISalice");   
+      // Use AliRoot includes to compile our task
+      gROOT->ProcessLine(".include $ALICE_ROOT/include");
+
+      // gSystem->Load("libVMC");
+      // gSystem->Load("libTree");
+      // gSystem->Load("libSTEERBase");
+      // gSystem->Load("libESD");
+      // gSystem->Load("libAOD");
+      // gSystem->Load("libANALYSIS");
+      // gSystem->Load("libANALYSISalice");
+      // gSystem->Load("libPWG0base");
     
-    gROOT->ProcessLine(gSystem->ExpandPathName(".include $ALICE_ROOT/PWG0/multPb"));
-    gROOT->ProcessLine(gSystem->ExpandPathName(".include $ALICE_ROOT/PWG1/background"));
-    //    gROOT->ProcessLine(gSystem->ExpandPathName(".include $ALICE_ROOT/PWG1/background/"));
-  }
+      gROOT->ProcessLine(gSystem->ExpandPathName(".include $ALICE_ROOT/PWG0/multPb"));
+      gROOT->ProcessLine(gSystem->ExpandPathName(".include $ALICE_ROOT/PWG1/background"));
+      //    gROOT->ProcessLine(gSystem->ExpandPathName(".include $ALICE_ROOT/PWG1/background/"));
+    }
   // Load helper classes
   TIterator * iter = listToLoad->MakeIterator();
   TObjString * name = 0;