AliAnalysisTaskExtractPerformanceV0::AliAnalysisTaskExtractPerformanceV0()
: AliAnalysisTaskSE(), fListHistV0(0), fTree(0), fPIDResponse(0), fESDtrackCuts(0),
fkIsNuclear ( kFALSE ),
- fkLowEnergyPP ( kFALSE ),
+ fkSwitchINT7 ( kFALSE ),
fkUseOnTheFly ( kFALSE ),
+ fkTakeAllTracks ( kFALSE ),
+ fpArapidityShift ( 0.465 ),
+//------------------------------------------------
+// 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),
//------------------------------------------------
// 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),
AliAnalysisTaskExtractPerformanceV0::AliAnalysisTaskExtractPerformanceV0(const char *name)
: AliAnalysisTaskSE(name), fListHistV0(0), fTree(0), fPIDResponse(0), fESDtrackCuts(0),
fkIsNuclear ( kFALSE ),
- fkLowEnergyPP ( kFALSE ),
+ fkSwitchINT7 ( kFALSE ),
fkUseOnTheFly ( kFALSE ),
-
+ fkTakeAllTracks ( kFALSE ),
+ fpArapidityShift ( 0.465 ),
+//------------------------------------------------
+// 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),
+
+
//------------------------------------------------
// HISTOGRAMS
// --- Filled on an Event-by-event basis
f3dHistPrimRawPtVsYVsMultLambda(0),
f3dHistPrimRawPtVsYVsMultAntiLambda(0),
f3dHistPrimRawPtVsYVsMultK0Short(0),
+ f3dHistPrimRawPtVsYVsMultNonInjLambda(0),
+ f3dHistPrimRawPtVsYVsMultNonInjAntiLambda(0),
+ f3dHistPrimRawPtVsYVsMultNonInjK0Short(0),
f3dHistPrimRawPtVsYVsMultMCLambda(0),
f3dHistPrimRawPtVsYVsMultMCAntiLambda(0),
f3dHistPrimRawPtVsYVsMultMCK0Short(0),
fTree->Branch("fTreeVariableMCPVy",&fTreeVariableMCPVy,"fTreeVariableMCPVy/F");
fTree->Branch("fTreeVariableMCPVz",&fTreeVariableMCPVz,"fTreeVariableMCPVz/F");
+ fTree->Branch("fTreeVariableIsNonInjected",&fTreeVariableIsNonInjected,"fTreeVariableIsNonInjected/O"); //O for bOOlean...
//------------------------------------------------
// Particle Identification Setup
//------------------------------------------------
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) {
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
//----------------------------------
}//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 ){
}
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));
}
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);
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);
}
}
if( !(pTrack->GetStatus() & AliESDtrack::kTPCrefit)) continue;
if( !(nTrack->GetStatus() & AliESDtrack::kTPCrefit)) continue;
- if ( ( ( pTrack->GetTPCClusterInfo(2,1) ) < 70 ) || ( ( nTrack->GetTPCClusterInfo(2,1) ) < 70 ) ) continue;
+ 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
//________________________________________________________________________
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!