// Adapted to pPb 5.02 TeV analysis: D. Colella, domenico.colella@ba.infn.it
// Aug-Sep 2014
// - Added the parameter fCollidingSystem, to distingish between pp and pPb procedures
-// -
//
//
//
const Int_t lNbVariables = 19 ;
//Array for the number of bins in each dimension :
Int_t lNbBinsPerVar[lNbVariables] = {0};
- lNbBinsPerVar[0] = 25; //DcaCascDaughters : [0.0,2.4,3.0] -> Rec.Cut = 2.0;
+ lNbBinsPerVar[0] = 25; //DcaCascDaughters : [0.0,2.5] -> Rec.Cut = 2.0;
lNbBinsPerVar[1] = 25; //DcaBachToPrimVertex : [0.0,0.24,100.0] -> Rec.Cut = 0.01;
- lNbBinsPerVar[2] = 60; //CascCosineOfPointingAngle : [0.94,1.0] -> Rec.Cut = 0.95;
+ lNbBinsPerVar[2] = 61; //CascCosineOfPointingAngle : [0.94,1.001] -> Rec.Cut = 0.95;
lNbBinsPerVar[3] = 40; //CascRadius : [0.0,3.9,1000.0] -> Rec.Cut = 0.2;
lNbBinsPerVar[4] = 30; //InvMassLambdaAsCascDghter : [1.1,1.3] -> Rec.Cut = 0.008;
- lNbBinsPerVar[5] = 20; //DcaV0Daughters : [0.0,2.0] -> Rec.Cut = 1.5;
+ lNbBinsPerVar[5] = 21; //DcaV0Daughters : [0.0,2.0] -> Rec.Cut = 1.5;
lNbBinsPerVar[6] = 201; //V0CosineOfPointingAngleToXi : [0.89,1.0] -> No Rec.Cut;
lNbBinsPerVar[7] = 40; //V0Radius : [0.0,3.9,1000.0] -> Rec.Cut = 0.2;
lNbBinsPerVar[8] = 40; //DcaV0ToPrimVertex : [0.0,0.39,110.0] -> Rec.Cut = 0.01;
}
//Setting the bin limits
//0 - DcaXiDaughters
- Double_t *lBinLim0 = new Double_t[ lNbBinsPerVar[0] + 1 ];
- for(Int_t i=0; i< lNbBinsPerVar[0]; i++) lBinLim0[i] = (Double_t)0.0 + (2.4 - 0.0)/(lNbBinsPerVar[0] - 1) * (Double_t)i;
- lBinLim0[ lNbBinsPerVar[0] ] = 3.0;
- fCFContCascadeCuts -> SetBinLimits(0, lBinLim0);
- delete [] lBinLim0;
+ //Double_t *lBinLim0 = new Double_t[ lNbBinsPerVar[0] + 1 ];
+ // for(Int_t i=0; i< lNbBinsPerVar[0]; i++) lBinLim0[i] = (Double_t)0.0 + (2.4 - 0.0)/(lNbBinsPerVar[0] - 1) * (Double_t)i;
+ // lBinLim0[ lNbBinsPerVar[0] ] = 3.0;
+ //fCFContCascadeCuts -> SetBinLimits(0, lBinLim0);
+ //delete [] lBinLim0;
+ fCFContCascadeCuts->SetBinLimits(0,0.0,2.5);
//1 - DcaToPrimVertexXi
Double_t *lBinLim1 = new Double_t[ lNbBinsPerVar[1] + 1 ];
for(Int_t i=0; i<lNbBinsPerVar[1]; i++) lBinLim1[i] = (Double_t)0.0 + (0.24 - 0.0)/(lNbBinsPerVar[1] - 1) * (Double_t)i;
fCFContCascadeCuts -> SetBinLimits(1, lBinLim1);
delete [] lBinLim1;
//2 - CascCosineOfPointingAngle
- fCFContCascadeCuts->SetBinLimits(2, 0.94, 1.);
+ fCFContCascadeCuts->SetBinLimits(2, 0.94, 1.001);
//3 - CascRadius
Double_t *lBinLim3 = new Double_t[ lNbBinsPerVar[3]+1 ];
for(Int_t i=0; i< lNbBinsPerVar[3]; i++) lBinLim3[i] = (Double_t)0.0 + (3.9 - 0.0 )/(lNbBinsPerVar[3] - 1) * (Double_t)i ;
//4 - InvMassLambdaAsCascDghter
fCFContCascadeCuts->SetBinLimits(4, 1.1, 1.13);
//5 - DcaV0Daughters
- fCFContCascadeCuts -> SetBinLimits(5, 0., 2.);
+ fCFContCascadeCuts -> SetBinLimits(5, 0., 2.1);
//6 - V0CosineOfPointingAngle
fCFContCascadeCuts -> SetBinLimits(6, 0.8, 1.001);
//7 - V0Radius
fCFContCascadeCuts->SetVarTitle(3, "R_{2d}(cascade decay) (cm)");
fCFContCascadeCuts->SetVarTitle(4, "M_{#Lambda}(as casc dghter) (GeV/c^{2})");
fCFContCascadeCuts->SetVarTitle(5, "Dca(V0 daughters) in Xi (cm)");
- fCFContCascadeCuts->SetVarTitle(6, "cos(V0 PA) to cascade vtx");
+ if (fCollidingSystem == "pp") fCFContCascadeCuts->SetVarTitle(6, "cos(V0 PA) to cascade vtx");
+ else if (fCollidingSystem == "pPb") fCFContCascadeCuts->SetVarTitle(6, "cos(V0 PA) to primary vtx");
fCFContCascadeCuts->SetVarTitle(7, "R_{2d}(V0 decay) (cm)");
fCFContCascadeCuts->SetVarTitle(8, "ImpactParamToPV(V0) (cm)");
fCFContCascadeCuts->SetVarTitle(9, "ImpactParamToPV(Pos) (cm)");
if (vertex->GetNContributors() < 1) {
vertex = lESDevent->GetPrimaryVertexSPD();
if (vertex->GetNContributors() < 1) fHasVertex = kFALSE;
- else fHasVertex = kTRUE;
+ else fHasVertex = kTRUE;
TString vtxTyp = vertex->GetTitle();
Double_t cov[6]={0};
vertex->GetCovarianceMatrix(cov);
Double_t zRes = TMath::Sqrt(cov[5]);
if (vtxTyp.Contains("vertexer:Z") && (zRes>0.25)) fHasVertex = kFALSE;
+ } else fHasVertex = kTRUE;
+ if (fHasVertex == kFALSE) {
+ AliWarning("Pb / No SPD prim. vertex nor prim. Tracking vertex ... return !");
+ PostData(1, fListHistCascade);
+ PostData(2, fCFContCascadePIDXiMinus);
+ PostData(3, fCFContCascadePIDXiPlus);
+ PostData(4, fCFContCascadePIDOmegaMinus);
+ PostData(5, fCFContCascadePIDOmegaPlus);
+ PostData(6, fCFContCascadeCuts);
+ return;
}
- else fHasVertex = kTRUE;
if (fUtils->IsFirstEventInChunk(lESDevent)) { //Is First event in chunk rejection: Still present!
- AliWarning("Pb / No SPD prim. vertex nor prim. Tracking vertex ... return !");
+ AliWarning("Pb / This is the first event in the chunk! ... return !");
PostData(1, fListHistCascade);
PostData(2, fCFContCascadePIDXiMinus);
PostData(3, fCFContCascadePIDXiPlus);
if (vertex->GetNContributors() < 1) {
vertex = lAODevent->GetPrimaryVertexSPD();
if (vertex->GetNContributors() < 1) fHasVertex = kFALSE;
- else fHasVertex = kTRUE;
+ else fHasVertex = kTRUE;
TString vtxTyp = vertex->GetTitle();
Double_t cov[6]={0};
vertex->GetCovarianceMatrix(cov);
Double_t zRes = TMath::Sqrt(cov[5]);
if (vtxTyp.Contains("vertexer:Z") && (zRes>0.25)) fHasVertex = kFALSE;
- }
- else fHasVertex = kTRUE;
- if (fHasVertex == kFALSE) { //Is First event in chunk rejection: Still present! //FIXME
+ } else fHasVertex = kTRUE;
+ if (fHasVertex == kFALSE) {
AliWarning("Pb / No SPD prim. vertex nor prim. Tracking vertex ... return !");
PostData(1, fListHistCascade);
PostData(2, fCFContCascadePIDXiMinus);
PostData(5, fCFContCascadePIDOmegaPlus);
PostData(6, fCFContCascadeCuts);
return;
+ }
+ if (fHasVertex == kFALSE) { //Is First event in chunk rejection: Still present! //FIXME
+ AliWarning("Pb / This is the first event in the chunk! ... return !");
+ PostData(1, fListHistCascade);
+ PostData(2, fCFContCascadePIDXiMinus);
+ PostData(3, fCFContCascadePIDXiPlus);
+ PostData(4, fCFContCascadePIDOmegaMinus);
+ PostData(5, fCFContCascadePIDOmegaPlus);
+ PostData(6, fCFContCascadeCuts);
+ return;
}
// - Take the number of cascades and tracks after TPConly selection
ncascadesForSelEvtNoTPCOnly = lAODevent->GetNumberOfCascades();
//-----------------------------------------
// - Extra-selection for cascade candidates
if (fkExtraSelections) { //in AliCascadeVertexer
- if (lDcaXiDaughters > 0.3) continue;
- if (lXiCosineOfPointingAngle < 0.999 ) continue;
- if (lDcaV0ToPrimVertexXi < 0.05) continue;
- if (lDcaBachToPrimVertexXi < 0.03) continue;
- //if (TMath::Abs(lInvMassLambdaAsCascDghter-1.11568) > 0.006 ) continue;
- if (lDcaV0DaughtersXi > 1.) continue;
- if (lV0CosineOfPointingAngleXi < 0.998) continue;
- if (lDcaPosToPrimVertexXi < 0.1) continue;
- if (lDcaNegToPrimVertexXi < 0.1) continue;
- if (lXiRadius < .9) continue;
- //if (lXiRadius > 100) continue;
- if (lV0RadiusXi < 0.9) continue;
- //if (lV0RadiusXi > 100) continue;
+ if (lDcaXiDaughters > 0.3) continue; // in AliCascadeVertexer
+ if (lXiCosineOfPointingAngle < 0.999 ) continue; // in AliCascadeVertexer
+ if (lDcaV0ToPrimVertexXi < 0.05) continue; // in AliCascadeVertexer
+ if (lDcaBachToPrimVertexXi < 0.03) continue; // in AliCascadeVertexer
+ if (lDcaV0DaughtersXi > 1.) continue; // in AliV0vertexer
+ if ((fCollidingSystem == "pp") && (lV0toXiCosineOfPointingAngle < 0.998)) continue; // in AliV0vertexer
+ if ((fCollidingSystem == "pPb") && (lV0CosineOfPointingAngleXi < 0.998)) continue; // in AliV0vertexer
+ if (lDcaPosToPrimVertexXi < 0.1) continue; // in AliV0vertexer
+ if (lDcaNegToPrimVertexXi < 0.1) continue; // in AliV0vertexer
+ if (lXiRadius < .9) continue; // in AliCascadeVertexer
+ if (lV0RadiusXi < 0.9) continue; // in AliV0vertexer
}
- //----------------------------------------------------------------------------------------------------
- // - Around effective masses. Change mass hypotheses to cover all the possibilities: Xi-/+, Omega -/+
+ //---------------------------------------------------------------------------------------------------
+ // - Around effective masses. Change mass hypotheses to cover all the possibilities: Xi-/+, Omega-/+
if ( bachTrackXi->Charge() < 0 ) {
//Calculate the effective mass of the Xi- candidate: Xi- hyp. (pdg code 3312)
lV0quality = 0.;
lContainerCutVars[3] = lXiRadius;
lContainerCutVars[4] = lInvMassLambdaAsCascDghter;
lContainerCutVars[5] = lDcaV0DaughtersXi;
- lContainerCutVars[6] = lV0toXiCosineOfPointingAngle;
+ if (fCollidingSystem == "pp") lContainerCutVars[6] = lV0toXiCosineOfPointingAngle;
+ else if (fCollidingSystem == "pPb") lContainerCutVars[6] = lV0CosineOfPointingAngleXi;
lContainerCutVars[7] = lV0RadiusXi;
lContainerCutVars[8] = lDcaV0ToPrimVertexXi;
lContainerCutVars[9] = lDcaPosToPrimVertexXi;