]> 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 d96dacf6a3959deb87a3fc771a350926b4de1455..34c8a81820549d3feb744b2d1bf7a8f94be8e35a 100644 (file)
@@ -11,7 +11,7 @@ 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", Int_t useOtherCentralityCut = 0, Int_t trackMin=0, Int_t trackMax=10000, 
-        const char* option = "",TString customSuffix = "", Int_t workers = -1)
+        const char* option = "",TString customSuffix = "", Int_t workers = -1, Bool_t useSingleBin=kTRUE)
 {
   // runMode:
   //
@@ -55,25 +55,7 @@ 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,0);//FIXME
-  // FIXME!!
-  // if(!isMC) {
-  //   AliPhysicsSelection * physSel = physicsSelectionTask->GetPhysicsSelection();
-  //   //    physSel->AddCollisionTriggerClass("+CTRUE-B-NOPF-ALL");
-  //   physSel->AddCollisionTriggerClass("+CMBAC-B-NOPF-ALL");
-  //   physSel->AddCollisionTriggerClass("+CMBS1C-B-NOPF-ALL");
-  //   physSel->AddCollisionTriggerClass("+CMBS1A-B-NOPF-ALL");
-  //   physSel->AddBGTriggerClass("+CMBAC-C-NOPF-ALL");
-  //   physSel->AddBGTriggerClass("+CMBS1C-C-NOPF-ALL");
-  //   physSel->AddBGTriggerClass("+CMBS1A-C-NOPF-ALL");
-  //   physSel->AddBGTriggerClass("+CMBAC-A-NOPF-ALL");
-  //   physSel->AddBGTriggerClass("+CMBS1C-A-NOPF-ALL");
-  //   physSel->AddBGTriggerClass("+CMBS1A-A-NOPF-ALL");
-  //   physSel->AddBGTriggerClass("+CMBAC-E-NOPF-ALL");
-  //   physSel->AddBGTriggerClass("+CMBS1C-E-NOPF-ALL");
-  //   physSel->AddBGTriggerClass("+CMBS1A-E-NOPF-ALL");
-  //   //    physSel->AddBGTriggerClass       ("+C0SM1-E-NOPF-ALL");
-  // }
+  physicsSelectionTask = AddTaskPhysicsSelection(isMC);
 
   // Centrality
   AliCentralitySelectionTask *taskCentr = new AliCentralitySelectionTask("CentralitySelection");
@@ -84,33 +66,37 @@ void run(Char_t* data, Long64_t nev = -1, Long64_t offset = 0, Bool_t debug = kF
   // 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
+  // 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->SetIsMC(isMC,1500,2300);
-  cout << "SETTING" << endl;
   
   if(useOtherCentralityCut == 1){
-    cout << "SETTING MULT" << endl;
+    cout << "Setting centrality by MULT" << endl;
     centrSelector->SetUseMultRange();
     centrSelector->SetMultRange(trackMin,trackMax);
   }
   if(useOtherCentralityCut == 2){
-    cout << "SETTING V0" << endl;
+    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);
@@ -120,55 +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);
-  task->SetOfflineTrigger(AliVEvent::kMB);
-  // if (isMC) {
-  //   task->SetOfflineTrigger(AliVEvent::kMB);
-  // } else {
-  //   task->SetOfflineTrigger(AliVEvent::kUserDefined);
-  // }
-  if(useMCKinematics) task->GetHistoManager()->SetSuffix("MC");
-  if(customSuffix!=""){
-    cout << "Setting custom suffix: " << customSuffix << endl;    
-    task->GetHistoManager()->SetSuffix(customSuffix);
+  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 {
+    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));
+      }        
+    }    
   }
-  //  task->SelectCollisionCandidates(AliVEvent::kUserDefined);
+  // Init and run the analy
   if (!mgr->InitAnalysis()) return;
-  
+
   mgr->PrintStatus();
   
   if (runMode == kMyRunModeLocal ) {
@@ -191,11 +207,17 @@ void run(Char_t* data, Long64_t nev = -1, Long64_t offset = 0, Bool_t debug = kF
     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();
   
 }
 
@@ -208,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());
 }  
@@ -257,58 +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) : "");
-    //    TProof::Open("skaf.saske.sk", 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;