]> git.uio.no Git - u/mrichter/AliRoot.git/commitdiff
Implemented usage of AliESDCentrality classes
authormfloris <mfloris@f7af4fe6-9843-0410-8265-dc069ae4e863>
Mon, 1 Nov 2010 15:51:12 +0000 (15:51 +0000)
committermfloris <mfloris@f7af4fe6-9843-0410-8265-dc069ae4e863>
Mon, 1 Nov 2010 15:51:12 +0000 (15:51 +0000)
PWG0/multPbPb/AliAnalysisMultPbTrackHistoManager.cxx
PWG0/multPbPb/AliAnalysisTaskMultPbTracks.cxx
PWG0/multPbPb/AliAnalysisTaskMultPbTracks.h
PWG0/multPbPb/run.C
PWG0/multPbPb/run.sh

index a8b7d8bd6e96722f8f38924f83fc27b91fc1f1eb..dda337c45723231543ecc7c25806a7d9fcf58512 100644 (file)
@@ -238,7 +238,7 @@ TH1D * AliAnalysisMultPbTrackHistoManager::BookHistoDCA(const char * name, const
   AliInfo(Form("Booking %s",hname.Data()));
   
 
-  TH1D * h = new TH1D (hname,title, 100,0,50);
+  TH1D * h = new TH1D (hname,title, 200,0,200);
 
   h->SetXTitle("#Delta DCA");
   h->Sumw2();
index bd33b8e235cbeac92a6ee364c1c027b74027c8a6..a4789601f88fca9cfca798181459fefe1a0f51f0 100644 (file)
 #include "AliAnalysisMultPbTrackHistoManager.h"
 #include "AliAnalysisManager.h"
 #include "AliESDtrackCuts.h"
-#include "AliAnalysisMultPbCentralitySelector.h"
 #include "AliMCEvent.h"
 #include "AliStack.h"
 #include "TH1I.h"
 #include "TH3D.h"
 #include "AliMCParticle.h"
 #include "AliGenEventHeader.h"
+#include "AliESDCentrality.h"
 
 #include <iostream>
 
@@ -25,13 +25,13 @@ using namespace std;
 ClassImp(AliAnalysisTaskMultPbTracks)
 
 AliAnalysisTaskMultPbTracks::AliAnalysisTaskMultPbTracks()
-: AliAnalysisTaskSE("TaskMultPbTracks"),fESD(0),fHistoManager(0),fCentrSelector(0),fTrackCuts(0),fTrackCutsNoDCA(0),fIsMC(0)
+: AliAnalysisTaskSE("TaskMultPbTracks"),
+  fESD(0),fHistoManager(0),fCentrBin(0),fCentralityEstimator(0),fTrackCuts(0),fTrackCutsNoDCA(0),fIsMC(0)
 {
   // constructor
 
   DefineOutput(1, AliAnalysisMultPbTrackHistoManager::Class());
-  DefineOutput(2, AliAnalysisMultPbCentralitySelector::Class());
-  DefineOutput(3, AliESDtrackCuts::Class());
+  DefineOutput(2, AliESDtrackCuts::Class());
   //  DefineOutput(2, TH1I::Class());
 
   fHistoManager = new AliAnalysisMultPbTrackHistoManager("histoManager","Hitograms, Multiplicity, Track analysis");
@@ -39,15 +39,15 @@ AliAnalysisTaskMultPbTracks::AliAnalysisTaskMultPbTracks()
 
 }
 AliAnalysisTaskMultPbTracks::AliAnalysisTaskMultPbTracks(const char * name)
-  : AliAnalysisTaskSE(name),fESD(0),fHistoManager(0),fCentrSelector(0),fTrackCuts(0),fTrackCutsNoDCA(0),fIsMC(0)
+  : AliAnalysisTaskSE(name),
+    fESD(0),fHistoManager(0),fCentrBin(0),fCentralityEstimator(0),fTrackCuts(0),fTrackCutsNoDCA(0),fIsMC(0)
 {
   //
   // Standard constructur which should be used
   //
 
   DefineOutput(1, AliAnalysisMultPbTrackHistoManager::Class());
-  DefineOutput(2, AliAnalysisMultPbCentralitySelector::Class());
-  DefineOutput(3, AliESDtrackCuts::Class());
+  DefineOutput(2, AliESDtrackCuts::Class());
 
   fHistoManager = new AliAnalysisMultPbTrackHistoManager("histoManager","Hitograms, Multiplicity, Track analysis");
   if(fIsMC) fHistoManager->SetSuffix("MC");
@@ -55,12 +55,13 @@ AliAnalysisTaskMultPbTracks::AliAnalysisTaskMultPbTracks(const char * name)
 }
 
 AliAnalysisTaskMultPbTracks::AliAnalysisTaskMultPbTracks(const AliAnalysisTaskMultPbTracks& obj) : 
-  AliAnalysisTaskSE(obj) ,fESD (0), fHistoManager(0), fCentrSelector(0), fTrackCuts(0),fTrackCutsNoDCA(0),fIsMC(0)
+  AliAnalysisTaskSE(obj) ,fESD (0), fHistoManager(0), fCentrBin(0), fCentralityEstimator(0),fTrackCuts(0),fTrackCutsNoDCA(0),fIsMC(0)
 {
   //copy ctor
   fESD = obj.fESD ;
   fHistoManager= obj.fHistoManager;
-  fCentrSelector = obj.fCentrSelector;
+  fCentrBin = obj.fCentrBin;
+  fCentralityEstimator = obj.fCentralityEstimator;
   fTrackCuts  = obj.fTrackCuts;
   fTrackCutsNoDCA  = obj.fTrackCutsNoDCA;
 
@@ -100,11 +101,11 @@ void AliAnalysisTaskMultPbTracks::UserExec(Option_t *)
 
   /* PostData(0) is taken care of by AliAnalysisTaskSE */
   PostData(1,fHistoManager);
-  PostData(2,fCentrSelector);
-  PostData(3,fTrackCuts);
+  PostData(2,fTrackCuts);
 
-  TH3D * hTracks[AliAnalysisMultPbTrackHistoManager::kNHistos];
-  TH1D * hDCA   [AliAnalysisMultPbTrackHistoManager::kNHistos];
+  // Cache histogram pointers
+  static TH3D * hTracks[AliAnalysisMultPbTrackHistoManager::kNHistos];
+  static TH1D * hDCA   [AliAnalysisMultPbTrackHistoManager::kNHistos];
   hTracks[AliAnalysisMultPbTrackHistoManager::kHistoGen]        = fHistoManager->GetHistoPtEtaVz(AliAnalysisMultPbTrackHistoManager::kHistoGen       );
   hTracks[AliAnalysisMultPbTrackHistoManager::kHistoRec]        = fHistoManager->GetHistoPtEtaVz(AliAnalysisMultPbTrackHistoManager::kHistoRec       );
   hTracks[AliAnalysisMultPbTrackHistoManager::kHistoRecPrim]    = fHistoManager->GetHistoPtEtaVz(AliAnalysisMultPbTrackHistoManager::kHistoRecPrim   );
@@ -128,8 +129,17 @@ void AliAnalysisTaskMultPbTracks::UserExec(Option_t *)
   // FIXME: use physics selection here to keep track of events lost?
   fHistoManager->GetHistoStats()->Fill(AliAnalysisMultPbTrackHistoManager::kStatAll);
 
-  Bool_t isCentralitySelected = fCentrSelector->IsSelected(fESD);  
-  if(!isCentralitySelected) return;
+  // Centrality selection
+  AliESDCentrality *centrality = fESD->GetCentrality();
+  if(!centrality) {
+    AliError("Centrality object not available"); // FIXME AliFatal here after debug
+  }
+  else {
+    Int_t centrBin = centrality->GetCentralityClass5(fCentralityEstimator.Data()) ;
+    cout << fCentralityEstimator.Data() << " BIN: " << centrBin << endl;
+    
+    if (centrBin != fCentrBin) return;
+  }
 
   fHistoManager->GetHistoStats()->Fill(AliAnalysisMultPbTrackHistoManager::kStatCentr);
 
@@ -149,9 +159,16 @@ void AliAnalysisTaskMultPbTracks::UserExec(Option_t *)
        // We don't care about neutrals and non-physical primaries
        if(mcPart->Charge() == 0) continue;
 
-       // FIXME: add kTransportBit
+       // FIXME: add kTransportBit (uncomment below)
        if(!fMCEvent->Stack()->IsPhysicalPrimary(ipart)) continue;
-       
+
+       //check if current particle is a physical primary
+       // Bool_t physprim=fMCEvent->IsPhysicalPrimary(label);
+       // if (!physprim) continue;
+       // if (!track) return kFALSE;
+       // Bool_t transported = mcPart->Particle()->TestBit(kTransportBit);
+       // if(!transported) return kFALSE;
        // Get MC vertex
        //FIXME: which vertex do I take for MC?
        TArrayF   vertex;
@@ -232,6 +249,7 @@ void AliAnalysisTaskMultPbTracks::UserExec(Option_t *)
       }
       else {
        if(fMCEvent->Stack()->IsPhysicalPrimary(label)) {
+         // FIXME add kTransportBit
          if(accepted)
            hTracks[AliAnalysisMultPbTrackHistoManager::kHistoRecPrim]->Fill(esdTrack->Pt(),esdTrack->Eta(),vtxESD->GetZ());
          if(acceptedNoDCA)
index 7f8a39e22cecea57218f037eb0906f1c851c142d..8999008032ef5a211c3baa3226f2d75c3bc5ef37 100644 (file)
@@ -30,7 +30,8 @@ public:
   AliAnalysisTaskMultPbTracks(const AliAnalysisTaskMultPbTracks& obj) ;
   ~AliAnalysisTaskMultPbTracks();
   void SetTrackCuts(AliESDtrackCuts * cuts) { fTrackCuts = cuts;}
-  void SetCentralitySelector(AliAnalysisMultPbCentralitySelector * centr) { fCentrSelector=centr;}
+  void SetCentralityBin(Int_t bin = 0) { fCentrBin = bin; }
+  void SetCentralityEstimator(const char * centr) { fCentralityEstimator = centr; }
 
   void SetIsMC(Bool_t flag=kTRUE) { fIsMC = flag;}
   AliAnalysisMultPbTrackHistoManager * GetHistoManager() { return fHistoManager;}
@@ -47,7 +48,8 @@ private:
   AliESDEvent *  fESD;    //! ESD object  AliVEvent*     fEvent;
   //  TList * fListHisto;     // list of output object
   AliAnalysisMultPbTrackHistoManager  * fHistoManager; // wrapper for the list, takes care of merging + histo booking and getters
-  AliAnalysisMultPbCentralitySelector * fCentrSelector; // centrality selector
+  Int_t fCentrBin; // centrality bin selected (5% XS percentiles)
+  TString fCentralityEstimator; // Name of the centrality estimator, for AliESDCentrality
   AliESDtrackCuts * fTrackCuts; // track cuts
   AliESDtrackCuts * fTrackCutsNoDCA; // copy of the previous one, but with no DCA cuts
   
index b1a86725ce54d9bf9035700fa3643f8aeb60971f..7bcb04c7c8f0cdc387138ed7a2872421a6fd278f 100644 (file)
@@ -1,12 +1,12 @@
 // TODO:
 // 1. Check cuts for 2010 (Jochen?)
-
+// 2. Run with many centrality bins at once
 
 enum { kMyRunModeLocal = 0, kMyRunModeCAF};
 
 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, const char* option = "",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", const char* option = "",Int_t workers = -1)
 {
   // runMode:
   //
@@ -24,7 +24,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) {
@@ -36,6 +36,12 @@ void run(Char_t* data, Long64_t nev = -1, Long64_t offset = 0, Bool_t debug = kF
   gROOT->ProcessLine(".L $ALICE_ROOT/ANALYSIS/macros/AddTaskPhysicsSelection.C");
   physicsSelectionTask = AddTaskPhysicsSelection(isMC);
 
+  // Centrality
+  AliCentralitySelectionTask *taskCentr = new AliCentralitySelectionTask("CentralitySelection");
+  taskCentr->SetPercentileFile("$ALICE_ROOT/ANALYSIS/macros/test_AliCentralityBy1D.root");
+  taskCentr->SetPercentileFile2("$ALICE_ROOT/ANALYSIS/test_AliCentralityByFunction.root");
+  mgr->AddTask(taskCentr);
+  mgr->ConnectInput (taskCentr,0, mgr->GetCommonInputContainer());
 
 
   // Parse option strings
@@ -69,13 +75,20 @@ void run(Char_t* data, Long64_t nev = -1, Long64_t offset = 0, Bool_t debug = kF
     cout << ">>>> USING TPC only tracks" << endl;
     pathsuffix="TPC";
   }
+
+  Bool_t useMCKinematics = isMC;
+  if (optionStr.Contains("NOMCKIN")) {
+    cout << ">>>> Ignoring MC kinematics" << endl;
+    useMCKinematics=kFALSE;
+  }
   
   
   // load my task
   gROOT->ProcessLine(".L $ALICE_ROOT/PWG0/multPbPb/AddTaskMultPbPbTracks.C");
   AliAnalysisTaskMultPbTracks * task = AddTaskMultPbPbTracks("multPbPbtracks.root", cuts); // kTRUE enables DCA cut
-  task->SetIsMC(isMC);
-   if(isMC) task->GetHistoManager()->SetSuffix("MC");
+  task->SetIsMC(useMCKinematics);
+  task->SetCentralityBin(centrBin);
+  task->SetCentralityEstimator(centrEstimator);
   
   if (!mgr->InitAnalysis()) return;
        
@@ -83,6 +96,7 @@ void run(Char_t* data, Long64_t nev = -1, Long64_t offset = 0, Bool_t debug = kF
   
   if (runMode == kMyRunModeLocal ) {
     // If running in local mode, create chain of ESD files
+    cout << "RUNNING LOCAL, CHAIN" << endl;    
     TChain * chain = GetAnalysisChain(data);
     chain->Print();
     mgr->StartAnalysis("local",chain,nev);
@@ -180,25 +194,26 @@ void InitAndLoadLibs(Int_t runMode=kMyRunModeLocal, Int_t workers=0,Bool_t debug
     gSystem->Load("libPWG0base");
     
     gROOT->ProcessLine(gSystem->ExpandPathName(".include $ALICE_ROOT/PWG0"));
+    //    gROOT->ProcessLine(gSystem->ExpandPathName(".include $ALICE_ROOT/PWG1/background/"));
   }
   // Load helper classes
   // TODO: replace this by a list of TOBJStrings
   TString taskName("AliAnalysisTaskMultPbTracks.cxx+");
   TString histoManName("AliAnalysisMultPbTrackHistoManager.cxx+");
-  TString centrName("AliAnalysisMultPbCentralitySelector.cxx+");
   TString listName("AliHistoListWrapper.cxx+");
 
   // Create, add task
   if (runMode == kMyRunModeCAF) {
     gProof->Load(listName+(debug?"+g":""));   
     gProof->Load(histoManName+(debug?"+g":""));
-    gProof->Load(centrName+(debug?"+g":""));   
     gProof->Load(taskName+(debug?"+g":""));
+    gProof->Load("$ALICE_ROOT/ANALYSIS/AliCentralitySelectionTask.cxx++g");      
   } else {
     gROOT->LoadMacro(listName+(debug?"+g":""));   
     gROOT->LoadMacro(histoManName+(debug?"+g":""));
-    gROOT->LoadMacro(centrName+(debug?"+g":""));   
     gROOT->LoadMacro(taskName+(debug?"+g":""));    
+    gROOT->LoadMacro("$ALICE_ROOT/ANALYSIS/AliCentralitySelectionTask.cxx++g");
+
   }
 
 
index caf14e569b886fbb2cd2c256c207c7b3dc02d052..a7a3e50c8ff3bd1425b028cdb7720e2aa749f3b4 100755 (executable)
@@ -8,11 +8,13 @@ nev=-1
 offset=0
 debug=kFALSE
 runmode=1
-dataset=/PWG3/zampolli/run000104867_90_92_pass4
+dataset=/alice/sim/LHC10f8a_130844
 ropt="-l"
 option="SAVE"
 workers=26
 analysismode=9; #SPD + field on
+centrBin=0
+centrEstimator="V0M"
 
 give_help() {
 
@@ -31,11 +33,23 @@ Available options:
   -n <nev>                     Number of events to be analized 
  Misc
   -d <dataset>                 Dataset or data collection (according to run mode) [default=$dataset]
+  -b <bin>                     Set centrality bin [default=$centrBin]
+  -e <estimator>               Set centrality estimator [default=$centrEstimator]
+                               Available choiches:
+                                - V0M = V0 multiplicity
+                                - FMD = FMD raw multiplicity
+                                - TRK = N. of tracks
+                                - TKL = N. of tracklets
+                                - CL0 = N. of clusters in layer 0
+                                - V0MvsFMD = correlation between V0 and FMD
+                                - TKLvsV0 = correlation between tracklets and V0
+                                - ZEMvsZDC = correlation between ZEM and ZDC     
   -o <option>                  Misc option [default=$option]
                                Available options: 
-                                - SAVE:  move results to a different output folder
-                                - ITSsa: Use ITSsa tracks
-                                - TPC:   Use TPC only tracks
+                                - SAVE:     Move results to a different output folder
+                                - ITSsa:    Use ITSsa tracks
+                                - TPC:      Use TPC only tracks
+                                - NOMCKINE: Skip MC kinematics (runs way faster)
   -t <option>                  Command line option for root [defaul=$ropt]
   -m                           Use this to run on Monte Carlo
   -g                           Debug mode
@@ -44,7 +58,7 @@ ENDOFGUIDE
 
 }
 
-while getopts "r:cgmd:o:w:n:" opt; do
+while getopts "r:cgmd:o:w:n:e:b:" opt; do
   case $opt in
     r)
       run=yes
@@ -62,6 +76,12 @@ while getopts "r:cgmd:o:w:n:" opt; do
     d)
       dataset=$OPTARG
      ;;
+    e)
+      centrEstimator=$OPTARG
+     ;;
+    b)
+      centrBin=$OPTARG
+     ;;
     o)
       option=$OPTARG
       ;;
@@ -98,7 +118,13 @@ if [ "$run" = "$correct" ]
     exit 1
 fi
 
+
 if [ "$run" = "yes" ]
     then
-    root $ropt run.C\(\"$dataset\",$nev,$offset,$debug,$runmode,$isMC,\"$option\",$workers\)
+    root $ropt run.C\(\"$dataset\",$nev,$offset,$debug,$runmode,$isMC,$centrBin,\"$centrEstimator\",\"$option\",$workers\)
+fi
+
+if [ "$correct" = "yes" ]
+    then
+    echo "To be implemented"
 fi