fEtaRefMult ( 0.5 ),
fkRunVertexers ( kFALSE ),
fkCheckSwapping( kFALSE ),
+fkSelectCentrality (kFALSE),
+fCentSel_Low(0.0),
+fCentSel_High(0.0),
+fLowPtCutoff(0.0),
//------------------------------------------------
// Tree Variables
//------------------------------------------------
fTreeCascVarkITSRefitNegative(0),
fTreeCascVarkITSRefitPositive(0),
+ fTreeCascVarNegClusters(0),
+ fTreeCascVarPosClusters(0),
+ fTreeCascVarBachClusters(0),
+ fTreeCascVarNegSharedClusters(0),
+ fTreeCascVarPosSharedClusters(0),
+ fTreeCascVarBachSharedClusters(0),
+
fTreeCascVarEvHasXiMinus(0),
fTreeCascVarEvHasXiPlus(0),
fTreeCascVarEvHasOmegaMinus(0),
fTreeCascVarEvHasVeryLowPtLambda(0),
fTreeCascVarEvHasVeryLowPtAntiLambda(0),
+ fTreeCascVarBadCascadeJai(0),
+ fTreeCascVarDeltaDCA(0),
+
//------------------------------------------------
// HISTOGRAMS
// --- Filled on an Event-by-event basis
f3dHistGenSelectedPtVsYCMSVsMultV0AXiPlus(0),
f3dHistGenSelectedPtVsYCMSVsMultV0AOmegaMinus(0),
f3dHistGenSelectedPtVsYCMSVsMultV0AOmegaPlus(0),
+f3dHistGenSelectedPrimPtVsYCMSVsMultV0AXiMinus(0),
+f3dHistGenSelectedPrimPtVsYCMSVsMultV0AXiPlus(0),
+f3dHistGenSelectedPrimPtVsYCMSVsMultV0AOmegaMinus(0),
+f3dHistGenSelectedPrimPtVsYCMSVsMultV0AOmegaPlus(0),
//ZNA
fEtaRefMult ( 0.5 ),
fkRunVertexers ( kFALSE ),
fkCheckSwapping( kFALSE ),
+fkSelectCentrality (kFALSE),
+fCentSel_Low(0.0),
+fCentSel_High(0.0),
+fLowPtCutoff(0.0),
//------------------------------------------------
// Tree Variables
//------------------------------------------------
fTreeCascVarkITSRefitBachelor(0),
fTreeCascVarkITSRefitNegative(0),
fTreeCascVarkITSRefitPositive(0),
+
+ fTreeCascVarNegClusters(0),
+ fTreeCascVarPosClusters(0),
+ fTreeCascVarBachClusters(0),
+ fTreeCascVarNegSharedClusters(0),
+ fTreeCascVarPosSharedClusters(0),
+ fTreeCascVarBachSharedClusters(0),
fTreeCascVarEvHasXiMinus(0),
fTreeCascVarEvHasXiPlus(0),
fTreeCascVarEvHasVeryLowPtOmegaPlus(0),
fTreeCascVarEvHasVeryLowPtLambda(0),
fTreeCascVarEvHasVeryLowPtAntiLambda(0),
+
+ fTreeCascVarBadCascadeJai(0),
+ fTreeCascVarDeltaDCA(0),
//------------------------------------------------
// HISTOGRAMS
f3dHistGenSelectedPtVsYCMSVsMultV0AXiPlus(0),
f3dHistGenSelectedPtVsYCMSVsMultV0AOmegaMinus(0),
f3dHistGenSelectedPtVsYCMSVsMultV0AOmegaPlus(0),
+f3dHistGenSelectedPrimPtVsYCMSVsMultV0AXiMinus(0),
+f3dHistGenSelectedPrimPtVsYCMSVsMultV0AXiPlus(0),
+f3dHistGenSelectedPrimPtVsYCMSVsMultV0AOmegaMinus(0),
+f3dHistGenSelectedPrimPtVsYCMSVsMultV0AOmegaPlus(0),
//ZNA
/*21*/ fTreeCascade->Branch("fTreeCascVarV0CosPointingAngleSpecial",&fTreeCascVarV0CosPointingAngleSpecial,"fTreeCascVarV0CosPointingAngleSpecial/F");
/*22*/ fTreeCascade->Branch("fTreeCascVarV0Radius",&fTreeCascVarV0Radius,"fTreeCascVarV0Radius/F");
/*23*/ fTreeCascade->Branch("fTreeCascVarLeastNbrClusters",&fTreeCascVarLeastNbrClusters,"fTreeCascVarLeastNbrClusters/I");
+
+/*23*/ fTreeCascade->Branch("fTreeCascVarNegClusters",&fTreeCascVarNegClusters,"fTreeCascVarNegClusters/I");
+/*23*/ fTreeCascade->Branch("fTreeCascVarPosClusters",&fTreeCascVarPosClusters,"fTreeCascVarPosClusters/I");
+/*23*/ fTreeCascade->Branch("fTreeCascVarBachClusters",&fTreeCascVarBachClusters,"fTreeCascVarBachClusters/I");
+/*23*/ fTreeCascade->Branch("fTreeCascVarNegSharedClusters",&fTreeCascVarNegSharedClusters,"fTreeCascVarNegSharedClusters/I");
+/*23*/ fTreeCascade->Branch("fTreeCascVarPosSharedClusters",&fTreeCascVarPosSharedClusters,"fTreeCascVarPosSharedClusters/I");
+/*23*/ fTreeCascade->Branch("fTreeCascVarBachSharedClusters",&fTreeCascVarBachSharedClusters,"fTreeCascVarBachSharedClusters/I");
//-----------MULTIPLICITY-INFO--------------------
/*24*/ fTreeCascade->Branch("fTreeCascVarMultiplicity",&fTreeCascVarMultiplicity,"fTreeCascVarMultiplicity/I");
/*24*/ fTreeCascade->Branch("fTreeCascVarMultiplicityV0A",&fTreeCascVarMultiplicityV0A,"fTreeCascVarMultiplicityV0A/I");
/*29*/ fTreeCascade->Branch("fTreeCascVarkITSRefitNegative",&fTreeCascVarkITSRefitNegative,"fTreeCascVarkITSRefitNegative/O");
/*29*/ fTreeCascade->Branch("fTreeCascVarkITSRefitPositive",&fTreeCascVarkITSRefitPositive,"fTreeCascVarkITSRefitPositive/O");
+ fTreeCascade->Branch("fTreeCascVarNegClusters",&fTreeCascVarNegClusters,"fTreeCascVarNegClusters/I");
+ fTreeCascade->Branch("fTreeCascVarPosClusters",&fTreeCascVarPosClusters,"fTreeCascVarPosClusters/I");
+ fTreeCascade->Branch("fTreeCascVarBachClusters",&fTreeCascVarBachClusters,"fTreeCascVarBachClusters/I");
+ fTreeCascade->Branch("fTreeCascVarNegSharedClusters",&fTreeCascVarNegSharedClusters,"fTreeCascVarNegSharedClusters/I");
+ fTreeCascade->Branch("fTreeCascVarPosSharedClusters",&fTreeCascVarPosSharedClusters,"fTreeCascVarPosSharedClusters/I");
+ fTreeCascade->Branch("fTreeCascVarBachSharedClusters",&fTreeCascVarBachSharedClusters,"fTreeCascVarBachSharedClusters/I");
+
/*39*/ fTreeCascade->Branch("fTreeCascVarEvHasXiMinus", &fTreeCascVarEvHasXiMinus, "fTreeCascVarEvHasXiMinus/O");
/*39*/ fTreeCascade->Branch("fTreeCascVarEvHasXiPlus", &fTreeCascVarEvHasXiPlus, "fTreeCascVarEvHasXiPlus/O");
/*39*/ fTreeCascade->Branch("fTreeCascVarEvHasOmegaMinus",&fTreeCascVarEvHasOmegaMinus,"fTreeCascVarEvHasOmegaMinus/O");
/*39*/ fTreeCascade->Branch("fTreeCascVarEvHasVeryLowPtLambda", &fTreeCascVarEvHasVeryLowPtLambda, "fTreeCascVarEvHasVeryLowPtLambda/O");
/*39*/ fTreeCascade->Branch("fTreeCascVarEvHasVeryLowPtAntiLambda",&fTreeCascVarEvHasVeryLowPtAntiLambda,"fTreeCascVarEvHasVeryLowPtAntiLambda/O");
+ fTreeCascade->Branch("fTreeCascVarBadCascadeJai",&fTreeCascVarBadCascadeJai,"fTreeCascVarBadCascadeJai/O");
+ fTreeCascade->Branch("fTreeCascVarDeltaDCA",&fTreeCascVarDeltaDCA,"fTreeCascVarDeltaDCA/F");
+
//------------------------------------------------
// Particle Identification Setup
//------------------------------------------------
if(fkIsNuclear) fListHist->Add(f3dHistGenSelectedPtVsYCMSVsMultV0AOmegaPlus);
}
+ //Cross-check primary selection criteria
+ //Should not impact much but inspired by rumors of DPMJet issues with primary selection (?)
+
+ if(! f3dHistGenSelectedPrimPtVsYCMSVsMultV0AXiMinus) {
+ f3dHistGenSelectedPrimPtVsYCMSVsMultV0AXiMinus = new TH3F( "f3dHistGenSelectedPrimPtVsYCMSVsMultV0AXiMinus", "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);
+ if(fkIsNuclear) fListHist->Add(f3dHistGenSelectedPrimPtVsYCMSVsMultV0AXiMinus);
+ }
+ if(! f3dHistGenSelectedPrimPtVsYCMSVsMultV0AXiPlus) {
+ f3dHistGenSelectedPrimPtVsYCMSVsMultV0AXiPlus = new TH3F( "f3dHistGenSelectedPrimPtVsYCMSVsMultV0AXiPlus", "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);
+ if(fkIsNuclear) fListHist->Add(f3dHistGenSelectedPrimPtVsYCMSVsMultV0AXiPlus);
+ }
+ //--- 3D Histo (Pt, Y, Multiplicity) for generated OmegaMinus/Plus
+
+ if(! f3dHistGenSelectedPrimPtVsYCMSVsMultV0AOmegaMinus) {
+ f3dHistGenSelectedPrimPtVsYCMSVsMultV0AOmegaMinus = new TH3F( "f3dHistGenSelectedPrimPtVsYCMSVsMultV0AOmegaMinus", "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);
+ if(fkIsNuclear) fListHist->Add(f3dHistGenSelectedPrimPtVsYCMSVsMultV0AOmegaMinus);
+ }
+ if(! f3dHistGenSelectedPrimPtVsYCMSVsMultV0AOmegaPlus) {
+ f3dHistGenSelectedPrimPtVsYCMSVsMultV0AOmegaPlus = new TH3F( "f3dHistGenSelectedPrimPtVsYCMSVsMultV0AOmegaPlus", "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);
+ if(fkIsNuclear) fListHist->Add(f3dHistGenSelectedPrimPtVsYCMSVsMultV0AOmegaPlus);
+ }
//======================================================================================
//--------------------------------------------------------------------------------------
return;
}
}
+
+ if( fkSelectCentrality ){
+ if( lMultiplicity < fCentSel_Low || lMultiplicity >= fCentSel_High ){
+ //Event is outside desired centrality centrality in V0M!
+ PostData(1, fListHist);
+ PostData(2, fTreeCascade);
+ return;
+ }
+ }
+
//Set variable for filling tree afterwards!
//---> pp case......: GetReferenceMultiplicity
}
//----- End Loop on primary Xi, Omega ----------------------------------------------------------
+
+ //----- Loop on primary Xi, Omega --------------------------------------------------------------
+ for (Int_t iCurrentLabelStack = 0; iCurrentLabelStack < (lMCstack->GetNtrack()); 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) );
+ }
+ }
+ //IsPhysicalPrimary: Cross-check with old index test
+ // (cascades -> negligible difference ?... )
+ if ( lMCstack->IsPhysicalPrimary(iCurrentLabelStack)!=kTRUE ) continue;
+
+ //=================================================================================
+ // Xi Histograms
+ if( lCurrentParticlePrimary->GetPdgCode() == 3312 ){
+ lPtCurrentPart = lCurrentParticlePrimary->Pt();
+ f3dHistGenSelectedPrimPtVsYCMSVsMultV0AXiMinus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicityV0A);
+ }
+ if( lCurrentParticlePrimary->GetPdgCode() == -3312 ){
+ lPtCurrentPart = lCurrentParticlePrimary->Pt();
+ f3dHistGenSelectedPrimPtVsYCMSVsMultV0AXiPlus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicityV0A);
+ }
+ // Omega Histograms
+ if( lCurrentParticlePrimary->GetPdgCode() == 3334 ){
+ lPtCurrentPart = lCurrentParticlePrimary->Pt();
+ f3dHistGenSelectedPrimPtVsYCMSVsMultV0AOmegaMinus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicityV0A);
+ }
+ if( lCurrentParticlePrimary->GetPdgCode() == -3334 ){
+ lPtCurrentPart = lCurrentParticlePrimary->Pt();
+ f3dHistGenSelectedPrimPtVsYCMSVsMultV0AOmegaPlus->Fill(lPtCurrentPart, lRapXiMCPrimary+fpArapidityShift, lMultiplicityV0A);
+ }
+ }
+ }
+ //----- End Loop on primary Xi, Omega ----------------------------------------------------------
+
+
//------------------------------------------------
// MAIN CASCADE LOOP STARTS HERE
//------------------------------------------------
fTreeCascVarNegEta = nTrackXi->Eta();
fTreeCascVarBachEta = bachTrackXi->Eta();
+ //Save shared clusters information
+ fTreeCascVarNegSharedClusters = nTrackXi->GetTPCnclsS(0,159);
+ fTreeCascVarPosSharedClusters = pTrackXi->GetTPCnclsS(0,159);
+ fTreeCascVarBachSharedClusters = bachTrackXi->GetTPCnclsS(0,159);
+
Double_t lBMom[3], lNMom[3], lPMom[3];
xi->GetBPxPyPz( lBMom[0], lBMom[1], lBMom[2] );
xi->GetPPxPyPz( lPMom[0], lPMom[1], lPMom[2] );
lNegTPCClusters = nTrackXi->GetTPCNcls();
lBachTPCClusters = bachTrackXi->GetTPCNcls();
+ fTreeCascVarNegClusters = lNegTPCClusters;
+ fTreeCascVarPosClusters = lPosTPCClusters;
+ fTreeCascVarBachClusters = lBachTPCClusters;
+
fTreeCascVarkITSRefitBachelor = kTRUE;
fTreeCascVarkITSRefitNegative = kTRUE;
fTreeCascVarkITSRefitPositive = kTRUE;
// Swapped MC ASSOCIATION ENDS HERE
//----------------------------------------
+ //------------------------------------------------
+ // Jai Salzwedel's femto-cut: better V0 exists
+ //------------------------------------------------
+
+ fTreeCascVarBadCascadeJai = kFALSE;
+ fTreeCascVarDeltaDCA = -100;
+ Float_t DCAV0DaughtersDiff = -100;
+ for (Int_t iv0=0; iv0<lESDevent->GetNumberOfV0s(); iv0++) {
+ AliESDv0 *v0 = lESDevent->GetV0(iv0);
+ UInt_t posV0TrackIdx = (UInt_t) v0->GetPindex();
+ UInt_t negV0TrackIdx = (UInt_t) v0->GetNindex();
+ if ((posV0TrackIdx == lIdxPosXi) && (negV0TrackIdx == lIdxNegXi)) continue;
+ // if both tracks are the same ones as the cascades V0 daughter tracks, then the V0 belongs to the cascade being analysed; so avoid it
+ if ((posV0TrackIdx == lIdxPosXi) || (negV0TrackIdx == lIdxNegXi)) {
+ DCAV0DaughtersDiff = lDcaV0DaughtersXi - v0->GetDcaV0Daughters();
+ if( fTreeCascVarDeltaDCA < DCAV0DaughtersDiff ) fTreeCascVarDeltaDCA = DCAV0DaughtersDiff;
+ if ( lDcaV0DaughtersXi > v0->GetDcaV0Daughters() ) { // DCA comparison criterion
+ fTreeCascVarBadCascadeJai = kTRUE;
+ } //end DCA comparison
+ } // end shares a daughter check
+ } //end V0 loop
//------------------------------------------------
// Set Variables for adding to tree
//Xi Mass window: 150MeV wide
//Omega mass window: 150MeV wide
- if( (fTreeCascVarMassAsXi<1.32+0.075&&fTreeCascVarMassAsXi>1.32-0.075) ||
- (fTreeCascVarMassAsOmega<1.68+0.075&&fTreeCascVarMassAsOmega>1.68-0.075) ){
- fTreeCascade->Fill();
- }
+ if( (fTreeCascVarMassAsXi<1.32+0.075&&fTreeCascVarMassAsXi>1.32-0.075) ||
+ (fTreeCascVarMassAsOmega<1.68+0.075&&fTreeCascVarMassAsOmega>1.68-0.075) ){
+
+ if( !fkIsNuclear ) fTreeCascade->Fill();
+ if( fkIsNuclear ){
+ //Extra selections in case this is a nuclear collision...
+ if (TMath::Abs(fTreeCascVarNegEta) < 0.8 &&
+ TMath::Abs(fTreeCascVarPosEta) < 0.8 &&
+ TMath::Abs(fTreeCascVarBachEta) < 0.8 &&
+ fTreeCascVarPt > fLowPtCutoff){ //beware ptMC and ptreco differences
+ fTreeCascade->Fill();
+ }
+ }
+ }
//------------------------------------------------
// Fill tree over.