ClassImp(AliAnalysisTaskExtractPerformanceV0)
AliAnalysisTaskExtractPerformanceV0::AliAnalysisTaskExtractPerformanceV0()
- : AliAnalysisTaskSE(), fListHistV0(0), fTree(0), fPIDResponse(0),
+ : AliAnalysisTaskSE(), fListHistV0(0), fTree(0), fPIDResponse(0), fESDtrackCuts(0),
fkIsNuclear ( kFALSE ),
- fkLowEnergyPP ( kFALSE ),
+ fkSwitchINT7 ( kFALSE ),
fkUseOnTheFly ( kFALSE ),
+ fkTakeAllTracks ( kFALSE ),
+ fpArapidityShift ( 0.465 ),
+ fCentralityEstimator("V0M"),
+ fkLightWeight ( kFALSE ),
+//------------------------------------------------
+// Tree Variables
+
+ fTreeVariablePrimaryStatus(0),
+ fTreeVariablePrimaryStatusMother(0),
+ fTreeVariableChi2V0(0),
+ fTreeVariableDcaV0Daughters(0),
+ fTreeVariableDcaV0ToPrimVertex(0),
+ fTreeVariableDcaPosToPrimVertex(0),
+ fTreeVariableDcaNegToPrimVertex(0),
+ fTreeVariableV0CosineOfPointingAngle(0),
+ fTreeVariableV0Radius(0),
+ fTreeVariablePt(0),
+ fTreeVariablePtMC(0),
+ fTreeVariableRapK0Short(0),
+ fTreeVariableRapLambda(0),
+ fTreeVariableRapMC(0),
+ fTreeVariableInvMassK0s(0),
+ fTreeVariableInvMassLambda(0),
+ fTreeVariableInvMassAntiLambda(0),
+ fTreeVariableAlphaV0(0),
+ fTreeVariablePtArmV0(0),
+ fTreeVariableNegTotMomentum(0),
+ fTreeVariablePosTotMomentum(0),
+ fTreeVariableNegTransvMomentum(0),
+ fTreeVariablePosTransvMomentum(0),
+ fTreeVariableNegTransvMomentumMC(0),
+ fTreeVariablePosTransvMomentumMC(0),
+
+ fTreeVariableNSigmasPosProton(0),
+ fTreeVariableNSigmasPosPion(0),
+ fTreeVariableNSigmasNegProton(0),
+ fTreeVariableNSigmasNegPion(0),
+
+ fTreeVariablePtMother(0),
+ fTreeVariableV0CreationRadius(0),
+ fTreeVariablePID(0),
+ fTreeVariablePIDPositive(0),
+ fTreeVariablePIDNegative(0),
+ fTreeVariablePIDMother(0),
+ fTreeVariableIndexStatus(0),
+ fTreeVariableIndexStatusMother(0),
+
+ fTreeVariableRunNumber(0),
+ fTreeVariableEventNumber(0),
+
+ fTreeVariableDistOverTotMom(0),
+
+ fTreeVariablePosEta(0),
+ fTreeVariableNegEta(0),
+
+ fTreeVariableVertexZ(0),
+
+ fTreeVariableLeastNbrCrossedRows(0),
+ fTreeVariableLeastRatioCrossedRowsOverFindable(0),
+ fTreeVariableMultiplicity(0),
+ fTreeVariableMultiplicityMC(0),
+
+ fTreeVariableV0x(0),
+ fTreeVariableV0y(0),
+ fTreeVariableV0z(0),
+
+ fTreeVariableV0Px(0),
+ fTreeVariableV0Py(0),
+ fTreeVariableV0Pz(0),
+
+ fTreeVariableMCV0x(0),
+ fTreeVariableMCV0y(0),
+ fTreeVariableMCV0z(0),
+
+ fTreeVariableMCV0Px(0),
+ fTreeVariableMCV0Py(0),
+ fTreeVariableMCV0Pz(0),
+
+ fTreeVariablePVx(0),
+ fTreeVariablePVy(0),
+ fTreeVariablePVz(0),
+
+ fTreeVariableMCPVx(0),
+ fTreeVariableMCPVy(0),
+ fTreeVariableMCPVz(0),
+
+ fTreeVariableIsNonInjected(0),
+
+ fTreeVariableNegTrackStatus(0),
+ fTreeVariablePosTrackStatus(0),
//------------------------------------------------
// HISTOGRAMS
fHistMultiplicityNoTPCOnly(0),
fHistMultiplicityNoTPCOnlyNoPileup(0),
+ f2dHistMultiplicityVsTrueBeforeTrigSel(0),
+ f2dHistMultiplicityVsTrueForTrigEvt(0),
+ f2dHistMultiplicityVsTrue(0),
+ f2dHistMultiplicityVsTrueNoTPCOnly(0),
+ f2dHistMultiplicityVsTrueNoTPCOnlyNoPileup(0),
+
+ //Raw Data for Vertex Z position estimator change
+ f2dHistMultiplicityVsVertexZBeforeTrigSel(0),
+ f2dHistMultiplicityVsVertexZForTrigEvt(0),
+ f2dHistMultiplicityVsVertexZ(0),
+ f2dHistMultiplicityVsVertexZNoTPCOnly(0),
+ f2dHistMultiplicityVsVertexZNoTPCOnlyNoPileup(0),
+
+ fHistGenVertexZBeforeTrigSel(0),
+ fHistGenVertexZForTrigEvt(0),
+ fHistGenVertexZ(0),
+ fHistGenVertexZNoTPCOnly(0),
+ fHistGenVertexZNoTPCOnlyNoPileup(0),
+
//------------------------------------------------
// PARTICLE HISTOGRAMS
// --- Filled on a Particle-by-Particle basis
f3dHistPrimAnalysisPtVsYVsMultLambda(0),
f3dHistPrimAnalysisPtVsYVsMultAntiLambda(0),
f3dHistPrimAnalysisPtVsYVsMultK0Short(0),
+ f3dHistPrimAnalysisPtVsYCMSVsMultLambda(0),
+ f3dHistPrimAnalysisPtVsYCMSVsMultAntiLambda(0),
+ f3dHistPrimAnalysisPtVsYCMSVsMultK0Short(0),
f3dHistPrimRawPtVsYVsMultLambda(0),
f3dHistPrimRawPtVsYVsMultAntiLambda(0),
f3dHistPrimRawPtVsYVsMultK0Short(0),
+ f3dHistPrimRawPtVsYCMSVsMultLambda(0),
+ f3dHistPrimRawPtVsYCMSVsMultAntiLambda(0),
+ f3dHistPrimRawPtVsYCMSVsMultK0Short(0),
+ f3dHistPrimRawPtVsYVsMultNonInjLambda(0),
+ f3dHistPrimRawPtVsYVsMultNonInjAntiLambda(0),
+ f3dHistPrimRawPtVsYVsMultNonInjK0Short(0),
+ f3dHistPrimRawPtVsYVsMultMCLambda(0),
+ f3dHistPrimRawPtVsYVsMultMCAntiLambda(0),
+ f3dHistPrimRawPtVsYVsMultMCK0Short(0),
+ f3dHistPrimRawPtVsYVsVertexZLambda(0),
+ f3dHistPrimRawPtVsYVsVertexZAntiLambda(0),
+ f3dHistPrimRawPtVsYVsVertexZK0Short(0),
f3dHistPrimCloseToPVPtVsYVsMultLambda(0),
f3dHistPrimCloseToPVPtVsYVsMultAntiLambda(0),
f3dHistPrimCloseToPVPtVsYVsMultK0Short(0),
f3dHistPrimRawPtVsYVsDecayLengthK0Short(0),
f3dHistGenPtVsYVsMultXiMinus(0),
f3dHistGenPtVsYVsMultXiPlus(0),
+ f3dHistGenPtVsYVsMultOmegaMinus(0),
+ f3dHistGenPtVsYVsMultOmegaPlus(0),
+ f3dHistGenSelectedPtVsYVsMultXiMinus(0),
+ f3dHistGenSelectedPtVsYVsMultXiPlus(0),
+ f3dHistGenSelectedPtVsYVsMultOmegaMinus(0),
+ f3dHistGenSelectedPtVsYVsMultOmegaPlus(0),
+ f3dHistGenPtVsYCMSVsMultXiMinus(0),
+ f3dHistGenPtVsYCMSVsMultXiPlus(0),
+ f3dHistGenPtVsYCMSVsMultOmegaMinus(0),
+ f3dHistGenPtVsYCMSVsMultOmegaPlus(0),
+ f3dHistGenSelectedPtVsYCMSVsMultXiMinus(0),
+ f3dHistGenSelectedPtVsYCMSVsMultXiPlus(0),
+ f3dHistGenSelectedPtVsYCMSVsMultOmegaMinus(0),
+ f3dHistGenSelectedPtVsYCMSVsMultOmegaPlus(0),
fHistPVx(0),
fHistPVy(0),
fHistPVz(0),
}
AliAnalysisTaskExtractPerformanceV0::AliAnalysisTaskExtractPerformanceV0(const char *name)
- : AliAnalysisTaskSE(name), fListHistV0(0), fTree(0), fPIDResponse(0),
+ : AliAnalysisTaskSE(name), fListHistV0(0), fTree(0), fPIDResponse(0), fESDtrackCuts(0),
fkIsNuclear ( kFALSE ),
- fkLowEnergyPP ( kFALSE ),
+ fkSwitchINT7 ( kFALSE ),
fkUseOnTheFly ( kFALSE ),
-
+ fkTakeAllTracks ( kFALSE ),
+ fpArapidityShift ( 0.465 ),
+ fCentralityEstimator("V0M"),
+ fkLightWeight ( kFALSE ),
+//------------------------------------------------
+// Tree Variables
+
+ fTreeVariablePrimaryStatus(0),
+ fTreeVariablePrimaryStatusMother(0),
+ fTreeVariableChi2V0(0),
+ fTreeVariableDcaV0Daughters(0),
+ fTreeVariableDcaV0ToPrimVertex(0),
+ fTreeVariableDcaPosToPrimVertex(0),
+ fTreeVariableDcaNegToPrimVertex(0),
+ fTreeVariableV0CosineOfPointingAngle(0),
+ fTreeVariableV0Radius(0),
+ fTreeVariablePt(0),
+ fTreeVariablePtMC(0),
+ fTreeVariableRapK0Short(0),
+ fTreeVariableRapLambda(0),
+ fTreeVariableRapMC(0),
+ fTreeVariableInvMassK0s(0),
+ fTreeVariableInvMassLambda(0),
+ fTreeVariableInvMassAntiLambda(0),
+ fTreeVariableAlphaV0(0),
+ fTreeVariablePtArmV0(0),
+ fTreeVariableNegTotMomentum(0),
+ fTreeVariablePosTotMomentum(0),
+ fTreeVariableNegTransvMomentum(0),
+ fTreeVariablePosTransvMomentum(0),
+ fTreeVariableNegTransvMomentumMC(0),
+ fTreeVariablePosTransvMomentumMC(0),
+
+ fTreeVariableNSigmasPosProton(0),
+ fTreeVariableNSigmasPosPion(0),
+ fTreeVariableNSigmasNegProton(0),
+ fTreeVariableNSigmasNegPion(0),
+
+ fTreeVariablePtMother(0),
+ fTreeVariableV0CreationRadius(0),
+ fTreeVariablePID(0),
+ fTreeVariablePIDPositive(0),
+ fTreeVariablePIDNegative(0),
+ fTreeVariablePIDMother(0),
+ fTreeVariableIndexStatus(0),
+ fTreeVariableIndexStatusMother(0),
+
+ fTreeVariableRunNumber(0),
+ fTreeVariableEventNumber(0),
+
+ fTreeVariableDistOverTotMom(0),
+
+ fTreeVariablePosEta(0),
+ fTreeVariableNegEta(0),
+
+ fTreeVariableVertexZ(0),
+
+ fTreeVariableLeastNbrCrossedRows(0),
+ fTreeVariableLeastRatioCrossedRowsOverFindable(0),
+ fTreeVariableMultiplicity(0),
+ fTreeVariableMultiplicityMC(0),
+
+ fTreeVariableV0x(0),
+ fTreeVariableV0y(0),
+ fTreeVariableV0z(0),
+
+ fTreeVariableV0Px(0),
+ fTreeVariableV0Py(0),
+ fTreeVariableV0Pz(0),
+
+ fTreeVariableMCV0x(0),
+ fTreeVariableMCV0y(0),
+ fTreeVariableMCV0z(0),
+
+ fTreeVariableMCV0Px(0),
+ fTreeVariableMCV0Py(0),
+ fTreeVariableMCV0Pz(0),
+
+ fTreeVariablePVx(0),
+ fTreeVariablePVy(0),
+ fTreeVariablePVz(0),
+
+ fTreeVariableMCPVx(0),
+ fTreeVariableMCPVy(0),
+ fTreeVariableMCPVz(0),
+
+ fTreeVariableIsNonInjected(0),
+
+ fTreeVariableNegTrackStatus(0),
+ fTreeVariablePosTrackStatus(0),
+
//------------------------------------------------
// HISTOGRAMS
// --- Filled on an Event-by-event basis
fHistMultiplicityNoTPCOnly(0),
fHistMultiplicityNoTPCOnlyNoPileup(0),
+ f2dHistMultiplicityVsTrueBeforeTrigSel(0),
+ f2dHistMultiplicityVsTrueForTrigEvt(0),
+ f2dHistMultiplicityVsTrue(0),
+ f2dHistMultiplicityVsTrueNoTPCOnly(0),
+ f2dHistMultiplicityVsTrueNoTPCOnlyNoPileup(0),
+
+ //Raw Data for Vertex Z position estimator change
+ f2dHistMultiplicityVsVertexZBeforeTrigSel(0),
+ f2dHistMultiplicityVsVertexZForTrigEvt(0),
+ f2dHistMultiplicityVsVertexZ(0),
+ f2dHistMultiplicityVsVertexZNoTPCOnly(0),
+ f2dHistMultiplicityVsVertexZNoTPCOnlyNoPileup(0),
+
+ fHistGenVertexZBeforeTrigSel(0),
+ fHistGenVertexZForTrigEvt(0),
+ fHistGenVertexZ(0),
+ fHistGenVertexZNoTPCOnly(0),
+ fHistGenVertexZNoTPCOnlyNoPileup(0),
//------------------------------------------------
// PARTICLE HISTOGRAMS
f3dHistPrimAnalysisPtVsYVsMultLambda(0),
f3dHistPrimAnalysisPtVsYVsMultAntiLambda(0),
f3dHistPrimAnalysisPtVsYVsMultK0Short(0),
+ f3dHistPrimAnalysisPtVsYCMSVsMultLambda(0),
+ f3dHistPrimAnalysisPtVsYCMSVsMultAntiLambda(0),
+ f3dHistPrimAnalysisPtVsYCMSVsMultK0Short(0),
f3dHistPrimRawPtVsYVsMultLambda(0),
f3dHistPrimRawPtVsYVsMultAntiLambda(0),
f3dHistPrimRawPtVsYVsMultK0Short(0),
+ f3dHistPrimRawPtVsYCMSVsMultLambda(0),
+ f3dHistPrimRawPtVsYCMSVsMultAntiLambda(0),
+ f3dHistPrimRawPtVsYCMSVsMultK0Short(0),
+ f3dHistPrimRawPtVsYVsMultNonInjLambda(0),
+ f3dHistPrimRawPtVsYVsMultNonInjAntiLambda(0),
+ f3dHistPrimRawPtVsYVsMultNonInjK0Short(0),
+ f3dHistPrimRawPtVsYVsMultMCLambda(0),
+ f3dHistPrimRawPtVsYVsMultMCAntiLambda(0),
+ f3dHistPrimRawPtVsYVsMultMCK0Short(0),
+ f3dHistPrimRawPtVsYVsVertexZLambda(0),
+ f3dHistPrimRawPtVsYVsVertexZAntiLambda(0),
+ f3dHistPrimRawPtVsYVsVertexZK0Short(0),
f3dHistPrimCloseToPVPtVsYVsMultLambda(0),
f3dHistPrimCloseToPVPtVsYVsMultAntiLambda(0),
f3dHistPrimCloseToPVPtVsYVsMultK0Short(0),
f3dHistPrimRawPtVsYVsDecayLengthK0Short(0),
f3dHistGenPtVsYVsMultXiMinus(0),
f3dHistGenPtVsYVsMultXiPlus(0),
+ f3dHistGenPtVsYVsMultOmegaMinus(0),
+ f3dHistGenPtVsYVsMultOmegaPlus(0),
+ f3dHistGenSelectedPtVsYVsMultXiMinus(0),
+ f3dHistGenSelectedPtVsYVsMultXiPlus(0),
+ f3dHistGenSelectedPtVsYVsMultOmegaMinus(0),
+ f3dHistGenSelectedPtVsYVsMultOmegaPlus(0),
+ f3dHistGenPtVsYCMSVsMultXiMinus(0),
+ f3dHistGenPtVsYCMSVsMultXiPlus(0),
+ f3dHistGenPtVsYCMSVsMultOmegaMinus(0),
+ f3dHistGenPtVsYCMSVsMultOmegaPlus(0),
+ f3dHistGenSelectedPtVsYCMSVsMultXiMinus(0),
+ f3dHistGenSelectedPtVsYCMSVsMultXiPlus(0),
+ f3dHistGenSelectedPtVsYCMSVsMultOmegaMinus(0),
+ f3dHistGenSelectedPtVsYCMSVsMultOmegaPlus(0),
fHistPVx(0),
fHistPVy(0),
fHistPVz(0),
delete fTree;
fTree = 0x0;
}
+ //cleanup esd track cuts object too...
+ if (fESDtrackCuts){
+ delete fESDtrackCuts;
+ fESDtrackCuts = 0x0;
+ }
}
//________________________________________________________________________
OpenFile(2);
// Called once
+
+//------------------------------------------------
+
fTree = new TTree("fTree","V0Candidates");
//------------------------------------------------
-// fTree Branch definitions
+// fTree Branch definitions - V0 Tree
//------------------------------------------------
//-----------BASIC-INFO---------------------------
/* 1*/ fTree->Branch("fTreeVariablePrimaryStatus",&fTreeVariablePrimaryStatus,"fTreeVariablePrimaryStatus/I");
-/* 1*/ fTree->Branch("fTreeVariablePrimaryStatusMother",&fTreeVariablePrimaryStatusMother,"fTreeVariablePrimaryStatusMother/I");
+/* 2*/ fTree->Branch("fTreeVariablePrimaryStatusMother",&fTreeVariablePrimaryStatusMother,"fTreeVariablePrimaryStatusMother/I");
/* 2*/ fTree->Branch("fTreeVariableChi2V0",&fTreeVariableChi2V0,"Chi2V0/F");
/* 3*/ fTree->Branch("fTreeVariableDcaV0Daughters",&fTreeVariableDcaV0Daughters,"fTreeVariableDcaV0Daughters/F");
/* 4*/ fTree->Branch("fTreeVariableDcaPosToPrimVertex",&fTreeVariableDcaPosToPrimVertex,"fTreeVariableDcaPosToPrimVertex/F");
/*27*/ fTree->Branch("fTreeVariableV0CosineOfPointingAngle",&fTreeVariableV0CosineOfPointingAngle,"fTreeVariableV0CosineOfPointingAngle/F");
//-----------MULTIPLICITY-INFO--------------------
/*28*/ fTree->Branch("fTreeVariableMultiplicity",&fTreeVariableMultiplicity,"fTreeVariableMultiplicity/I");
+/*28*/ fTree->Branch("fTreeVariableMultiplicityMC",&fTreeVariableMultiplicityMC,"fTreeVariableMultiplicityMC/I");
//------------------------------------------------
/*29*/ fTree->Branch("fTreeVariableDistOverTotMom",&fTreeVariableDistOverTotMom,"fTreeVariableDistOverTotMom/F");
/*30*/ fTree->Branch("fTreeVariableNSigmasPosProton",&fTreeVariableNSigmasPosProton,"fTreeVariableNSigmasPosProton/F");
/*34*/ fTree->Branch("fTreeVariableNegEta",&fTreeVariableNegEta,"fTreeVariableNegEta/F");
/*35*/ fTree->Branch("fTreeVariablePosEta",&fTreeVariablePosEta,"fTreeVariablePosEta/F");
/*36*/ fTree->Branch("fTreeVariableV0CreationRadius",&fTreeVariableV0CreationRadius,"fTreeVariableV0CreationRadius/F");
+
+ if ( fkLightWeight == kFALSE ){ // these are debugging branches!
/*37*/ fTree->Branch("fTreeVariableIndexStatus",&fTreeVariableIndexStatus,"fTreeVariableIndexStatus/I");
/*38*/ fTree->Branch("fTreeVariableIndexStatusMother",&fTreeVariableIndexStatusMother,"fTreeVariableIndexStatusMother/I");
+ }
+
+/*39*/ fTree->Branch("fTreeVariableRunNumber",&fTreeVariableRunNumber,"fTreeVariableRunNumber/I");
+/*40*/ fTree->Branch("fTreeVariableEventNumber",&fTreeVariableEventNumber,"fTreeVariableEventNumber/l");
+ if ( fkLightWeight == kFALSE ){ // these are debugging branches!
+/*34*/ fTree->Branch("fTreeVariableVertexZ",&fTreeVariableVertexZ,"fTreeVariableVertexZ/F");
+ }
+
+ if ( fkLightWeight == kFALSE ){ // these are debugging branches!
+//-----------FOR CTAU DEBUGGING: Full Phase Space + Decay Position Info
+ 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");
+
+//-----------FOR CTAU DEBUGGING: Full Phase Space + Decay Position Info, perfect info from MC
+ fTree->Branch("fTreeVariableMCV0x",&fTreeVariableMCV0x,"fTreeVariableMCV0x/F");
+ fTree->Branch("fTreeVariableMCV0y",&fTreeVariableMCV0y,"fTreeVariableMCV0y/F");
+ fTree->Branch("fTreeVariableMCV0z",&fTreeVariableMCV0z,"fTreeVariableMCV0z/F");
+
+ fTree->Branch("fTreeVariableMCV0Px",&fTreeVariableMCV0Px,"fTreeVariableMCV0Px/F");
+ fTree->Branch("fTreeVariableMCV0Py",&fTreeVariableMCV0Py,"fTreeVariableMCV0Py/F");
+ fTree->Branch("fTreeVariableMCV0Pz",&fTreeVariableMCV0Pz,"fTreeVariableMCV0Pz/F");
+
+//-----------FOR CTAU DEBUGGING: Primary vertex info
+ fTree->Branch("fTreeVariablePVx",&fTreeVariablePVx,"fTreeVariablePVx/F");
+ fTree->Branch("fTreeVariablePVy",&fTreeVariablePVy,"fTreeVariablePVy/F");
+ fTree->Branch("fTreeVariablePVz",&fTreeVariablePVz,"fTreeVariablePVz/F");
+
+ fTree->Branch("fTreeVariableMCPVx",&fTreeVariableMCPVx,"fTreeVariableMCPVx/F");
+ fTree->Branch("fTreeVariableMCPVy",&fTreeVariableMCPVy,"fTreeVariableMCPVy/F");
+ fTree->Branch("fTreeVariableMCPVz",&fTreeVariableMCPVz,"fTreeVariableMCPVz/F");
+ }
+
+ fTree->Branch("fTreeVariableIsNonInjected",&fTreeVariableIsNonInjected,"fTreeVariableIsNonInjected/O"); //O for bOOlean...
+
+ if ( fkLightWeight == kFALSE ){ // these are debugging branches!
+ fTree->Branch("fTreeVariableNegTrackStatus",&fTreeVariableNegTrackStatus,"fTreeVariableNegTrackStatus/l");
+ fTree->Branch("fTreeVariablePosTrackStatus",&fTreeVariablePosTrackStatus,"fTreeVariablePosTrackStatus/l");
+ }
+
//------------------------------------------------
// Particle Identification Setup
//------------------------------------------------
AliInputEventHandler* inputHandler = (AliInputEventHandler*) (man->GetInputEventHandler());
fPIDResponse = inputHandler->GetPIDResponse();
+ // Multiplicity
+
+ if(! fESDtrackCuts ){
+ fESDtrackCuts = new AliESDtrackCuts();
+ }
+
//------------------------------------------------
// V0 Multiplicity Histograms
//------------------------------------------------
fListHistV0->Add(fHistMultiplicityNoTPCOnlyNoPileup);
}
+ //Raw Data for J/Psi paper Technique
+ //TH2F *f2dHistMultiplicityVsTrueBeforeTrigSel; //! multiplicity distribution
+ //TH2F *f2dHistMultiplicityVsTrueForTrigEvt; //! multiplicity distribution
+ //TH2F *f2dHistMultiplicityVsTrue; //! multiplicity distribution
+ //TH2F *f2dHistMultiplicityVsTrueNoTPCOnly; //! multiplicity distribution
+ //TH2F *f2dHistMultiplicityVsTrueNoTPCOnlyNoPileup; //! multiplicity distribution
+
+ if(! f2dHistMultiplicityVsTrueBeforeTrigSel) {
+ f2dHistMultiplicityVsTrueBeforeTrigSel = new TH2F("f2dHistMultiplicityVsTrueBeforeTrigSel",
+ "Tracks per event", 200, 0, 200, 200, 0, 200);
+ fListHistV0->Add(f2dHistMultiplicityVsTrueBeforeTrigSel);
+ }
+ if(! f2dHistMultiplicityVsTrueForTrigEvt) {
+ f2dHistMultiplicityVsTrueForTrigEvt = new TH2F("f2dHistMultiplicityVsTrueForTrigEvt",
+ "Tracks per event", 200, 0, 200, 200, 0, 200);
+ fListHistV0->Add(f2dHistMultiplicityVsTrueForTrigEvt);
+ }
+ if(! f2dHistMultiplicityVsTrue) {
+ f2dHistMultiplicityVsTrue = new TH2F("f2dHistMultiplicityVsTrue",
+ "Tracks per event", 200, 0, 200, 200, 0, 200);
+ fListHistV0->Add(f2dHistMultiplicityVsTrue);
+ }
+ if(! f2dHistMultiplicityVsTrueNoTPCOnly) {
+ f2dHistMultiplicityVsTrueNoTPCOnly = new TH2F("f2dHistMultiplicityVsTrueNoTPCOnly",
+ "Tracks per event", 200, 0, 200, 200, 0, 200);
+ fListHistV0->Add(f2dHistMultiplicityVsTrueNoTPCOnly);
+ }
+ if(! f2dHistMultiplicityVsTrueNoTPCOnlyNoPileup) {
+ f2dHistMultiplicityVsTrueNoTPCOnlyNoPileup = new TH2F("f2dHistMultiplicityVsTrueNoTPCOnlyNoPileup",
+ "Tracks per event", 200, 0, 200, 200, 0, 200);
+ fListHistV0->Add(f2dHistMultiplicityVsTrueNoTPCOnlyNoPileup);
+ }
+
+
+ //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);
+ }
+
+//Generated PVz test
+
+// TH1F *fHistGenVertexZBeforeTrigSel; //! multiplicity distribution
+// TH1F *fHistGenVertexZForTrigEvt; //! multiplicity distribution
+// TH1F *fHistGenVertexZ; //! multiplicity distribution
+// TH1F *fHistGenVertexZNoTPCOnly; //! multiplicity distribution
+// TH1F *fHistGenVertexZNoTPCOnlyNoPileup; //! multiplicity distribution
+
+ if(! fHistGenVertexZBeforeTrigSel) {
+ fHistGenVertexZBeforeTrigSel = new TH1F("fHistGenVertexZBeforeTrigSel",
+ "PV z position;Nbr of Evts;z",
+ 400, -20, 20);
+ fListHistV0->Add(fHistGenVertexZBeforeTrigSel);
+ }
+ if(! fHistGenVertexZForTrigEvt) {
+ fHistGenVertexZForTrigEvt = new TH1F("fHistGenVertexZForTrigEvt",
+ "PV z position;Nbr of Evts;z",
+ 400, -20, 20);
+ fListHistV0->Add(fHistGenVertexZForTrigEvt);
+ }
+ if(! fHistGenVertexZ) {
+ fHistGenVertexZ = new TH1F("fHistGenVertexZ",
+ "PV z position;Nbr of Evts;z",
+ 400, -20, 20);
+ fListHistV0->Add(fHistGenVertexZ);
+ }
+ if(! fHistGenVertexZNoTPCOnly) {
+ fHistGenVertexZNoTPCOnly = new TH1F("fHistGenVertexZNoTPCOnly",
+ "PV z position;Nbr of Evts;z",
+ 400, -20, 20);
+ fListHistV0->Add(fHistGenVertexZNoTPCOnly);
+ }
+ if(! fHistGenVertexZNoTPCOnlyNoPileup) {
+ fHistGenVertexZNoTPCOnlyNoPileup = new TH1F("fHistGenVertexZNoTPCOnlyNoPileup",
+ "PV z position;Nbr of Evts;z",
+ 400, -20, 20);
+ fListHistV0->Add(fHistGenVertexZNoTPCOnlyNoPileup);
+ }
+
+
//------------------------------------------------
// Generated Particle Histograms
//------------------------------------------------
fListHistV0->Add(f3dHistPrimRawPtVsYVsMultK0Short);
}
+ if(! f3dHistPrimRawPtVsYCMSVsMultLambda) {
+ f3dHistPrimRawPtVsYCMSVsMultLambda = new TH3F( "f3dHistPrimRawPtVsYCMSVsMultLambda", "Pt_{lambda} Vs Y_{#Lambda} Vs Multiplicity; Pt_{lambda} (GeV/c); Y_{#Lambda} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
+ fListHistV0->Add(f3dHistPrimRawPtVsYCMSVsMultLambda);
+ }
+ if(! f3dHistPrimRawPtVsYCMSVsMultAntiLambda) {
+ f3dHistPrimRawPtVsYCMSVsMultAntiLambda = new TH3F( "f3dHistPrimRawPtVsYCMSVsMultAntiLambda", "Pt_{antilambda} Vs Y_{#Lambda} Vs Multiplicity; Pt_{antilambda} (GeV/c); Y_{#Lambda} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
+ fListHistV0->Add(f3dHistPrimRawPtVsYCMSVsMultAntiLambda);
+ }
+ if(! f3dHistPrimRawPtVsYCMSVsMultK0Short) {
+ f3dHistPrimRawPtVsYCMSVsMultK0Short = new TH3F( "f3dHistPrimRawPtVsYCMSVsMultK0Short", "Pt_{K0S} Vs Y_{K0S} Vs Multiplicity; Pt_{K0S} (GeV/c); Y_{K0S} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
+ fListHistV0->Add(f3dHistPrimRawPtVsYCMSVsMultK0Short);
+ }
+
+//---> Non-injected particles
+
+ if(! f3dHistPrimRawPtVsYVsMultNonInjLambda) {
+ f3dHistPrimRawPtVsYVsMultNonInjLambda = new TH3F( "f3dHistPrimRawPtVsYVsMultNonInjLambda", "Pt_{lambda} Vs Y_{#Lambda} Vs Multiplicity; Pt_{lambda} (GeV/c); Y_{#Lambda} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
+ fListHistV0->Add(f3dHistPrimRawPtVsYVsMultNonInjLambda);
+ }
+ if(! f3dHistPrimRawPtVsYVsMultNonInjAntiLambda) {
+ f3dHistPrimRawPtVsYVsMultNonInjAntiLambda = new TH3F( "f3dHistPrimRawPtVsYVsMultNonInjAntiLambda", "Pt_{antilambda} Vs Y_{#Lambda} Vs Multiplicity; Pt_{antilambda} (GeV/c); Y_{#Lambda} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
+ fListHistV0->Add(f3dHistPrimRawPtVsYVsMultNonInjAntiLambda);
+ }
+ if(! f3dHistPrimRawPtVsYVsMultNonInjK0Short) {
+ f3dHistPrimRawPtVsYVsMultNonInjK0Short = new TH3F( "f3dHistPrimRawPtVsYVsMultNonInjK0Short", "Pt_{K0S} Vs Y_{K0S} Vs Multiplicity; Pt_{K0S} (GeV/c); Y_{K0S} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
+ fListHistV0->Add(f3dHistPrimRawPtVsYVsMultNonInjK0Short);
+ }
+
+//--- 3D Histo (Pt, Y, MultiplicityMC)
+
+ if(! f3dHistPrimRawPtVsYVsMultMCLambda) {
+ f3dHistPrimRawPtVsYVsMultMCLambda = new TH3F( "f3dHistPrimRawPtVsYVsMultMCLambda", "Pt_{lambda} Vs Y_{#Lambda} Vs Multiplicity; Pt_{lambda} (GeV/c); Y_{#Lambda} ; MultMC", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
+ fListHistV0->Add(f3dHistPrimRawPtVsYVsMultMCLambda);
+ }
+ if(! f3dHistPrimRawPtVsYVsMultMCAntiLambda) {
+ f3dHistPrimRawPtVsYVsMultMCAntiLambda = new TH3F( "f3dHistPrimRawPtVsYVsMultMCAntiLambda", "Pt_{antilambda} Vs Y_{#Lambda} Vs Multiplicity; Pt_{antilambda} (GeV/c); Y_{#Lambda} ; MultMC", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
+ fListHistV0->Add(f3dHistPrimRawPtVsYVsMultMCAntiLambda);
+ }
+ if(! f3dHistPrimRawPtVsYVsMultMCK0Short) {
+ f3dHistPrimRawPtVsYVsMultMCK0Short = new TH3F( "f3dHistPrimRawPtVsYVsMultMCK0Short", "Pt_{K0S} Vs Y_{K0S} Vs Multiplicity; Pt_{K0S} (GeV/c); Y_{K0S} ; MultMC", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
+ fListHistV0->Add(f3dHistPrimRawPtVsYVsMultMCK0Short);
+ }
+
+//--- 3D Histo (Pt, Y, VertexZ)
+
+ if(! f3dHistPrimRawPtVsYVsVertexZLambda) {
+ f3dHistPrimRawPtVsYVsVertexZLambda = new TH3F( "f3dHistPrimRawPtVsYVsVertexZLambda", "Pt_{lambda} Vs Y_{#Lambda} Vs VertexZiplicity; Pt_{lambda} (GeV/c); Y_{#Lambda} ; VertexZ", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,40,-10,10);
+ fListHistV0->Add(f3dHistPrimRawPtVsYVsVertexZLambda);
+ }
+ if(! f3dHistPrimRawPtVsYVsVertexZAntiLambda) {
+ f3dHistPrimRawPtVsYVsVertexZAntiLambda = new TH3F( "f3dHistPrimRawPtVsYVsVertexZAntiLambda", "Pt_{antilambda} Vs Y_{#Lambda} Vs VertexZiplicity; Pt_{antilambda} (GeV/c); Y_{#Lambda} ; VertexZ", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,40,-10,10);
+ fListHistV0->Add(f3dHistPrimRawPtVsYVsVertexZAntiLambda);
+ }
+ if(! f3dHistPrimRawPtVsYVsVertexZK0Short) {
+ f3dHistPrimRawPtVsYVsVertexZK0Short = new TH3F( "f3dHistPrimRawPtVsYVsVertexZK0Short", "Pt_{K0S} Vs Y_{K0S} Vs VertexZiplicity; Pt_{K0S} (GeV/c); Y_{K0S} ; VertexZ", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,40,-10,10);
+ fListHistV0->Add(f3dHistPrimRawPtVsYVsVertexZK0Short);
+ }
+
//--- 3D Histo (Pt, Y, Multiplicity), close to PV criterion
if(! f3dHistPrimCloseToPVPtVsYVsMultLambda) {
fListHistV0->Add(f3dHistPrimRawPtVsYVsDecayLengthK0Short);
}
-//--- 3D Histo (Pt, Y, Multiplicity) for generated charged Xi (feeddown)
+//--------------------------------------------------------------------------------------
+//--- 3D Histo (Pt, Y, Multiplicity) for generated XiMinus/Plus, all generated
if(! f3dHistGenPtVsYVsMultXiMinus) {
f3dHistGenPtVsYVsMultXiMinus = new TH3F( "f3dHistGenPtVsYVsMultXiMinus", "Pt_{#Xi} Vs Y_{#Xi} Vs Multiplicity; Pt_{cascade} (GeV/c); Y_{#Xi} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
f3dHistGenPtVsYVsMultXiPlus = new TH3F( "f3dHistGenPtVsYVsMultXiPlus", "Pt_{#Xi} Vs Y_{#Xi} Vs Multiplicity; Pt_{cascade} (GeV/c); Y_{#Xi} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
fListHistV0->Add(f3dHistGenPtVsYVsMultXiPlus);
}
+//--- 3D Histo (Pt, Y, Multiplicity) for generated OmegaMinus/Plus
+
+ if(! f3dHistGenPtVsYVsMultOmegaMinus) {
+ f3dHistGenPtVsYVsMultOmegaMinus = new TH3F( "f3dHistGenPtVsYVsMultOmegaMinus", "Pt_{#Omega} Vs Y_{#Omega} Vs Multiplicity; Pt_{cascade} (GeV/c); Y_{#Omega} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
+ fListHistV0->Add(f3dHistGenPtVsYVsMultOmegaMinus);
+ }
+ if(! f3dHistGenPtVsYVsMultOmegaPlus) {
+ f3dHistGenPtVsYVsMultOmegaPlus = new TH3F( "f3dHistGenPtVsYVsMultOmegaPlus", "Pt_{#Omega} Vs Y_{#Omega} Vs Multiplicity; Pt_{cascade} (GeV/c); Y_{#Omega} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
+ fListHistV0->Add(f3dHistGenPtVsYVsMultOmegaPlus);
+ }
+
+//CASCADEs, Y CMS
+
+ if(! f3dHistGenPtVsYCMSVsMultXiMinus) {
+ f3dHistGenPtVsYCMSVsMultXiMinus = new TH3F( "f3dHistGenPtVsYCMSVsMultXiMinus", "Pt_{#Xi} Vs Y_{#Xi} Vs Multiplicity; Pt_{cascade} (GeV/c); Y_{#Xi} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
+ fListHistV0->Add(f3dHistGenPtVsYCMSVsMultXiMinus);
+ }
+ if(! f3dHistGenPtVsYCMSVsMultXiPlus) {
+ f3dHistGenPtVsYCMSVsMultXiPlus = new TH3F( "f3dHistGenPtVsYCMSVsMultXiPlus", "Pt_{#Xi} Vs Y_{#Xi} Vs Multiplicity; Pt_{cascade} (GeV/c); Y_{#Xi} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
+ fListHistV0->Add(f3dHistGenPtVsYCMSVsMultXiPlus);
+ }
+//--- 3D Histo (Pt, Y, Multiplicity) for generated OmegaMinus/Plus
+
+ if(! f3dHistGenPtVsYCMSVsMultOmegaMinus) {
+ f3dHistGenPtVsYCMSVsMultOmegaMinus = new TH3F( "f3dHistGenPtVsYCMSVsMultOmegaMinus", "Pt_{#Omega} Vs Y_{#Omega} Vs Multiplicity; Pt_{cascade} (GeV/c); Y_{#Omega} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
+ fListHistV0->Add(f3dHistGenPtVsYCMSVsMultOmegaMinus);
+ }
+ if(! f3dHistGenPtVsYCMSVsMultOmegaPlus) {
+ f3dHistGenPtVsYCMSVsMultOmegaPlus = new TH3F( "f3dHistGenPtVsYCMSVsMultOmegaPlus", "Pt_{#Omega} Vs Y_{#Omega} Vs Multiplicity; Pt_{cascade} (GeV/c); Y_{#Omega} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
+ fListHistV0->Add(f3dHistGenPtVsYCMSVsMultOmegaPlus);
+ }
+
+
+
+//--------------------------------------------------------------------------------------
+//--- 3D Histo (Pt, Y, Multiplicity) for generated XiMinus/Plus, at selected analysis evts
+
+ if(! f3dHistGenSelectedPtVsYVsMultXiMinus) {
+ f3dHistGenSelectedPtVsYVsMultXiMinus = new TH3F( "f3dHistGenSelectedPtVsYVsMultXiMinus", "Pt_{#Xi} Vs Y_{#Xi} Vs Multiplicity; Pt_{cascade} (GeV/c); Y_{#Xi} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
+ fListHistV0->Add(f3dHistGenSelectedPtVsYVsMultXiMinus);
+ }
+ if(! f3dHistGenSelectedPtVsYVsMultXiPlus) {
+ f3dHistGenSelectedPtVsYVsMultXiPlus = new TH3F( "f3dHistGenSelectedPtVsYVsMultXiPlus", "Pt_{#Xi} Vs Y_{#Xi} Vs Multiplicity; Pt_{cascade} (GeV/c); Y_{#Xi} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
+ fListHistV0->Add(f3dHistGenSelectedPtVsYVsMultXiPlus);
+ }
+//--- 3D Histo (Pt, Y, Multiplicity) for generated OmegaMinus/Plus
+
+ if(! f3dHistGenSelectedPtVsYVsMultOmegaMinus) {
+ f3dHistGenSelectedPtVsYVsMultOmegaMinus = new TH3F( "f3dHistGenSelectedPtVsYVsMultOmegaMinus", "Pt_{#Omega} Vs Y_{#Omega} Vs Multiplicity; Pt_{cascade} (GeV/c); Y_{#Omega} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
+ fListHistV0->Add(f3dHistGenSelectedPtVsYVsMultOmegaMinus);
+ }
+ if(! f3dHistGenSelectedPtVsYVsMultOmegaPlus) {
+ f3dHistGenSelectedPtVsYVsMultOmegaPlus = new TH3F( "f3dHistGenSelectedPtVsYVsMultOmegaPlus", "Pt_{#Omega} Vs Y_{#Omega} Vs Multiplicity; Pt_{cascade} (GeV/c); Y_{#Omega} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
+ fListHistV0->Add(f3dHistGenSelectedPtVsYVsMultOmegaPlus);
+ }
+
+//CASCADES, analysis level, y CMS
+
+//--------------------------------------------------------------------------------------
+//--- 3D Histo (Pt, Y, Multiplicity) for generated XiMinus/Plus, at selected analysis evts
+
+ if(! f3dHistGenSelectedPtVsYCMSVsMultXiMinus) {
+ f3dHistGenSelectedPtVsYCMSVsMultXiMinus = new TH3F( "f3dHistGenSelectedPtVsYCMSVsMultXiMinus", "Pt_{#Xi} Vs Y_{#Xi} Vs Multiplicity; Pt_{cascade} (GeV/c); Y_{#Xi} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
+ fListHistV0->Add(f3dHistGenSelectedPtVsYCMSVsMultXiMinus);
+ }
+ if(! f3dHistGenSelectedPtVsYCMSVsMultXiPlus) {
+ f3dHistGenSelectedPtVsYCMSVsMultXiPlus = new TH3F( "f3dHistGenSelectedPtVsYCMSVsMultXiPlus", "Pt_{#Xi} Vs Y_{#Xi} Vs Multiplicity; Pt_{cascade} (GeV/c); Y_{#Xi} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
+ fListHistV0->Add(f3dHistGenSelectedPtVsYCMSVsMultXiPlus);
+ }
+//--- 3D Histo (Pt, Y, Multiplicity) for generated OmegaMinus/Plus
+
+ if(! f3dHistGenSelectedPtVsYCMSVsMultOmegaMinus) {
+ f3dHistGenSelectedPtVsYCMSVsMultOmegaMinus = new TH3F( "f3dHistGenSelectedPtVsYCMSVsMultOmegaMinus", "Pt_{#Omega} Vs Y_{#Omega} Vs Multiplicity; Pt_{cascade} (GeV/c); Y_{#Omega} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
+ fListHistV0->Add(f3dHistGenSelectedPtVsYCMSVsMultOmegaMinus);
+ }
+ if(! f3dHistGenSelectedPtVsYCMSVsMultOmegaPlus) {
+ f3dHistGenSelectedPtVsYCMSVsMultOmegaPlus = new TH3F( "f3dHistGenSelectedPtVsYCMSVsMultOmegaPlus", "Pt_{#Omega} Vs Y_{#Omega} Vs Multiplicity; Pt_{cascade} (GeV/c); Y_{#Omega} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
+ fListHistV0->Add(f3dHistGenSelectedPtVsYCMSVsMultOmegaPlus);
+ }
+
//----------------------------------
// Histos at analysis level
fListHistV0->Add(f3dHistPrimAnalysisPtVsYVsMultK0Short);
}
+ if(! f3dHistPrimAnalysisPtVsYCMSVsMultLambda) {
+ f3dHistPrimAnalysisPtVsYCMSVsMultLambda = new TH3F( "f3dHistPrimAnalysisPtVsYCMSVsMultLambda", "Pt_{lambda} Vs Y_{#Lambda} Vs Multiplicity; Pt_{lambda} (GeV/c); Y_{#Lambda} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
+ fListHistV0->Add(f3dHistPrimAnalysisPtVsYCMSVsMultLambda);
+ }
+ if(! f3dHistPrimAnalysisPtVsYCMSVsMultAntiLambda) {
+ f3dHistPrimAnalysisPtVsYCMSVsMultAntiLambda = new TH3F( "f3dHistPrimAnalysisPtVsYCMSVsMultAntiLambda", "Pt_{antilambda} Vs Y_{#Lambda} Vs Multiplicity; Pt_{antilambda} (GeV/c); Y_{#Lambda} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
+ fListHistV0->Add(f3dHistPrimAnalysisPtVsYCMSVsMultAntiLambda);
+ }
+ if(! f3dHistPrimAnalysisPtVsYCMSVsMultK0Short) {
+ f3dHistPrimAnalysisPtVsYCMSVsMultK0Short = new TH3F( "f3dHistPrimAnalysisPtVsYCMSVsMultK0Short", "Pt_{K0S} Vs Y_{K0S} Vs Multiplicity; Pt_{K0S} (GeV/c); Y_{K0S} ; Mult", lCustomNBins, 0., lCustomPtUpperLimit, 48, -1.2,1.2,lCustomNBinsMultiplicity,0,lCustomNBinsMultiplicity);
+ fListHistV0->Add(f3dHistPrimAnalysisPtVsYCMSVsMultK0Short);
+ }
+
//----------------------------------
// Primary Vertex Position Histos
//----------------------------------
return;
}
+ fTreeVariableRunNumber = lESDevent->GetRunNumber();
+ fTreeVariableEventNumber =
+ ( ( ((ULong64_t)lESDevent->GetPeriodNumber() ) << 36 ) |
+ ( ((ULong64_t)lESDevent->GetOrbitNumber () ) << 12 ) |
+ ((ULong64_t)lESDevent->GetBunchCrossNumber() ) );
+
lMCevent = MCEvent();
if (!lMCevent) {
Printf("ERROR: Could not retrieve MC event \n");
Int_t lMultiplicity = -100;
//testing purposes
- if(fkIsNuclear == kFALSE) lMultiplicity = AliESDtrackCuts::GetReferenceMultiplicity( lESDevent );
+ if(fkIsNuclear == kFALSE) lMultiplicity = fESDtrackCuts->GetReferenceMultiplicity(lESDevent, AliESDtrackCuts::kTrackletsITSTPC,0.5);
//---> If this is a nuclear collision, then go nuclear on "multiplicity" variable...
//---> Warning: Experimental
if(fkIsNuclear == kTRUE){
AliCentrality* centrality;
centrality = lESDevent->GetCentrality();
- lMultiplicity = ( ( Int_t ) ( centrality->GetCentralityPercentile( "V0M" ) ) );
+ lMultiplicity = ( ( Int_t ) ( centrality->GetCentralityPercentile( fCentralityEstimator.Data() ) ) );
if (centrality->GetQuality()>1) {
PostData(1, fListHistV0);
PostData(2, fTree);
Printf("Cascade loop %d - MC TParticle pointer to current stack particle = 0x0 ! Skip ...\n", iCurrentLabelStack );
continue;
}
- if ( TMath::Abs(lCurrentParticlePrimary->GetPdgCode()) == 3312 ) {
+ if ( TMath::Abs(lCurrentParticlePrimary->GetPdgCode()) == 3312 || TMath::Abs(lCurrentParticlePrimary->GetPdgCode()) == 3334 ) {
Double_t lRapXiMCPrimary = -100;
if( (lCurrentParticlePrimary->Energy() - lCurrentParticlePrimary->Pz() +1.e-13) != 0 ) {
if ( (lCurrentParticlePrimary->Energy() + lCurrentParticlePrimary->Pz()) / (lCurrentParticlePrimary->Energy() - lCurrentParticlePrimary->Pz() +1.e-13) !=0 ){
}
//=================================================================================
- // Xi Histograms for Feeddown - Primary Charged Xis
+ // Xi Histograms
if( lCurrentParticlePrimary->GetPdgCode() == 3312 ){
lPtCurrentPart = lCurrentParticlePrimary->Pt();
f3dHistGenPtVsYVsMultXiMinus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicity);
+ f3dHistGenPtVsYCMSVsMultXiMinus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicity);
}
if( lCurrentParticlePrimary->GetPdgCode() == -3312 ){
lPtCurrentPart = lCurrentParticlePrimary->Pt();
f3dHistGenPtVsYVsMultXiPlus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicity);
+ f3dHistGenPtVsYCMSVsMultXiPlus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicity);
+ }
+ // Omega Histograms
+ if( lCurrentParticlePrimary->GetPdgCode() == 3334 ){
+ lPtCurrentPart = lCurrentParticlePrimary->Pt();
+ f3dHistGenPtVsYVsMultOmegaMinus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicity);
+ f3dHistGenPtVsYCMSVsMultOmegaMinus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicity);
+ }
+ if( lCurrentParticlePrimary->GetPdgCode() == -3334 ){
+ lPtCurrentPart = lCurrentParticlePrimary->Pt();
+ f3dHistGenPtVsYVsMultOmegaPlus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicity);
+ f3dHistGenPtVsYCMSVsMultOmegaPlus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicity);
}
}
}
//----- End Loop on primary Xi, Omega ----------------------------------------------------------
+//--------- GENERATED NUMBER OF CHARGED PARTICLES
+// ---> Set Variables to Zero again
+// ---> Variable Definition
+
+ Long_t lNumberOfCharged = 0;
+
+//----- Loop on Stack ----------------------------------------------------------------
+ for (Int_t iCurrentLabelStack = 0; iCurrentLabelStack < (lMCstack->GetNtrack()); iCurrentLabelStack++)
+ {// This is the begining of the loop on tracks
+ TParticle* particleOne = lMCstack->Particle(iCurrentLabelStack);
+ if(!particleOne) continue;
+ if(!particleOne->GetPDG()) continue;
+ Double_t lThisCharge = particleOne->GetPDG()->Charge()/3.;
+ if(TMath::Abs(lThisCharge)<0.001) continue;
+ if(! (lMCstack->IsPhysicalPrimary(iCurrentLabelStack)) ) continue;
+
+ Double_t gpt = particleOne -> Pt();
+ Double_t geta = particleOne -> Eta();
+
+ if( TMath::Abs(geta) < 0.5) lNumberOfCharged++;
+ }//End of loop on tracks
+//----- End Loop on Stack ------------------------------------------------------------
+
+ //Double_t lpArapidityShift = 0.465;
+ Bool_t lStackNatural = kTRUE;
//----- Loop on Lambda, K0Short ----------------------------------------------------------------
for (Int_t iCurrentLabelStack = 0; iCurrentLabelStack < (lMCstack->GetNtrack()); iCurrentLabelStack++)
{// This is the begining of the loop on tracks
//Use Physical Primaries only for filling PrimRaw Histograms!
if ( lMCstack->IsPhysicalPrimary(iCurrentLabelStack)!=kTRUE ) continue;
+ lStackNatural = lMCevent->IsFromBGEvent(iCurrentLabelStack); //Is it?
+ if (!lStackNatural){
+ if (!(lCurrentParticleForLambdaCheck->GetFirstMother()<0))
+ {lStackNatural = kTRUE;} // because there are primaries (ALICE definition) not produced in the collision
+ }
+
if( lPdgcodeCurrentPart == 3122 ){
f3dHistPrimRawPtVsYVsMultLambda->Fill(lPtCurrentPart, lRapCurrentPart, lMultiplicity);
+ f3dHistPrimRawPtVsYCMSVsMultLambda->Fill(lPtCurrentPart, lRapCurrentPart+fpArapidityShift, lMultiplicity);
+ if(lStackNatural){f3dHistPrimRawPtVsYVsMultNonInjLambda->Fill(lPtCurrentPart, lRapCurrentPart, lMultiplicity);}
+ f3dHistPrimRawPtVsYVsMultMCLambda->Fill(lPtCurrentPart, lRapCurrentPart, lNumberOfCharged);
+ f3dHistPrimRawPtVsYVsVertexZLambda->Fill(lPtCurrentPart, lRapCurrentPart, mcPrimaryVtx.At(2));
if( TMath::Abs( lCurrentParticleForLambdaCheck->Eta() )<1.2 && lPtCurrentPart>2 ){
lHasHighPtLambda = kTRUE; //Keep track of events with Lambda within |eta|<1.2 and pt>2
}
}
if( lPdgcodeCurrentPart == -3122 ){
f3dHistPrimRawPtVsYVsMultAntiLambda->Fill(lPtCurrentPart, lRapCurrentPart, lMultiplicity);
+ f3dHistPrimRawPtVsYCMSVsMultAntiLambda->Fill(lPtCurrentPart, lRapCurrentPart+fpArapidityShift, lMultiplicity);
+ if(lStackNatural){f3dHistPrimRawPtVsYVsMultNonInjAntiLambda->Fill(lPtCurrentPart, lRapCurrentPart, lMultiplicity);}
+ f3dHistPrimRawPtVsYVsMultMCAntiLambda->Fill(lPtCurrentPart, lRapCurrentPart, lNumberOfCharged);
+ f3dHistPrimRawPtVsYVsVertexZAntiLambda->Fill(lPtCurrentPart, lRapCurrentPart, mcPrimaryVtx.At(2));
}
if( lPdgcodeCurrentPart == 310 ){
f3dHistPrimRawPtVsYVsMultK0Short->Fill(lPtCurrentPart, lRapCurrentPart, lMultiplicity);
+ f3dHistPrimRawPtVsYCMSVsMultK0Short->Fill(lPtCurrentPart, lRapCurrentPart+fpArapidityShift, lMultiplicity);
+ if(lStackNatural){f3dHistPrimRawPtVsYVsMultNonInjK0Short->Fill(lPtCurrentPart, lRapCurrentPart, lMultiplicity);}
+ f3dHistPrimRawPtVsYVsMultMCK0Short->Fill(lPtCurrentPart, lRapCurrentPart, lNumberOfCharged);
+ f3dHistPrimRawPtVsYVsVertexZK0Short->Fill(lPtCurrentPart, lRapCurrentPart, mcPrimaryVtx.At(2));
}
//Decay Length Acquisition=====================================================
Double_t decaylength = -1;
}//End of loop on tracks
//----- End Loop on Lambda, K0Short ------------------------------------------------------------
-// ---> Set Variables to Zero again
-// ---> Variable Definition
+
+ f2dHistMultiplicityVsTrueBeforeTrigSel->Fill ( lMultiplicity , lNumberOfCharged );
+
+ fTreeVariableMultiplicityMC = lNumberOfCharged;
+
+ fHistGenVertexZBeforeTrigSel->Fill( (mcPrimaryVtx.At(2)) );
lPdgcodeCurrentPart = 0;
lRapCurrentPart = 0;
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;
- }
+ //pA triggering: CINT7
+ if( fkSwitchINT7 ) isSelected = (maskIsSelected & AliVEvent::kINT7) == AliVEvent::kINT7;
+
//Standard Min-Bias Selection
if ( ! isSelected ) {
PostData(1, fListHistV0);
return;
}
+ f2dHistMultiplicityVsTrueForTrigEvt->Fill ( lMultiplicity , lNumberOfCharged );
+ fHistGenVertexZForTrigEvt->Fill( mcPrimaryVtx.At(2) );
//------------------------------------------------
// After Trigger Selection
//------------------------------------------------
fHistPVy->Fill( lPrimaryVtxPosition[1] );
fHistPVz->Fill( lPrimaryVtxPosition[2] );
+ f2dHistMultiplicityVsVertexZForTrigEvt->Fill( lMultiplicity, lPrimaryVtxPosition[2] );
+
//------------------------------------------------
// Primary Vertex Z position: SKIP
//------------------------------------------------
return;
}
+ f2dHistMultiplicityVsVertexZ->Fill( lMultiplicity, lPrimaryVtxPosition[2] );
+
lMagneticField = lESDevent->GetMagneticField( );
fHistV0MultiplicityForSelEvt ->Fill( lNumberOfV0s );
fHistMultiplicity->Fill(lMultiplicity);
-
+ f2dHistMultiplicityVsTrue->Fill ( lMultiplicity , lNumberOfCharged );
+ fHistGenVertexZ->Fill( (mcPrimaryVtx.At(2)) );
//------------------------------------------------
// SKIP: Events with well-established PVtx
//------------------------------------------------
PostData(2, fTree);
return;
}
+
+ f2dHistMultiplicityVsVertexZNoTPCOnly->Fill( lMultiplicity, lPrimaryVtxPosition[2] );
fHistV0MultiplicityForSelEvtNoTPCOnly ->Fill( lNumberOfV0s );
fHistMultiplicityNoTPCOnly->Fill(lMultiplicity);
-
+ f2dHistMultiplicityVsTrueNoTPCOnly->Fill ( lMultiplicity , lNumberOfCharged );
+ fHistGenVertexZNoTPCOnly->Fill( (mcPrimaryVtx.At(2)) );
//------------------------------------------------
// Pileup Rejection Studies
//------------------------------------------------
PostData(2, fTree);
return;
}
+ f2dHistMultiplicityVsVertexZNoTPCOnlyNoPileup->Fill( lMultiplicity, lPrimaryVtxPosition[2] );
fHistV0MultiplicityForSelEvtNoTPCOnlyNoPileup ->Fill( lNumberOfV0s );
fHistMultiplicityNoTPCOnlyNoPileup->Fill(lMultiplicity);
-
+ f2dHistMultiplicityVsTrueNoTPCOnlyNoPileup->Fill ( lMultiplicity , lNumberOfCharged );
+ fHistGenVertexZNoTPCOnlyNoPileup->Fill( (mcPrimaryVtx.At(2)) );
//Do control histograms without the IsFromVertexerZ events, but consider them in analysis...
if( ! (lESDevent->GetPrimaryVertex()->IsFromVertexerZ() ) ){
fHistPVxAnalysis->Fill( lPrimaryVtxPosition[0] );
}
}
+ fTreeVariableVertexZ = lPrimaryVtxPosition[2];
+
+ fTreeVariablePVx = lPrimaryVtxPosition[0];
+ fTreeVariablePVy = lPrimaryVtxPosition[1];
+ fTreeVariablePVz = lPrimaryVtxPosition[2];
+
+ fTreeVariableMCPVx = (mcPrimaryVtx.At(0));
+ fTreeVariableMCPVy = (mcPrimaryVtx.At(1));
+ fTreeVariableMCPVz = (mcPrimaryVtx.At(2));
+
//------------------------------------------------
// stack loop starts here
//------------------------------------------------
if( lPdgcodeCurrentPart == 3122 ){
f3dHistPrimAnalysisPtVsYVsMultLambda->Fill(lPtCurrentPart, lRapCurrentPart, lMultiplicity);
+ f3dHistPrimAnalysisPtVsYCMSVsMultLambda->Fill(lPtCurrentPart, lRapCurrentPart+fpArapidityShift, lMultiplicity);
}
if( lPdgcodeCurrentPart == -3122 ){
f3dHistPrimAnalysisPtVsYVsMultAntiLambda->Fill(lPtCurrentPart, lRapCurrentPart, lMultiplicity);
+ f3dHistPrimAnalysisPtVsYCMSVsMultAntiLambda->Fill(lPtCurrentPart, lRapCurrentPart+fpArapidityShift, lMultiplicity);
}
if( lPdgcodeCurrentPart == 310 ){
f3dHistPrimAnalysisPtVsYVsMultK0Short->Fill(lPtCurrentPart, lRapCurrentPart, lMultiplicity);
+ f3dHistPrimAnalysisPtVsYCMSVsMultK0Short->Fill(lPtCurrentPart, lRapCurrentPart+fpArapidityShift, lMultiplicity);
}
}
+//----- Loop on primary Xi, Omega --------------------------------------------------------------
+ for (Int_t iCurrentLabelStack = 0; iCurrentLabelStack < lNbMCPrimary; iCurrentLabelStack++)
+ {// This is the begining of the loop on primaries
+
+ TParticle* lCurrentParticlePrimary = 0x0;
+ lCurrentParticlePrimary = lMCstack->Particle( iCurrentLabelStack );
+ if(!lCurrentParticlePrimary){
+ Printf("Cascade loop %d - MC TParticle pointer to current stack particle = 0x0 ! Skip ...\n", iCurrentLabelStack );
+ continue;
+ }
+ if ( TMath::Abs(lCurrentParticlePrimary->GetPdgCode()) == 3312 || TMath::Abs(lCurrentParticlePrimary->GetPdgCode()) == 3334 ) {
+ Double_t lRapXiMCPrimary = -100;
+ if( (lCurrentParticlePrimary->Energy() - lCurrentParticlePrimary->Pz() +1.e-13) != 0 ) {
+ if ( (lCurrentParticlePrimary->Energy() + lCurrentParticlePrimary->Pz()) / (lCurrentParticlePrimary->Energy() - lCurrentParticlePrimary->Pz() +1.e-13) !=0 ){
+ lRapXiMCPrimary = 0.5*TMath::Log( (lCurrentParticlePrimary->Energy() + lCurrentParticlePrimary->Pz()) / (lCurrentParticlePrimary->Energy() - lCurrentParticlePrimary->Pz() +1.e-13) );
+ }
+ }
+
+ //=================================================================================
+ // Xi Histograms
+ if( lCurrentParticlePrimary->GetPdgCode() == 3312 ){
+ lPtCurrentPart = lCurrentParticlePrimary->Pt();
+ f3dHistGenSelectedPtVsYVsMultXiMinus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicity);
+ f3dHistGenSelectedPtVsYCMSVsMultXiMinus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicity);
+ }
+ if( lCurrentParticlePrimary->GetPdgCode() == -3312 ){
+ lPtCurrentPart = lCurrentParticlePrimary->Pt();
+ f3dHistGenSelectedPtVsYVsMultXiPlus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicity);
+ f3dHistGenSelectedPtVsYCMSVsMultXiPlus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicity);
+ }
+ // Omega Histograms
+ if( lCurrentParticlePrimary->GetPdgCode() == 3334 ){
+ lPtCurrentPart = lCurrentParticlePrimary->Pt();
+ f3dHistGenSelectedPtVsYVsMultOmegaMinus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicity);
+ f3dHistGenSelectedPtVsYCMSVsMultOmegaMinus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicity);
+ }
+ if( lCurrentParticlePrimary->GetPdgCode() == -3334 ){
+ lPtCurrentPart = lCurrentParticlePrimary->Pt();
+ f3dHistGenSelectedPtVsYVsMultOmegaPlus->Fill(lPtCurrentPart, lRapXiMCPrimary, lMultiplicity);
+ f3dHistGenSelectedPtVsYCMSVsMultOmegaPlus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicity);
+ }
+ }
+ }
+//----- End Loop on primary Xi, Omega ----------------------------------------------------------
+
//------------------------------------------------
// MAIN LAMBDA LOOP STARTS HERE
//------------------------------------------------
lPt = v0->Pt();
lRapK0Short = v0->RapK0Short();
lRapLambda = v0->RapLambda();
+
+ //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];
+
if ((lPt<fMinV0Pt)||(fMaxV0Pt<lPt)) continue;
UInt_t lKeyPos = (UInt_t)TMath::Abs(v0->GetPindex());
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
//________________________________________________________________________
//Set tree variables
fTreeVariablePID = pThisV0->GetPdgCode(); //PDG Code
fTreeVariablePtMC = pThisV0->Pt(); //Perfect Pt
+
+ fTreeVariableIsNonInjected = lMCevent->IsFromBGEvent(lblMotherPosV0Dghter); //Is it?
+ if (!fTreeVariableIsNonInjected){
+ if (!(pThisV0->GetFirstMother()<0))
+ {fTreeVariableIsNonInjected = kTRUE;} // because there are primaries (ALICE definition) not produced in the collision
+ }
+
+ //Set Variables for later filling
+ //Be careful: Vx, Vy, Vz: Creation vertex. So decay position is the
+ //Creation vertex of any one of the daughters!
+ fTreeVariableMCV0x = mcPosV0Dghter->Vx();
+ fTreeVariableMCV0y = mcPosV0Dghter->Vy();
+ fTreeVariableMCV0z = mcPosV0Dghter->Vz();
+
+ //Set Variables for later filling
+ fTreeVariableMCV0Px = pThisV0->Px();
+ fTreeVariableMCV0Py = pThisV0->Py();
+ fTreeVariableMCV0Pz = pThisV0->Pz();
+
//Only Interested if it's a Lambda, AntiLambda or K0s
//Avoid the Junction Bug! PYTHIA has particles with Px=Py=Pz=E=0 occasionally,
//having particle code 88 (unrecognized by PDG), for documentation purposes.
fTreeVariableNSigmasNegPion = fPIDResponse->NumberOfSigmasTPC( nTrack, AliPID::kPion );
//tDecayVertexV0[0],tDecayVertexV0[1],tDecayVertexV0[2]
- fTreeVariableDistOverTotMom = TMath::Sqrt(
+ Double_t lDistanceTravelled = TMath::Sqrt(
TMath::Power( tDecayVertexV0[0] - lBestPrimaryVtxPos[0] , 2) +
TMath::Power( tDecayVertexV0[1] - lBestPrimaryVtxPos[1] , 2) +
TMath::Power( tDecayVertexV0[2] - lBestPrimaryVtxPos[2] , 2)
);
fTreeVariableDistOverTotMom = 1e+5;
- if( lV0TotalMomentum + 1e-10 != 0 ) fTreeVariableDistOverTotMom /= (lV0TotalMomentum + 1e-10); //avoid division by zero, to be sure
+ if( lV0TotalMomentum + 1e-10 != 0 ) fTreeVariableDistOverTotMom = lDistanceTravelled / (lV0TotalMomentum + 1e-10); //avoid division by zero, to be sure
Double_t lMomentumPosTemp[3];
pTrack->GetPxPyPz(lMomentumPosTemp);
}// This is the end of the V0 loop
+//------------------------------------------------
+
// Post output data.
PostData(1, fListHistV0);
PostData(2, fTree);