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();
#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>
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");
}
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");
}
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;
/* 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 );
// 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);
// 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;
}
else {
if(fMCEvent->Stack()->IsPhysicalPrimary(label)) {
+ // FIXME add kTransportBit
if(accepted)
hTracks[AliAnalysisMultPbTrackHistoManager::kHistoRecPrim]->Fill(esdTrack->Pt(),esdTrack->Eta(),vtxESD->GetZ());
if(acceptedNoDCA)
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;}
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
// 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:
//
// 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) {
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
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;
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);
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");
+
}
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() {
-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
}
-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
d)
dataset=$OPTARG
;;
+ e)
+ centrEstimator=$OPTARG
+ ;;
+ b)
+ centrBin=$OPTARG
+ ;;
o)
option=$OPTARG
;;
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