\r
#include "AliPWG0Helper.h"\r
#include "AlidNdPtHelper.h"\r
+#include "AlidNdPtAnalysis.h"\r
#include "AlidNdPtCorrection.h"\r
\r
using namespace std;\r
fEventMultCorrelationMatrix(0),\r
fZvNorm(0),\r
fZvEmptyEventsNorm(0),\r
+ fLHCBin0Background(0),\r
fCorrTriggerMBtoInelEventMatrix(0),\r
fCorrTriggerMBtoNDEventMatrix(0),\r
fCorrTriggerMBtoNSDEventMatrix(0),\r
fEventMultCorrelationMatrix(0),\r
fZvNorm(0),\r
fZvEmptyEventsNorm(0),\r
+ fLHCBin0Background(0),\r
fCorrTriggerMBtoInelEventMatrix(0),\r
fCorrTriggerMBtoNDEventMatrix(0),\r
fCorrTriggerMBtoNSDEventMatrix(0),\r
//const Int_t ptNbins = 52; \r
//Double_t binsPt[ptNbins+1] = { 0.20, 0.30, 0.40, 0.50, 0.60, 0.70, 0.80, 0.90, 1.00, 1.10, 1.20, 1.30, 1.40, 1.50, 1.60, 1.70, 1.80, 1.90, 2.00, 2.10, 2.20, 2.30, 2.40, 2.50, 2.60, 2.70, 2.80, 2.90, 3.00, 3.10, 3.20, 3.30, 3.40, 3.50, 3.60, 3.70, 3.80, 3.90, 4.00, 4.20, 4.40, 4.60, 4.80, 5.00, 5.20, 5.40, 5.60, 5.80, 6.00, 7.00, 7.60, 8.80, 9.60 }; \r
\r
+ /*\r
const Int_t ptNbins = 56; \r
Double_t binsPt[ptNbins+1] = {0.,0.05,0.1,0.15,0.2,0.25,0.3,0.35,0.4,0.45,0.5,0.55,0.6,0.65,0.7,0.75,0.8,0.85,0.9,0.95,1.0,1.1,1.2,1.3,1.4,1.5,1.6,1.7,1.8,1.9,2.0,2.2,2.4,2.6,2.8,3.0,3.2,3.4,3.6,3.8,4.0,4.5,5.0,5.5,6.0,6.5,7.0,7.5,8.0,9.0,10.0,11.0,12.0,13.0,14.0,15.0,16.0};\r
Double_t binsEta[etaNbins+1] = {-1.5,-1.4,-1.3,-1.2,-1.1,-1.0,-0.9,-0.8,-0.7,-0.6,-0.5,-0.4,-0.3,-0.2,-0.1,0.,0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1.0,1.1,1.2,1.3,1.4,1.5};\r
Double_t binsZv[zvNbins+1] = {-30.,-25.,-20.,-15.,-10.,-5.,0.,5.,10.,15.,20.,25.,30.};\r
+ */\r
+\r
+ const Int_t ptNbins = 55; \r
+ Double_t binsPt[ptNbins+1] = {0.,0.05,0.1,0.15,0.2,0.25,0.3,0.35,0.4,0.45,0.5,0.55,0.6,0.65,0.7,0.75,0.8,0.85,0.9,0.95,1.0,1.1,1.2,1.3,1.4,1.5,1.6,1.7,1.8,1.9,2.0,2.2,2.4,2.6,2.8,3.0,3.2,3.4,3.6,3.8,4.0,4.5,5.0,5.5,6.0,6.5,7.0,8.0,9.0,10.0,11.0,12.0,13.0,14.0,15.0,16.0};\r
+ Double_t binsEta[etaNbins+1] = {-1.5,-1.4,-1.3,-1.2,-1.1,-1.0,-0.9,-0.8,-0.7,-0.6,-0.5,-0.4,-0.3,-0.2,-0.1,0.,0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1.0,1.1,1.2,1.3,1.4,1.5};\r
+ Double_t binsZv[zvNbins+1] = {-30.,-25.,-20.,-15.,-10.,-5.,0.,5.,10.,15.,20.,25.,30.};\r
\r
\r
//\r
Printf("No %s matrix \n", "fZvEmptyEventsNorm");\r
}\r
\r
+ fLHCBin0Background = (TH1D*)folder->FindObject("hLHCBin0Background");\r
+ if(!fLHCBin0Background) {\r
+ Printf("No %s matrix \n", "fLHCBin0Background");\r
+ }\r
+\r
//\r
// track-event level corrections (zv,pt,eta)\r
//\r
}\r
\r
if(IsUseMCInfo()) { \r
- //static AliTriggerAnalysis* triggerAnalysis = new AliTriggerAnalysis;\r
- //isEventTriggered = triggerAnalysis->IsTriggerFired(esdEvent, GetTrigger());\r
trigSel->SetAnalyzeMC();\r
isEventTriggered = trigSel->IsCollisionCandidate(esdEvent);\r
}\r
fMCEventHist1->Fill(vMCEventHist1);\r
\r
// multipliticy of all MC primary tracks\r
- // in Zvtx, pt and eta ranges\r
+ // in Zvtx, eta ranges\r
multMCTrueTracks = AlidNdPtHelper::GetMCTrueTrackMult(mcEvent,evtCuts,accCuts);\r
\r
} // end bUseMC\r
Bool_t bRedoTPCVertex = evtCuts->IsRedoTPCVertex();\r
Bool_t bUseConstraints = evtCuts->IsUseBeamSpotConstraint();\r
vtxESD = AlidNdPtHelper::GetVertex(esdEvent,evtCuts,accCuts,esdTrackCuts,GetAnalysisMode(),kFALSE,bRedoTPCVertex,bUseConstraints); \r
- isRecVertex = AlidNdPtHelper::TestRecVertex(vtxESD, GetAnalysisMode(), kFALSE); \r
+ isRecVertex = AlidNdPtHelper::TestRecVertex(vtxESD, esdEvent->GetPrimaryVertexSPD(), GetAnalysisMode(), kFALSE);\r
}\r
- if( IsUseMCInfo() && !evtCuts->IsRecVertexRequired() ) {\r
- vtxESD = new AliESDVertex(vtxMC[2],10.,genHeader->NProduced());\r
+\r
+ if( IsUseMCInfo() && !evtCuts->IsRecVertexRequired() ) {\r
+ vtxESD = new AliESDVertex(vtxMC[2],10.,genHeader->NProduced(),"smearMC");\r
isRecVertex = kTRUE;\r
}\r
+\r
Bool_t isEventOK = evtCuts->AcceptEvent(esdEvent,mcEvent,vtxESD) && isRecVertex; \r
- //printf("isEventOK %d, isRecVertex %d, nContributors %d, Zv %f\n",isEventOK, isRecVertex, vtxESD->GetNContributors(), vtxESD->GetZv());\r
+ //printf("isEventOK %d, isEventTriggered %d \n",isEventOK, isEventTriggered);\r
+ //printf("GetAnalysisMode() %d \n",GetAnalysisMode());\r
\r
- //\r
- // get multiplicity vertex contributors\r
- //\r
+ // vertex contributors\r
Int_t multMBTracks = 0; \r
- if(GetAnalysisMode() == AlidNdPtHelper::kTPC || GetAnalysisMode() == AlidNdPtHelper::kMCRec) { \r
- multMBTracks = AlidNdPtHelper::GetTPCMBTrackMult(esdEvent,evtCuts,accCuts,esdTrackCuts);\r
+ if(GetAnalysisMode() == AlidNdPtHelper::kTPC) \r
+ { \r
+ if(vtxESD->GetStatus() && isRecVertex)\r
+ multMBTracks = AlidNdPtHelper::GetTPCMBTrackMult(esdEvent,evtCuts,accCuts,esdTrackCuts);\r
} \r
- else if(GetAnalysisMode() == AlidNdPtHelper::kTPCITS || GetAnalysisMode() == AlidNdPtHelper::kTPCSPDvtx || \r
- GetAnalysisMode() == AlidNdPtHelper::kTPCSPDvtxUpdate || GetAnalysisMode() == AlidNdPtHelper::kMCRec || \r
- GetAnalysisMode()==AlidNdPtHelper::kTPCITSHybrid) {\r
- //if(vtxESD->GetStatus())\r
- // multMBTracks = vtxESD->GetNContributors();\r
-\r
- // origin Jan Fiete GO\r
- const AliMultiplicity* mult = esdEvent->GetMultiplicity();\r
- if (mult) {\r
- Int_t trackletCount = 0;\r
-\r
- for(Int_t i=0; i<mult->GetNumberOfTracklets(); ++i) {\r
- Float_t deltaPhi = mult->GetDeltaPhi(i);\r
- // prevent values to be shifted by 2 Pi()\r
- if (deltaPhi < -TMath::Pi())\r
- deltaPhi += TMath::Pi() * 2;\r
- if (deltaPhi > TMath::Pi())\r
- deltaPhi -= TMath::Pi() * 2;\r
-\r
- //if (fDeltaPhiCut > 0 && TMath::Abs(deltaPhi) > fDeltaPhiCut)\r
- // continue;\r
-\r
- trackletCount++;\r
- }\r
- //multMBTracks = mult->GetNumberOfTracklets();\r
- multMBTracks = trackletCount;\r
- //printf("trackletCount %d \n", trackletCount);\r
- }\r
- else {\r
- AliDebug(AliLog::kError, Form("Multiplicty %p", mult));\r
- return; \r
- }\r
+ else if( GetAnalysisMode() == AlidNdPtHelper::kTPCITS || GetAnalysisMode() == AlidNdPtHelper::kTPCSPDvtx || \r
+ GetAnalysisMode()==AlidNdPtHelper::kTPCSPDvtxUpdate || GetAnalysisMode()==AlidNdPtHelper::kTPCITSHybrid ) \r
+ {\r
+ const AliMultiplicity* mult = esdEvent->GetMultiplicity();\r
+ //if(mult && vtxESD->GetStatus() && isRecVertex)\r
+ if(mult)\r
+ multMBTracks = mult->GetNumberOfTracklets();\r
+ \r
} \r
+ else if( GetAnalysisMode() == AlidNdPtHelper::kTPCTrackSPDvtx || GetAnalysisMode() == AlidNdPtHelper::kTPCTrackSPDvtxUpdate || \r
+ GetAnalysisMode() == AlidNdPtHelper::kTPCITSHybridTrackSPDvtx || GetAnalysisMode() == AlidNdPtHelper::kTPCITSHybridTrackSPDvtxDCArPt)\r
+ {\r
+ if(vtxESD->GetStatus() && isRecVertex)\r
+ multMBTracks = vtxESD->GetNContributors();\r
+\r
+ }\r
else {\r
AliDebug(AliLog::kError, Form("Found analysis type %s", GetAnalysisMode()));\r
return; \r
}\r
\r
+\r
+ /*\r
+ //\r
+ // set 0-bin\r
+ //\r
+ if( GetAnalysisMode() == AlidNdPtHelper::kTPCTrackSPDvtx || \r
+ GetAnalysisMode() == AlidNdPtHelper::kTPCTrackSPDvtxUpdate || \r
+ GetAnalysisMode() == AlidNdPtHelper::kTPCITSHybridTrackSPDvtx || GetAnalysisMode() == AlidNdPtHelper::kTPCITSHybridTrackSPDvtxDCArPt) \r
+ {\r
+ if(AlidNdPtAnalysis::IsBinZeroTrackSPDvtx(esdEvent)) multMBTracks = 0;\r
+ } else {\r
+ if(AlidNdPtAnalysis::IsBinZeroSPDvtx(esdEvent)) multMBTracks = 0;\r
+ }\r
+ */\r
+\r
//\r
// correct event and track histograms\r
//\r
if(!isCosmic) continue;\r
}\r
\r
- if(esdTrackCuts->AcceptTrack(track) && accCuts->AcceptTrack(track)) \r
- multRecTemp++;\r
- } \r
+ if(esdTrackCuts->AcceptTrack(track)) \r
+ {\r
+ if(GetAnalysisMode() == AlidNdPtHelper::kTPCITSHybridTrackSPDvtxDCArPt) {\r
+ if(AlidNdPtHelper::IsGoodImpPar(track) && accCuts->AcceptTrack(track)) multRecTemp++;\r
+ }\r
+ else {\r
+ if(accCuts->AcceptTrack(track)) multRecTemp++;\r
+ }\r
+ } \r
+ }\r
+\r
+ // check multiplicity\r
+ const AliMultiplicity* mult = esdEvent->GetMultiplicity();\r
+ Int_t trackletMult = 0;\r
+ if (mult) {\r
+ for(Int_t i=0; i<mult->GetNumberOfTracklets(); i++) {\r
+ if(TMath::Abs(mult->GetEta(i)) < accCuts->GetMaxEta() )\r
+ trackletMult++;\r
+ }\r
+ }\r
+ // use tracklet multiplicity\r
+ multRecTemp = trackletMult;\r
\r
//\r
for(Int_t i=0; i<entries;++i) \r
if(!track) continue;\r
if(track->Charge()==0) continue;\r
\r
-\r
// only postive charged \r
if(GetParticleMode() == AlidNdPtHelper::kPlus && track->Charge() < 0) \r
continue;\r
continue;\r
\r
// track-level corrections\r
- if(esdTrackCuts->AcceptTrack(track)) \r
- {\r
+ if(!esdTrackCuts->AcceptTrack(track)) continue;\r
+ if(GetAnalysisMode()==AlidNdPtHelper::kTPCITSHybridTrackSPDvtxDCArPt && !AlidNdPtHelper::IsGoodImpPar(track)) continue;\r
+\r
// cosmics analysis\r
isCosmic = kFALSE;\r
if( GetParticleMode()==AlidNdPtHelper::kCosmic )\r
// if TPC-ITS hybrid tracking (kTPCITSHybrid)\r
// replace track parameters with TPC-ony track parameters\r
//\r
- if( GetAnalysisMode() == AlidNdPtHelper::kTPCITSHybrid ) \r
+ if( GetAnalysisMode() == AlidNdPtHelper::kTPCITSHybrid || GetAnalysisMode() == AlidNdPtHelper::kTPCITSHybridTrackSPDvtx || GetAnalysisMode() == AlidNdPtHelper::kTPCITSHybridTrackSPDvtxDCArPt) \r
{\r
- // Relate TPC-only tracks to SPD vertex\r
- isOK = track->RelateToVertexTPCBxByBz(esdEvent->GetPrimaryVertexSPD(), b, kVeryBig);\r
+ // Relate TPC-only tracks to Tracks or SPD vertex\r
+ isOK = track->RelateToVertexTPCBxByBz(vtxESD, b, kVeryBig);\r
if(!isOK) continue;\r
\r
// replace esd track parameters with TPCinner\r
} \r
\r
//\r
- if (GetAnalysisMode()==AlidNdPtHelper::kTPCSPDvtxUpdate) \r
+ if (GetAnalysisMode()==AlidNdPtHelper::kTPCSPDvtxUpdate || GetAnalysisMode()==AlidNdPtHelper::kTPCTrackSPDvtxUpdate) \r
{\r
//\r
// update track parameters\r
//\r
AliExternalTrackParam cParam;\r
- isOK = track->RelateToVertexTPC(esdEvent->GetPrimaryVertexSPD(),esdEvent->GetMagneticField(),kVeryBig,&cParam);\r
+ isOK = track->RelateToVertexTPC(vtxESD,esdEvent->GetMagneticField(),kVeryBig,&cParam);\r
if(!isOK) continue;\r
track->Set(cParam.GetX(),cParam.GetAlpha(),cParam.GetParameter(),cParam.GetCovariance());\r
\r
multRec++;\r
}\r
}\r
- }\r
- }\r
+ }\r
+\r
// event-level corrections\r
- if(GetAnalysisMode()==AlidNdPtHelper::kMCRec && IsUseMCInfo()) { \r
+ if(GetAnalysisMode()==AlidNdPtHelper::kMCRec && IsUseMCInfo()) \r
+ { \r
FillHistograms(AlidNdPtHelper::kRecEvents,vtxMC[2],multMBTracks);\r
}\r
else {\r
\r
// calculate meanPt from the event\r
Double_t meanPtMult[8] = {0}; \r
- Double_t meanPtTrueMult[8] = {0}; \r
for (Int_t i = 0; i<8; i++) {\r
if(!fCorrRecTrackMultHist1[i]) continue;\r
- meanPtMult[i] = fCorrRecTrackPt1[i]->Projection(0)->GetMean(); \r
+ TH1D *hp = (TH1D *)fCorrRecTrackPt1[i]->Projection(0);\r
+ if(!hp) continue;\r
+ meanPtMult[i] = hp->GetMean(); \r
Double_t vCorrRecTrackMeanPtMultHist1[2] = {meanPtMult[i],multRecTemp};\r
fCorrRecTrackMeanPtMultHist1[i]->Fill(vCorrRecTrackMeanPtMultHist1); \r
\r
if( IsUseMCInfo() ) {\r
- if(!fCorrRecTrackPt1[i]) continue;\r
- meanPtTrueMult[i] = fCorrRecTrackPt1[i]->Projection(0)->GetMean(); \r
Double_t vCorrRecTrackMeanPtTrueMultHist1[2] = {meanPtMult[i],multMCTrueTracks};\r
fCorrRecTrackMeanPtTrueMultHist1[i]->Fill(vCorrRecTrackMeanPtTrueMultHist1); \r
}\r
\r
// reset pt histo for the next event\r
if(fCorrRecTrackPt1[i]) fCorrRecTrackPt1[i]->Reset();\r
+ if(hp) delete hp;\r
}\r
\r
// control event histograms\r
fRecEventHist1->Fill(vRecEventHist1);\r
\r
// correlation track multiplicity vs tracklet multiplicity\r
- Double_t vRecEventMultHist1[3] = {multRecTemp, multMBTracks};\r
+ Double_t vRecEventMultHist1[3] = {multRec, multMBTracks};\r
fRecEventMultHist1->Fill(vRecEventMultHist1);\r
-\r
- } \r
+ }\r
\r
// empty events corrections\r
// no reconstructed zv\r
- if(isEventTriggered && multMBTracks==0) {\r
- if(GetAnalysisMode()==AlidNdPtHelper::kMCRec && IsUseMCInfo()) {\r
+ if( isEventTriggered && multMBTracks==0 ) \r
+ {\r
+ if(GetAnalysisMode()==AlidNdPtHelper::kMCRec && IsUseMCInfo()) \r
+ {\r
FillHistograms(AlidNdPtHelper::kTriggeredEvents,vtxMC[2],multMBTracks);\r
}\r
else {\r
Double_t zv = fZvNorm->GetRandom();\r
- FillHistograms(AlidNdPtHelper::kTriggeredEvents,zv,multMBTracks);\r
+ if(zv>evtCuts->GetMinZv() && zv<evtCuts->GetMaxZv())\r
+ FillHistograms(AlidNdPtHelper::kTriggeredEvents,zv,multMBTracks);\r
}\r
}\r
\r
//\r
Double_t vMCEventMatrix[2] = {vtxMC[2],multMBTracks};\r
fMCAllEventMultHist1->Fill(vMCEventMatrix);\r
+\r
if(evtType == AliPWG0Helper::kND) {\r
fMCAllNDEventMultHist1->Fill(vMCEventMatrix);\r
}\r
if(evtType != AliPWG0Helper::kSD) {\r
fMCAllNSDEventMultHist1->Fill(vMCEventMatrix);\r
}\r
- if(isEventTriggered) fMCTriggerMultHist1->Fill(vMCEventMatrix);\r
- if(isEventTriggered && isEventOK) fMCEventMultHist1->Fill(vMCEventMatrix);\r
+ if(isEventTriggered) {\r
+ fMCTriggerMultHist1->Fill(vMCEventMatrix);\r
+ }\r
+ if(isEventTriggered && isEventOK) {\r
+ fMCEventMultHist1->Fill(vMCEventMatrix);\r
+ }\r
\r
//\r
// MC histograms for efficiency studies\r
// sum up pt in the event\r
sumPtMC +=gpt; \r
\r
- Double_t valMCAllTrackMultHist1[3] = {gpt,geta,multRec}; \r
+ Double_t valMCAllTrackMultHist1[3] = {gpt,geta,multRecTemp}; \r
Double_t valMCAllTrackTrueMultHist1[3] = {gpt,geta,multMCTrueTracks}; \r
- Double_t valMCAllTrackTrueMultHist2[3] = {gpt,multRec,multMCTrueTracks}; \r
+ Double_t valMCAllTrackTrueMultHist2[3] = {gpt,multRecTemp,multMCTrueTracks}; \r
\r
fMCAllPrimTrackMultHist1->Fill(valMCAllTrackMultHist1);\r
fMCAllPrimTrackTrueMultHist1->Fill(valMCAllTrackTrueMultHist1);\r
//\r
Double_t meanPtMCMult = 0;\r
Double_t meanPtMCTrueMult = 0;\r
- if(multRec) meanPtMCMult = sumPtMC/multRec; \r
- if(multMCTrueTracks) meanPtMCTrueMult = sumPtMC/multMCTrueTracks; \r
+ if(multRecTemp) { \r
+ meanPtMCMult = sumPtMC/multRecTemp; \r
+ }\r
+ if(multMCTrueTracks) { \r
+ meanPtMCTrueMult = sumPtMC/multMCTrueTracks; \r
+ }\r
\r
- Double_t valMCMeanPtMult[2] = {meanPtMCMult,multRec}; \r
+ Double_t valMCMeanPtMult[2] = {meanPtMCMult,multRecTemp}; \r
Double_t valMCMeanPtTrueMult[2] = {meanPtMCTrueMult,multMCTrueTracks}; \r
\r
fMCAllPrimTrackMeanPtMult1->Fill(valMCMeanPtMult);\r
fMCEventPrimTrackMeanPtMult1->Fill(valMCMeanPtMult);\r
fMCEventPrimTrackMeanPtTrueMult1->Fill(valMCMeanPtTrueMult);\r
}\r
-\r
}\r
} // end bUseMC\r
\r
\r
if(eventObj==AlidNdPtHelper::kTriggeredEvents && multMBTracks==0) // empty triggered events\r
{\r
+ Double_t factLHCBack = 1.;\r
+ if(!IsUseMCInfo()) factLHCBack = fLHCBin0Background->GetBinContent(1); \r
+\r
+\r
Int_t bin = fZvEmptyEventsNorm->FindBin(zv);\r
Double_t factZ = fZvEmptyEventsNorm->GetBinContent(bin);\r
+\r
Double_t corrToInelF0 = GetCorrFactZvMult(fCorrTriggerMBtoInelEventMatrix,zv,multMBTracks);\r
Double_t corrToNDF0 = GetCorrFactZvMult(fCorrTriggerMBtoNDEventMatrix,zv,multMBTracks);\r
Double_t corrToNSDF0 = GetCorrFactZvMult(fCorrTriggerMBtoNSDEventMatrix,zv,multMBTracks);\r
- //printf("factZ %f, corrToInelF0 %f, corrToNDF0 %f, corrToNSDF0 %f \n",factZ,corrToInelF0,corrToNDF0,corrToNSDF0);\r
+ printf("factLHCBack %f, factZ %f, corrToInelF0 %f, corrToNDF0 %f, corrToNSDF0 %f \n",factLHCBack,factZ,corrToInelF0,corrToNDF0,corrToNSDF0);\r
\r
fCorrRecEventHist2[0]->Fill(vEventMatrix);\r
- fCorrRecEventHist2[1]->Fill(vEventMatrix,factZ);\r
- fCorrRecEventHist2[2]->Fill(vEventMatrix,factZ*corrToInelF0);\r
- fCorrRecEventHist2[3]->Fill(vEventMatrix,factZ*corrToNDF0);\r
- fCorrRecEventHist2[4]->Fill(vEventMatrix,factZ*corrToNSDF0);\r
+ fCorrRecEventHist2[1]->Fill(vEventMatrix,factLHCBack*factZ);\r
+ fCorrRecEventHist2[2]->Fill(vEventMatrix,factLHCBack*factZ*corrToInelF0);\r
+ fCorrRecEventHist2[3]->Fill(vEventMatrix,factLHCBack*factZ*corrToNDF0);\r
+ fCorrRecEventHist2[4]->Fill(vEventMatrix,factLHCBack*factZ*corrToNSDF0);\r
}\r
}\r
\r
{\r
// track level corrections\r
Double_t trackEffF = 1.0; \r
- if(pt < 2.5) trackEffF = GetCorrFactZvPtEta(fCorrTrackMatrix,zv,pt,eta);\r
+ if(pt < 2.6) trackEffF = GetCorrFactZvPtEta(fCorrTrackMatrix,zv,pt,eta);\r
else trackEffF = GetCorrFactZvPtEta(fCorrHighPtTrackMatrix,zv,pt,eta);\r
\r
Double_t trackContF = GetContFactZvPtEta(fContTrackMatrix,zv,pt,eta);\r
Int_t binz = az->FindBin(eta);\r
Int_t dim[3] = {binx,biny,binz};\r
\r
- Double_t fact = 1.0-hist->GetBinContent(dim); \r
+ //\r
+ // additional correction for secondary \r
+ // particles with strangeness (data driven)\r
+ // \r
+ Double_t corrFact = 1.;\r
+ if(!IsUseMCInfo()) corrFact = AlidNdPtHelper::GetStrangenessCorrFactor(pt);\r
+ //printf("pt %f, corrFact %f \n", pt, corrFact);\r
+\r
+ Double_t fact = 1.0 - corrFact*hist->GetBinContent(dim); \r
//Double_t fact = hist->GetBinContent(dim); \r
\r
return fact;\r