fCompOperator = compOperator;
}
+
+//________________________________________________________________________
+void AliDielectronCutGroup::Print(const Option_t* /*option*/) const
+{
+ //
+ // Print cuts and the range
+ //
+
+ TIter listIterator(&fCutGroupList);
+ while (AliAnalysisCuts *thisCut = (AliAnalysisCuts*) listIterator()) {
+ thisCut->Print();
+ }
+
+}
void AddCut(AliAnalysisCuts* fCut);
void SetCompOperator(Bool_t compOperator);
+
+ virtual void Print(const Option_t* option = "") const;
+
private:
TList fCutGroupList; //for saving the different cuts
fkVertexAOD(0x0),
fparMean(0x0),
fparSigma(0x0),
- fcutSigma(3.)
+ fcutSigma(3.),
+ fparMinVtxContributors(0x0),
+ fparMaxVtxContributors(0x0)
{
//
// Default Constructor
fkVertexAOD(0x0),
fparMean(0x0),
fparSigma(0x0),
- fcutSigma(3.)
+ fcutSigma(3.),
+ fparMinVtxContributors(0x0),
+ fparMaxVtxContributors(0x0)
{
//
// Named Constructor
if(multV0 > mV0+fcutSigma*sV0 || multV0 < mV0-fcutSigma*sV0) return kFALSE;
}
+ // cut on the number of vertex contributors using TPC versus global vertex
+ if(fparMinVtxContributors && fparMaxVtxContributors) {
+ const AliESDVertex *vtxTPC = ev->GetPrimaryVertexTPC();
+ const AliESDVertex *vtxGbl = ev->GetPrimaryVertex();
+ Double_t nContribTPC = (vtxTPC ? vtxTPC->GetNContributors() : 0);
+ Double_t nContribGbl = (vtxGbl ? vtxGbl->GetNContributors() : 0);
+ Double_t minCut = fparMinVtxContributors->Eval(nContribGbl);
+ Double_t maxCut = fparMaxVtxContributors->Eval(nContribGbl);
+ if(nContribTPC > maxCut || nContribTPC < minCut) return kFALSE;
+ }
+
+
return kTRUE;
}
//______________________________________________
return kFALSE;
}
*/
-
+
+ // correlation cut Ntrks vs. multV0
if(fparMean && fparSigma) {
Double_t nTrks = ev->GetNumberOfTracks();
Double_t multV0 = 0.0;
if(multV0 > mV0+fcutSigma*sV0 || multV0 < mV0-fcutSigma*sV0) return kFALSE;
}
+ // cut on the number of vertex contributors using TPC versus global vertex
+ if(fparMinVtxContributors && fparMaxVtxContributors) {
+ const AliAODVertex *vtxTPC = ev->GetVertex(AliAODVertex::kMainTPC);
+ const AliAODVertex *vtxGbl = ev->GetPrimaryVertex();
+ Double_t nContribTPC = (vtxTPC ? vtxTPC->GetNContributors() : 0);
+ Double_t nContribGbl = (vtxGbl ? vtxGbl->GetNContributors() : 0);
+ Double_t minCut = fparMinVtxContributors->Eval(nContribGbl);
+ Double_t maxCut = fparMaxVtxContributors->Eval(nContribGbl);
+ if(nContribTPC > maxCut || nContribTPC < minCut) return kFALSE;
+ }
+
return kTRUE;
}
void SetCutOnMultipicityITSTPC(Bool_t mult=kTRUE) { fMultITSTPC=mult; }
void SetCentralityRange(Double_t min, Double_t max) { fCentMin=min; fCentMax=max; }
void SetCutOnV0MultipicityNTrks(TF1* parMean, TF1* parSigma, Double_t cutSigma=3.) { fparMean=parMean; fparSigma=parSigma; fcutSigma=cutSigma; }
+ void SetCutOnNVtxContributorsGloablTPC(TF1* parMin, TF1* parMax) { fparMinVtxContributors=parMin; fparMaxVtxContributors=parMax; }
//
//Analysis cuts interface
//
TF1* fparMean; // parametrization of the mean values
TF1* fparSigma; // parametrization of the sigmas
Double_t fcutSigma; // number of absolut sigmas inclusion
-
+ TF1* fparMinVtxContributors; // parametrization of #vtx contributors global vs TPC (lower limit)
+ TF1* fparMaxVtxContributors; // parametrization of #vtx contributors global vs TPC (upper limit)
AliDielectronEventCuts(const AliDielectronEventCuts &c);
AliDielectronEventCuts &operator=(const AliDielectronEventCuts &c);
{"NTrk", "N_{trk}", ""},
{"Tracks", "tracks", ""},
{"NVtxContrib", "N_{vtx. contrib.}", ""},
+ {"NVtxContribTPC", "N_{vtx. contrib.}^{TPC}", ""},
{"Nacc", "N_{acc} #cbar_{#||{#eta}<0.9}", ""},
{"NaccTrcklts", "N_{acc. trkl} #cbar_{#||{#eta}<1.6}", ""},
{"NaccTrcklts0916", "N_{acc. trkl} #cbar_{-1.6<#eta<-0.9}^{0.9<#eta<1.6}",""},
kNTrk, // number of tracks (or tracklets) TODO: ambiguous
kTracks, // ESD tracks TODO: ambiguous
kNVtxContrib, // number of primary vertex contibutors
+ kNVtxContribTPC, // number of TPC vertex contibutors
kNacc, // Number of accepted tracks
kNaccTrcklts, // number of accepted SPD tracklets in |eta|<1.6
kNaccTrcklts0916, // number of accepted SPD tracklets in 0.9<|eta|<1.6
if(qstd && qsub1 && qsub2) {
values[AliDielectronVarManager::kTPCxH2uc] = qstd->X();
values[AliDielectronVarManager::kTPCyH2uc] = qstd->Y();
- values[AliDielectronVarManager::kTPCmagH2uc] = TMath::Sqrt(qstd->X()*qstd->X()+qstd->Y()*qstd->Y());
+ values[AliDielectronVarManager::kTPCmagH2uc] = qstd->Mod();
values[AliDielectronVarManager::kTPCrpH2uc] = ((TMath::Abs(qstd->X())>1.0e-10) ? TMath::ATan2(qstd->Y(),qstd->X())/2.0 : 0.0);
values[AliDielectronVarManager::kTPCsub1xH2uc] = qsub1->X();
values[AliDielectronVarManager::kTPCsub1yH2uc] = qsub1->Y();
values[AliDielectronVarManager::kZRes] = primVtx->GetZRes();
values[AliDielectronVarManager::kCentrality] = centralityF;
values[AliDielectronVarManager::kCentralitySPD] = centralitySPD;
-
+
+ const AliESDVertex *vtxTPC = event->GetPrimaryVertexTPC();
+ values[AliDielectronVarManager::kNVtxContribTPC] = (vtxTPC ? vtxTPC->GetNContributors() : 0);
+
// Event multiplicity estimators
Int_t nTrSPD05=0; Int_t nTrITSTPC05=0; Int_t nTrITSSA05=0;
event->EstimateMultiplicity(nTrSPD05, nTrITSTPC05, nTrITSSA05, 0.5);
if(!header->GetEventplaneP())
values[AliDielectronVarManager::kTPCrpH2uc] = header->GetEventplane();
+ const AliAODVertex *vtxTPC = event->GetVertex(AliAODVertex::kMainTPC);
+ values[AliDielectronVarManager::kNVtxContribTPC] = (vtxTPC ? vtxTPC->GetNContributors() : 0);
//const AliAODVertex *primVtx = event->GetPrimaryVertex();
}
values[AliDielectronVarManager::kTPCxH2] = qcorr->X();
values[AliDielectronVarManager::kTPCyH2] = qcorr->Y();
- values[AliDielectronVarManager::kTPCmagH2] = TMath::Sqrt(qcorr->X()*qcorr->X()+qcorr->Y()*qcorr->Y());
+ values[AliDielectronVarManager::kTPCmagH2] = qcorr->Mod();
values[AliDielectronVarManager::kTPCrpH2] = ((TMath::Abs(qcorr->X())>1.0e-10) ? TMath::ATan2(qcorr->Y(),qcorr->X())/2.0 : 0.0);
values[AliDielectronVarManager::kTPCsub1xH2] = qcsub1->X();