AliAnalysisTaskExtractV0::AliAnalysisTaskExtractV0()
: AliAnalysisTaskSE(), fListHistV0(0), fTree(0), fPIDResponse(0),fESDtrackCuts(0),
- fkIsNuclear ( kFALSE ),
- fkLowEnergyPP ( kFALSE ),
- fkUseOnTheFly ( kFALSE ),
+ fkIsNuclear ( kFALSE ),
+ fkSwitchINT7 ( kFALSE ),
+ fkUseOnTheFly ( kFALSE ),
+ fkTakeAllTracks ( kFALSE ),
+ fCentralityEstimator("V0M"),
+ fkLightWeight ( kFALSE ),
+ fkFastOnly ( "" ),
+//------------------------------------------------
+// Initialize
+ fTreeVariableChi2V0(0),
+ fTreeVariableDcaV0Daughters(0),
+ fTreeVariableDcaV0ToPrimVertex(0),
+ fTreeVariableDcaPosToPrimVertex(0),
+ fTreeVariableDcaNegToPrimVertex(0),
+ fTreeVariableV0CosineOfPointingAngle(0),
+ fTreeVariableV0Radius(0),
+ fTreeVariablePt(0),
+ fTreeVariableRapK0Short(0),
+ fTreeVariableRapLambda(0),
+ fTreeVariableInvMassK0s(0),
+ fTreeVariableInvMassLambda(0),
+ fTreeVariableInvMassAntiLambda(0),
+ fTreeVariableAlphaV0(0),
+ fTreeVariablePtArmV0(0),
+ fTreeVariableNegTotMomentum(0),
+ fTreeVariablePosTotMomentum(0),
+ fTreeVariableNegdEdxSig(0),
+ fTreeVariablePosdEdxSig(0),
+ fTreeVariableNegEta(0),
+ fTreeVariablePosEta(0),
+
+ fTreeVariableNSigmasPosProton(0),
+ fTreeVariableNSigmasPosPion(0),
+ fTreeVariableNSigmasNegProton(0),
+ fTreeVariableNSigmasNegPion(0),
+
+ fTreeVariableDistOverTotMom(0),
+ fTreeVariableLeastNbrCrossedRows(0),
+ fTreeVariableLeastRatioCrossedRowsOverFindable(0),
+ fTreeVariableMultiplicity(0),
+ fTreeVariableMultiplicityV0A(0),
+ fTreeVariableMultiplicityZNA(0),
+ fTreeVariableMultiplicityTRK(0),
+ fTreeVariableMultiplicitySPD(0),
+
+ fTreeVariableRunNumber(0),
+ fTreeVariableEventNumber(0),
+
+ fTreeVariableV0x(0),
+ fTreeVariableV0y(0),
+ fTreeVariableV0z(0),
+
+ fTreeVariableV0Px(0),
+ fTreeVariableV0Py(0),
+ fTreeVariableV0Pz(0),
+
+ fTreeVariablePVx(0),
+ fTreeVariablePVy(0),
+ fTreeVariablePVz(0),
+
+ fTreeVariableNegTrackStatus(0),
+ fTreeVariablePosTrackStatus(0),
//------------------------------------------------
// HISTOGRAMS
fHistMultiplicity(0),
fHistMultiplicityNoTPCOnly(0),
fHistMultiplicityNoTPCOnlyNoPileup(0),
+
+//V0A Centrality
+fHistMultiplicityV0ABeforeTrigSel(0),
+fHistMultiplicityV0AForTrigEvt(0),
+fHistMultiplicityV0A(0),
+fHistMultiplicityV0ANoTPCOnly(0),
+fHistMultiplicityV0ANoTPCOnlyNoPileup(0),
+
+//ZNA Centrality
+fHistMultiplicityZNABeforeTrigSel(0),
+fHistMultiplicityZNAForTrigEvt(0),
+fHistMultiplicityZNA(0),
+fHistMultiplicityZNANoTPCOnly(0),
+fHistMultiplicityZNANoTPCOnlyNoPileup(0),
+
+//TRK Centrality
+fHistMultiplicityTRKBeforeTrigSel(0),
+fHistMultiplicityTRKForTrigEvt(0),
+fHistMultiplicityTRK(0),
+fHistMultiplicityTRKNoTPCOnly(0),
+fHistMultiplicityTRKNoTPCOnlyNoPileup(0),
+
+//SPD Centrality
+fHistMultiplicitySPDBeforeTrigSel(0),
+fHistMultiplicitySPDForTrigEvt(0),
+fHistMultiplicitySPD(0),
+fHistMultiplicitySPDNoTPCOnly(0),
+fHistMultiplicitySPDNoTPCOnlyNoPileup(0),
+
+ //Raw Data for Vertex Z position estimator change
+ f2dHistMultiplicityVsVertexZBeforeTrigSel(0),
+ f2dHistMultiplicityVsVertexZForTrigEvt(0),
+ f2dHistMultiplicityVsVertexZ(0),
+ f2dHistMultiplicityVsVertexZNoTPCOnly(0),
+ f2dHistMultiplicityVsVertexZNoTPCOnlyNoPileup(0),
+
fHistPVx(0),
fHistPVy(0),
fHistPVz(0),
AliAnalysisTaskExtractV0::AliAnalysisTaskExtractV0(const char *name)
: AliAnalysisTaskSE(name), fListHistV0(0), fTree(0), fPIDResponse(0),fESDtrackCuts(0),
- fkIsNuclear ( kFALSE ),
- fkLowEnergyPP ( kFALSE ),
- fkUseOnTheFly ( kFALSE ),
-
+ fkIsNuclear ( kFALSE ),
+ fkSwitchINT7 ( kFALSE ),
+ fkUseOnTheFly ( kFALSE ),
+ fkTakeAllTracks ( kFALSE ),
+ fCentralityEstimator("V0M"),
+ fkLightWeight ( kFALSE ),
+ fkFastOnly ( "" ),
+//------------------------------------------------
+// Initialize
+ fTreeVariableChi2V0(0),
+ fTreeVariableDcaV0Daughters(0),
+ fTreeVariableDcaV0ToPrimVertex(0),
+ fTreeVariableDcaPosToPrimVertex(0),
+ fTreeVariableDcaNegToPrimVertex(0),
+ fTreeVariableV0CosineOfPointingAngle(0),
+ fTreeVariableV0Radius(0),
+ fTreeVariablePt(0),
+ fTreeVariableRapK0Short(0),
+ fTreeVariableRapLambda(0),
+ fTreeVariableInvMassK0s(0),
+ fTreeVariableInvMassLambda(0),
+ fTreeVariableInvMassAntiLambda(0),
+ fTreeVariableAlphaV0(0),
+ fTreeVariablePtArmV0(0),
+ fTreeVariableNegTotMomentum(0),
+ fTreeVariablePosTotMomentum(0),
+ fTreeVariableNegdEdxSig(0),
+ fTreeVariablePosdEdxSig(0),
+ fTreeVariableNegEta(0),
+ fTreeVariablePosEta(0),
+
+ fTreeVariableNSigmasPosProton(0),
+ fTreeVariableNSigmasPosPion(0),
+ fTreeVariableNSigmasNegProton(0),
+ fTreeVariableNSigmasNegPion(0),
+
+ fTreeVariableDistOverTotMom(0),
+ fTreeVariableLeastNbrCrossedRows(0),
+ fTreeVariableLeastRatioCrossedRowsOverFindable(0),
+ fTreeVariableMultiplicity(0),
+ fTreeVariableMultiplicityV0A(0),
+ fTreeVariableMultiplicityZNA(0),
+ fTreeVariableMultiplicityTRK(0),
+ fTreeVariableMultiplicitySPD(0),
+
+ fTreeVariableRunNumber(0),
+ fTreeVariableEventNumber(0),
+
+ fTreeVariableV0x(0),
+ fTreeVariableV0y(0),
+ fTreeVariableV0z(0),
+
+ fTreeVariableV0Px(0),
+ fTreeVariableV0Py(0),
+ fTreeVariableV0Pz(0),
+
+ fTreeVariablePVx(0),
+ fTreeVariablePVy(0),
+ fTreeVariablePVz(0),
+
+ fTreeVariableNegTrackStatus(0),
+ fTreeVariablePosTrackStatus(0),
+
//------------------------------------------------
// HISTOGRAMS
// --- Filled on an Event-by-event basis
fHistMultiplicity(0),
fHistMultiplicityNoTPCOnly(0),
fHistMultiplicityNoTPCOnlyNoPileup(0),
+
+
+//V0A Centrality
+fHistMultiplicityV0ABeforeTrigSel(0),
+fHistMultiplicityV0AForTrigEvt(0),
+fHistMultiplicityV0A(0),
+fHistMultiplicityV0ANoTPCOnly(0),
+fHistMultiplicityV0ANoTPCOnlyNoPileup(0),
+
+//ZNA Centrality
+fHistMultiplicityZNABeforeTrigSel(0),
+fHistMultiplicityZNAForTrigEvt(0),
+fHistMultiplicityZNA(0),
+fHistMultiplicityZNANoTPCOnly(0),
+fHistMultiplicityZNANoTPCOnlyNoPileup(0),
+
+//TRK Centrality
+fHistMultiplicityTRKBeforeTrigSel(0),
+fHistMultiplicityTRKForTrigEvt(0),
+fHistMultiplicityTRK(0),
+fHistMultiplicityTRKNoTPCOnly(0),
+fHistMultiplicityTRKNoTPCOnlyNoPileup(0),
+
+//SPD Centrality
+fHistMultiplicitySPDBeforeTrigSel(0),
+fHistMultiplicitySPDForTrigEvt(0),
+fHistMultiplicitySPD(0),
+fHistMultiplicitySPDNoTPCOnly(0),
+fHistMultiplicitySPDNoTPCOnlyNoPileup(0),
+
+ //Raw Data for Vertex Z position estimator change
+ f2dHistMultiplicityVsVertexZBeforeTrigSel(0),
+ f2dHistMultiplicityVsVertexZForTrigEvt(0),
+ f2dHistMultiplicityVsVertexZ(0),
+ f2dHistMultiplicityVsVertexZNoTPCOnly(0),
+ f2dHistMultiplicityVsVertexZNoTPCOnlyNoPileup(0),
+
fHistPVx(0),
fHistPVy(0),
fHistPVz(0),
/*16*/ fTree->Branch("fTreeVariableLeastRatioCrossedRowsOverFindable",&fTreeVariableLeastRatioCrossedRowsOverFindable,"fTreeVariableLeastRatioCrossedRowsOverFindable/F");
//-----------MULTIPLICITY-INFO--------------------
/*17*/ fTree->Branch("fTreeVariableMultiplicity",&fTreeVariableMultiplicity,"fTreeVariableMultiplicity/I");
+ /*17*/ fTree->Branch("fTreeVariableMultiplicityV0A",&fTreeVariableMultiplicityV0A,"fTreeVariableMultiplicityV0A/I");
+ /*17*/ fTree->Branch("fTreeVariableMultiplicityZNA",&fTreeVariableMultiplicityZNA,"fTreeVariableMultiplicityZNA/I");
+ /*17*/ fTree->Branch("fTreeVariableMultiplicityTRK",&fTreeVariableMultiplicityTRK,"fTreeVariableMultiplicityTRK/I");
+ /*17*/ fTree->Branch("fTreeVariableMultiplicitySPD",&fTreeVariableMultiplicitySPD,"fTreeVariableMultiplicitySPD/I");
//------------------------------------------------
/*18*/ fTree->Branch("fTreeVariableDistOverTotMom",&fTreeVariableDistOverTotMom,"fTreeVariableDistOverTotMom/F");
/*19*/ fTree->Branch("fTreeVariableNSigmasPosProton",&fTreeVariableNSigmasPosProton,"fTreeVariableNSigmasPosProton/F");
/*24*/ fTree->Branch("fTreeVariablePosEta",&fTreeVariablePosEta,"fTreeVariablePosEta/F");
/*25*/ fTree->Branch("fTreeVariableRunNumber",&fTreeVariableRunNumber,"fTreeVariableRunNumber/I");
/*26*/ fTree->Branch("fTreeVariableEventNumber",&fTreeVariableEventNumber,"fTreeVariableEventNumber/l");
-
+
+ if( fkLightWeight == kFALSE ){
+//-----------FOR CTAU DEBUGGING: Full Phase Space + Decay Position Info
+ fTree->Branch("fTreeVariablePVx",&fTreeVariablePVx,"fTreeVariablePVx/F");
+ fTree->Branch("fTreeVariablePVy",&fTreeVariablePVy,"fTreeVariablePVy/F");
+ fTree->Branch("fTreeVariablePVz",&fTreeVariablePVz,"fTreeVariablePVz/F");
+
+ fTree->Branch("fTreeVariableV0x",&fTreeVariableV0x,"fTreeVariableV0x/F");
+ fTree->Branch("fTreeVariableV0y",&fTreeVariableV0y,"fTreeVariableV0y/F");
+ fTree->Branch("fTreeVariableV0z",&fTreeVariableV0z,"fTreeVariableV0z/F");
+
+ fTree->Branch("fTreeVariableV0Px",&fTreeVariableV0Px,"fTreeVariableV0Px/F");
+ fTree->Branch("fTreeVariableV0Py",&fTreeVariableV0Py,"fTreeVariableV0Py/F");
+ fTree->Branch("fTreeVariableV0Pz",&fTreeVariableV0Pz,"fTreeVariableV0Pz/F");
+
+ fTree->Branch("fTreeVariableNegTrackStatus",&fTreeVariableNegTrackStatus,"fTreeVariableNegTrackStatus/l");
+ fTree->Branch("fTreeVariablePosTrackStatus",&fTreeVariablePosTrackStatus,"fTreeVariablePosTrackStatus/l");
+ }
+
//------------------------------------------------
// Particle Identification Setup
//------------------------------------------------
// Track Multiplicity Histograms
//------------------------------------------------
+ //Default V0M Centrality (if PbPb)
if(! fHistMultiplicityBeforeTrigSel) {
fHistMultiplicityBeforeTrigSel = new TH1F("fHistMultiplicityBeforeTrigSel",
"Tracks per event;Nbr of Tracks;Events",
200, 0, 200);
fListHistV0->Add(fHistMultiplicityNoTPCOnlyNoPileup);
}
+
+ //V0A Centrality (if PbPb / pPb)
+ if(! fHistMultiplicityV0ABeforeTrigSel) {
+ fHistMultiplicityV0ABeforeTrigSel = new TH1F("fHistMultiplicityV0ABeforeTrigSel",
+ "Centrality Distribution: V0A;V0A Centrality;Events",
+ 200, 0, 200);
+ fListHistV0->Add(fHistMultiplicityV0ABeforeTrigSel);
+ }
+ if(! fHistMultiplicityV0AForTrigEvt) {
+ fHistMultiplicityV0AForTrigEvt = new TH1F("fHistMultiplicityV0AForTrigEvt",
+ "Centrality Distribution: V0A;V0A Centrality;Events",
+ 200, 0, 200);
+ fListHistV0->Add(fHistMultiplicityV0AForTrigEvt);
+ }
+ if(! fHistMultiplicityV0A) {
+ fHistMultiplicityV0A = new TH1F("fHistMultiplicityV0A",
+ "Centrality Distribution: V0A;V0A Centrality;Events",
+ 200, 0, 200);
+ fListHistV0->Add(fHistMultiplicityV0A);
+ }
+ if(! fHistMultiplicityV0ANoTPCOnly) {
+ fHistMultiplicityV0ANoTPCOnly = new TH1F("fHistMultiplicityV0ANoTPCOnly",
+ "Centrality Distribution: V0A;V0A Centrality;Events",
+ 200, 0, 200);
+ fListHistV0->Add(fHistMultiplicityV0ANoTPCOnly);
+ }
+ if(! fHistMultiplicityV0ANoTPCOnlyNoPileup) {
+ fHistMultiplicityV0ANoTPCOnlyNoPileup = new TH1F("fHistMultiplicityV0ANoTPCOnlyNoPileup",
+ "Centrality Distribution: V0A;V0A Centrality;Events",
+ 200, 0, 200);
+ fListHistV0->Add(fHistMultiplicityV0ANoTPCOnlyNoPileup);
+ }
+
+ //ZNA Centrality (if PbPb / pPb)
+ if(! fHistMultiplicityZNABeforeTrigSel) {
+ fHistMultiplicityZNABeforeTrigSel = new TH1F("fHistMultiplicityZNABeforeTrigSel",
+ "Centrality Distribution: ZNA;ZNA Centrality;Events",
+ 200, 0, 200);
+ fListHistV0->Add(fHistMultiplicityZNABeforeTrigSel);
+ }
+ if(! fHistMultiplicityZNAForTrigEvt) {
+ fHistMultiplicityZNAForTrigEvt = new TH1F("fHistMultiplicityZNAForTrigEvt",
+ "Centrality Distribution: ZNA;ZNA Centrality;Events",
+ 200, 0, 200);
+ fListHistV0->Add(fHistMultiplicityZNAForTrigEvt);
+ }
+ if(! fHistMultiplicityZNA) {
+ fHistMultiplicityZNA = new TH1F("fHistMultiplicityZNA",
+ "Centrality Distribution: ZNA;ZNA Centrality;Events",
+ 200, 0, 200);
+ fListHistV0->Add(fHistMultiplicityZNA);
+ }
+ if(! fHistMultiplicityZNANoTPCOnly) {
+ fHistMultiplicityZNANoTPCOnly = new TH1F("fHistMultiplicityZNANoTPCOnly",
+ "Centrality Distribution: ZNA;ZNA Centrality;Events",
+ 200, 0, 200);
+ fListHistV0->Add(fHistMultiplicityZNANoTPCOnly);
+ }
+ if(! fHistMultiplicityZNANoTPCOnlyNoPileup) {
+ fHistMultiplicityZNANoTPCOnlyNoPileup = new TH1F("fHistMultiplicityZNANoTPCOnlyNoPileup",
+ "Centrality Distribution: ZNA;ZNA Centrality;Events",
+ 200, 0, 200);
+ fListHistV0->Add(fHistMultiplicityZNANoTPCOnlyNoPileup);
+ }
+
+ //TRK Centrality (if PbPb / pPb)
+ if(! fHistMultiplicityTRKBeforeTrigSel) {
+ fHistMultiplicityTRKBeforeTrigSel = new TH1F("fHistMultiplicityTRKBeforeTrigSel",
+ "Centrality Distribution: TRK;TRK Centrality;Events",
+ 200, 0, 200);
+ fListHistV0->Add(fHistMultiplicityTRKBeforeTrigSel);
+ }
+ if(! fHistMultiplicityTRKForTrigEvt) {
+ fHistMultiplicityTRKForTrigEvt = new TH1F("fHistMultiplicityTRKForTrigEvt",
+ "Centrality Distribution: TRK;TRK Centrality;Events",
+ 200, 0, 200);
+ fListHistV0->Add(fHistMultiplicityTRKForTrigEvt);
+ }
+ if(! fHistMultiplicityTRK) {
+ fHistMultiplicityTRK = new TH1F("fHistMultiplicityTRK",
+ "Centrality Distribution: TRK;TRK Centrality;Events",
+ 200, 0, 200);
+ fListHistV0->Add(fHistMultiplicityTRK);
+ }
+ if(! fHistMultiplicityTRKNoTPCOnly) {
+ fHistMultiplicityTRKNoTPCOnly = new TH1F("fHistMultiplicityTRKNoTPCOnly",
+ "Centrality Distribution: TRK;TRK Centrality;Events",
+ 200, 0, 200);
+ fListHistV0->Add(fHistMultiplicityTRKNoTPCOnly);
+ }
+ if(! fHistMultiplicityTRKNoTPCOnlyNoPileup) {
+ fHistMultiplicityTRKNoTPCOnlyNoPileup = new TH1F("fHistMultiplicityTRKNoTPCOnlyNoPileup",
+ "Centrality Distribution: TRK;TRK Centrality;Events",
+ 200, 0, 200);
+ fListHistV0->Add(fHistMultiplicityTRKNoTPCOnlyNoPileup);
+ }
+
+ //SPD Centrality (if PbPb / pPb)
+ if(! fHistMultiplicitySPDBeforeTrigSel) {
+ fHistMultiplicitySPDBeforeTrigSel = new TH1F("fHistMultiplicitySPDBeforeTrigSel",
+ "Centrality Distribution: SPD;SPD Centrality;Events",
+ 200, 0, 200);
+ fListHistV0->Add(fHistMultiplicitySPDBeforeTrigSel);
+ }
+ if(! fHistMultiplicitySPDForTrigEvt) {
+ fHistMultiplicitySPDForTrigEvt = new TH1F("fHistMultiplicitySPDForTrigEvt",
+ "Centrality Distribution: SPD;SPD Centrality;Events",
+ 200, 0, 200);
+ fListHistV0->Add(fHistMultiplicitySPDForTrigEvt);
+ }
+ if(! fHistMultiplicitySPD) {
+ fHistMultiplicitySPD = new TH1F("fHistMultiplicitySPD",
+ "Centrality Distribution: SPD;SPD Centrality;Events",
+ 200, 0, 200);
+ fListHistV0->Add(fHistMultiplicitySPD);
+ }
+ if(! fHistMultiplicitySPDNoTPCOnly) {
+ fHistMultiplicitySPDNoTPCOnly = new TH1F("fHistMultiplicitySPDNoTPCOnly",
+ "Centrality Distribution: SPD;SPD Centrality;Events",
+ 200, 0, 200);
+ fListHistV0->Add(fHistMultiplicitySPDNoTPCOnly);
+ }
+ if(! fHistMultiplicitySPDNoTPCOnlyNoPileup) {
+ fHistMultiplicitySPDNoTPCOnlyNoPileup = new TH1F("fHistMultiplicitySPDNoTPCOnlyNoPileup",
+ "Centrality Distribution: SPD;SPD Centrality;Events",
+ 200, 0, 200);
+ fListHistV0->Add(fHistMultiplicitySPDNoTPCOnlyNoPileup);
+ }
+
+ //Raw Data for Vertex Z position estimator change
+ //TH2F *f2dHistMultiplicityVsVertexZBeforeTrigSel; //! multiplicity distribution
+ //TH2F *f2dHistMultiplicityVsVertexZForTrigEvt; //! multiplicity distribution
+ //TH2F *f2dHistMultiplicityVsVertexZ; //! multiplicity distribution
+ //TH2F *f2dHistMultiplicityVsVertexZNoTPCOnly; //! multiplicity distribution
+ //TH2F *f2dHistMultiplicityVsVertexZNoTPCOnlyNoPileup; //! multiplicity distribution
+
+ if(! f2dHistMultiplicityVsVertexZBeforeTrigSel) {
+ f2dHistMultiplicityVsVertexZBeforeTrigSel = new TH2F("f2dHistMultiplicityVsVertexZBeforeTrigSel",
+ "Tracks per event", 200, 0, 200,400, -20, 20);
+ fListHistV0->Add(f2dHistMultiplicityVsVertexZBeforeTrigSel);
+ }
+ if(! f2dHistMultiplicityVsVertexZForTrigEvt) {
+ f2dHistMultiplicityVsVertexZForTrigEvt = new TH2F("f2dHistMultiplicityVsVertexZForTrigEvt",
+ "Tracks per event", 200, 0, 200, 400, -20, 20);
+ fListHistV0->Add(f2dHistMultiplicityVsVertexZForTrigEvt);
+ }
+ if(! f2dHistMultiplicityVsVertexZ) {
+ f2dHistMultiplicityVsVertexZ = new TH2F("f2dHistMultiplicityVsVertexZ",
+ "Tracks per event", 200, 0, 200, 400, -20, 20);
+ fListHistV0->Add(f2dHistMultiplicityVsVertexZ);
+ }
+ if(! f2dHistMultiplicityVsVertexZNoTPCOnly) {
+ f2dHistMultiplicityVsVertexZNoTPCOnly = new TH2F("f2dHistMultiplicityVsVertexZNoTPCOnly",
+ "Tracks per event", 200, 0, 200, 400, -20, 20);
+ fListHistV0->Add(f2dHistMultiplicityVsVertexZNoTPCOnly);
+ }
+ if(! f2dHistMultiplicityVsVertexZNoTPCOnlyNoPileup) {
+ f2dHistMultiplicityVsVertexZNoTPCOnlyNoPileup = new TH2F("f2dHistMultiplicityVsVertexZNoTPCOnlyNoPileup",
+ "Tracks per event", 200, 0, 200, 400, -20, 20);
+ fListHistV0->Add(f2dHistMultiplicityVsVertexZNoTPCOnlyNoPileup);
+ }
+
+//-----------------------------------------------------
if(! fHistPVx) {
fHistPVx = new TH1F("fHistPVx",
((ULong64_t)lESDevent->GetBunchCrossNumber() ) );
//REVISED multiplicity estimator after 'multiplicity day' (2011)
- Int_t lMultiplicity = -100;
+ Int_t lMultiplicity = -100;
+ Int_t lMultiplicityV0A = -100;
+ Int_t lMultiplicityZNA = -100;
+ Int_t lMultiplicityTRK = -100;
+ Int_t lMultiplicitySPD = -100;
if(fkIsNuclear == kFALSE) lMultiplicity = fESDtrackCuts->GetReferenceMultiplicity(lESDevent, AliESDtrackCuts::kTrackletsITSTPC,0.5);
if(fkIsNuclear == kTRUE){
AliCentrality* centrality;
centrality = lESDevent->GetCentrality();
- lMultiplicity = ( ( Int_t ) ( centrality->GetCentralityPercentile( "V0M" ) ) );
+ lMultiplicity = ( ( Int_t ) ( centrality->GetCentralityPercentile( fCentralityEstimator.Data() ) ) );
+ lMultiplicityV0A = ( ( Int_t ) ( centrality->GetCentralityPercentile( "V0A" ) ) );
+ lMultiplicityZNA = ( ( Int_t ) ( centrality->GetCentralityPercentile( "ZNA" ) ) );
+ lMultiplicityTRK = ( ( Int_t ) ( centrality->GetCentralityPercentile( "TRK" ) ) );
+ lMultiplicitySPD = ( ( Int_t ) ( centrality->GetCentralityPercentile( "SPD" ) ) );
if (centrality->GetQuality()>1) {
PostData(1, fListHistV0);
PostData(2, fTree);
//Set variable for filling tree afterwards!
//---> pp case......: GetReferenceMultiplicity
//---> Pb-Pb case...: Centrality by V0M
- fTreeVariableMultiplicity = lMultiplicity;
- fHistMultiplicityBeforeTrigSel->Fill ( lMultiplicity );
- fHistV0MultiplicityBeforeTrigSel->Fill ( lESDevent->GetNumberOfV0s() );
+ fTreeVariableMultiplicity = lMultiplicity;
+ fTreeVariableMultiplicityV0A = lMultiplicityV0A;
+ fTreeVariableMultiplicityZNA = lMultiplicityZNA;
+ fTreeVariableMultiplicityTRK = lMultiplicityTRK;
+ fTreeVariableMultiplicitySPD = lMultiplicitySPD;
+
+ fHistMultiplicityBeforeTrigSel->Fill ( lMultiplicity );
+ fHistMultiplicityV0ABeforeTrigSel->Fill ( lMultiplicityV0A );
+ fHistMultiplicityZNABeforeTrigSel->Fill ( lMultiplicityZNA );
+ fHistMultiplicityTRKBeforeTrigSel->Fill ( lMultiplicityTRK );
+ fHistMultiplicitySPDBeforeTrigSel->Fill ( lMultiplicitySPD );
+
+ fHistV0MultiplicityBeforeTrigSel->Fill ( lESDevent->GetNumberOfV0s() );
//------------------------------------------------
// Physics Selection
//------------------------------------------------
-
-// new method
- UInt_t maskIsSelected = ((AliInputEventHandler*)(AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler()))->IsEventSelected();
- Bool_t isSelected = 0;
- isSelected = (maskIsSelected & AliVEvent::kMB) == AliVEvent::kMB;
-
- //pp at 2.76TeV: special case, ignore FastOnly
- if ( (fkLowEnergyPP == kTRUE) && (maskIsSelected& AliVEvent::kFastOnly) ){
- PostData(1, fListHistV0);
- PostData(2, fTree);
- return;
- }
- //Standard Min-Bias Selection
- if ( ! isSelected ) {
- PostData(1, fListHistV0);
- PostData(2, fTree);
- return;
- }
-
+
+ // new method
+ UInt_t maskIsSelected = ((AliInputEventHandler*)(AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler()))->IsEventSelected();
+ Bool_t isSelected = 0;
+ Bool_t isSelectedExtra = kTRUE; //extra sel, default YES
+ isSelected = (maskIsSelected & AliVEvent::kMB) == AliVEvent::kMB;
+
+ //pA triggering: CINT7
+ if( fkSwitchINT7 ) isSelected = (maskIsSelected & AliVEvent::kINT7) == AliVEvent::kINT7;
+
+ //Extra selection applies if with/without SDD is to be dealth with
+ if( fkFastOnly == "kFastOnly"){
+ //If not kFastOnly, isSelectedExtra will be kFALSE; procedure will reject it
+ isSelectedExtra = (maskIsSelected & AliVEvent::kFastOnly) == AliVEvent::kFastOnly;
+ }
+ if( fkFastOnly == "NotkFastOnly"){
+ //If not kFastOnly, isSelectedExtra will be kTRUE; procedure will accept it
+ isSelectedExtra = !( (maskIsSelected & AliVEvent::kFastOnly) == AliVEvent::kFastOnly );
+ }
+
+ //Standard Min-Bias Selection
+ if ( !isSelected ) {
+ PostData(1, fListHistV0);
+ PostData(2, fTree);
+ return;
+ }
+ //Check if goes through extra selections
+ //isSelectedExtra will be true in case -> fkFastOnly==""
+ //isSelectedExtra will be true in case -> fkFastOnly=="kFastOnly" && bit kFastOnly ON
+ //isSelectedExtra will be true in case -> fkFastOnly=="NotkFastOnly" && bit kFastOnly OFF
+ if ( !isSelectedExtra ) {
+ PostData(1, fListHistV0);
+ PostData(2, fTree);
+ return;
+ }
+
+
//------------------------------------------------
// After Trigger Selection
//------------------------------------------------
fHistV0MultiplicityForTrigEvt ->Fill( nV0s );
fHistMultiplicityForTrigEvt ->Fill( lMultiplicity );
-
+ fHistMultiplicityV0AForTrigEvt ->Fill( lMultiplicityV0A );
+ fHistMultiplicityZNAForTrigEvt ->Fill( lMultiplicityZNA );
+ fHistMultiplicityTRKForTrigEvt ->Fill( lMultiplicityTRK );
+ fHistMultiplicitySPDForTrigEvt ->Fill( lMultiplicitySPD );
+
//------------------------------------------------
// Getting: Primary Vertex + MagField Info
//------------------------------------------------
fHistPVy->Fill( tPrimaryVtxPosition[1] );
fHistPVz->Fill( tPrimaryVtxPosition[2] );
+ f2dHistMultiplicityVsVertexZForTrigEvt->Fill( lMultiplicity, tPrimaryVtxPosition[2] );
+
//------------------------------------------------
// Primary Vertex Z position: SKIP
//------------------------------------------------
return;
}
- lMagneticField = lESDevent->GetMagneticField( );
- fHistV0MultiplicityForSelEvt ->Fill( nV0s );
- fHistMultiplicity->Fill(lMultiplicity);
+ f2dHistMultiplicityVsVertexZ->Fill( lMultiplicity, tPrimaryVtxPosition[2] );
+
+ lMagneticField = lESDevent->GetMagneticField( );
+ fHistV0MultiplicityForSelEvt ->Fill( nV0s );
+ fHistMultiplicity->Fill(lMultiplicity);
+ fHistMultiplicityV0A->Fill(lMultiplicityV0A);
+ fHistMultiplicityZNA->Fill(lMultiplicityZNA);
+ fHistMultiplicityTRK->Fill(lMultiplicityTRK);
+ fHistMultiplicitySPD->Fill(lMultiplicitySPD);
//------------------------------------------------
// Only look at events with well-established PV
return;
}
- fHistV0MultiplicityForSelEvtNoTPCOnly ->Fill( nV0s );
- fHistMultiplicityNoTPCOnly->Fill(lMultiplicity);
+
+ f2dHistMultiplicityVsVertexZNoTPCOnly->Fill( lMultiplicity, tPrimaryVtxPosition[2] );
+ fHistV0MultiplicityForSelEvtNoTPCOnly ->Fill( nV0s );
+ fHistMultiplicityNoTPCOnly->Fill(lMultiplicity);
+ fHistMultiplicityV0ANoTPCOnly->Fill(lMultiplicityV0A);
+ fHistMultiplicityZNANoTPCOnly->Fill(lMultiplicityZNA);
+ fHistMultiplicityTRKNoTPCOnly->Fill(lMultiplicityTRK);
+ fHistMultiplicitySPDNoTPCOnly->Fill(lMultiplicitySPD);
//------------------------------------------------
// Pileup Rejection
PostData(2, fTree);
return;
}
- fHistV0MultiplicityForSelEvtNoTPCOnlyNoPileup ->Fill( nV0s );
- fHistMultiplicityNoTPCOnlyNoPileup->Fill(lMultiplicity);
+
+ f2dHistMultiplicityVsVertexZNoTPCOnlyNoPileup->Fill( lMultiplicity, tPrimaryVtxPosition[2] );
+ fHistV0MultiplicityForSelEvtNoTPCOnlyNoPileup ->Fill( nV0s );
+ fHistMultiplicityNoTPCOnlyNoPileup->Fill(lMultiplicity);
+ fHistMultiplicityV0ANoTPCOnlyNoPileup->Fill(lMultiplicityV0A);
+ fHistMultiplicityZNANoTPCOnlyNoPileup->Fill(lMultiplicityZNA);
+ fHistMultiplicityTRKNoTPCOnlyNoPileup->Fill(lMultiplicityTRK);
+ fHistMultiplicitySPDNoTPCOnlyNoPileup->Fill(lMultiplicitySPD);
//------------------------------------------------
// MAIN LAMBDA LOOP STARTS HERE
fHistPVzAnalysis->Fill( tPrimaryVtxPosition[2] );
}
+ fTreeVariablePVx = tPrimaryVtxPosition[0];
+ fTreeVariablePVy = tPrimaryVtxPosition[1];
+ fTreeVariablePVz = tPrimaryVtxPosition[2];
+
//Variable definition
Int_t lOnFlyStatus = 0;// nv0sOn = 0, nv0sOff = 0;
Double_t lChi2V0 = 0;
if ( fkUseOnTheFly ) CheckChargeV0(v0);
Double_t tDecayVertexV0[3]; v0->GetXYZ(tDecayVertexV0[0],tDecayVertexV0[1],tDecayVertexV0[2]);
+
Double_t tV0mom[3];
v0->GetPxPyPz( tV0mom[0],tV0mom[1],tV0mom[2] );
Double_t lV0TotalMomentum = TMath::Sqrt(
tV0mom[0]*tV0mom[0]+tV0mom[1]*tV0mom[1]+tV0mom[2]*tV0mom[2] );
lV0Radius = TMath::Sqrt(tDecayVertexV0[0]*tDecayVertexV0[0]+tDecayVertexV0[1]*tDecayVertexV0[1]);
+
+ //Set Variables for later filling
+ fTreeVariableV0x = tDecayVertexV0[0];
+ fTreeVariableV0y = tDecayVertexV0[1];
+ fTreeVariableV0z = tDecayVertexV0[2];
+
+ //Set Variables for later filling
+ fTreeVariableV0Px = tV0mom[0];
+ fTreeVariableV0Py = tV0mom[1];
+ fTreeVariableV0Pz = tV0mom[2];
+
lPt = v0->Pt();
lRapK0Short = v0->RapK0Short();
lRapLambda = v0->RapLambda();
// TPC refit condition (done during reconstruction for Offline but not for On-the-fly)
if( !(pTrack->GetStatus() & AliESDtrack::kTPCrefit)) continue;
if( !(nTrack->GetStatus() & AliESDtrack::kTPCrefit)) continue;
-
- if ( ( ( pTrack->GetTPCClusterInfo(2,1) ) < 70 ) || ( ( nTrack->GetTPCClusterInfo(2,1) ) < 70 ) ) continue;
+
+ //Get status flags
+ fTreeVariablePosTrackStatus = pTrack->GetStatus();
+ fTreeVariableNegTrackStatus = nTrack->GetStatus();
+
+ if ( ( ( ( pTrack->GetTPCClusterInfo(2,1) ) < 70 ) || ( ( nTrack->GetTPCClusterInfo(2,1) ) < 70 ) )&&(fkTakeAllTracks==kFALSE) ) continue;
//GetKinkIndex condition
if( pTrack->GetKinkIndex(0)>0 || nTrack->GetKinkIndex(0)>0 ) continue;
fTreeVariableLeastRatioCrossedRowsOverFindable = lNegTrackCrossedRowsOverFindable;
//Lowest Cut Level for Ratio Crossed Rows / Findable = 0.8, set here
- if ( fTreeVariableLeastRatioCrossedRowsOverFindable < 0.8 ) continue;
+ if ( (fTreeVariableLeastRatioCrossedRowsOverFindable < 0.8)&&(fkTakeAllTracks==kFALSE) ) continue;
//End track Quality Cuts
//________________________________________________________________________