fCheckOnlyFilterBit(kTRUE),
fUseCustomQualityCuts(kFALSE),
fIsUse2011stdQualityCuts(kFALSE),
- fIsUse2011stdQualityCutsHighPt(kFALSE)
+ fIsUse2011stdQualityCutsHighPt(kFALSE)
{
//
// Default constructor
}
//__________________________________________________________________________________________________
-AliRsnCutSetDaughterParticle::AliRsnCutSetDaughterParticle(const char *name, AliRsnCutSetDaughterParticle::ERsnDaughterCutSet cutSetID, AliPID::EParticleType pid, Float_t nSigmaFast = -1.0, Int_t AODfilterBit = 0) :
+AliRsnCutSetDaughterParticle::AliRsnCutSetDaughterParticle(const char *name, AliRsnCutSetDaughterParticle::ERsnDaughterCutSet cutSetID, AliPID::EParticleType pid, Float_t nSigmaFast = -1.0, Int_t AODfilterBit = 0, Bool_t useTPCCrossedRows=kTRUE) :
AliRsnCutSet(name, AliRsnTarget::kDaughter),
fPID(pid),
fAppliedCutSetID(cutSetID),
fCheckOnlyFilterBit(kTRUE),
fUseCustomQualityCuts(kFALSE),
fIsUse2011stdQualityCuts(kFALSE),
- fIsUse2011stdQualityCutsHighPt(kFALSE)
+ fIsUse2011stdQualityCutsHighPt(kFALSE)
{
- //
- // Constructor
- //
+ //
+ // Constructor
+ //
//set here pt and eta range
SetPtRange(0.15, 20.0);
SetEtaRange(-0.8, 0.8);
fNsigmaTPC=1e20;
fNsigmaTOF=1e20;
AliWarning("Requested fast n-sigma PID with negative value for n. --> Setting n = 1E20");
- }
-
+ }
+
//initialize quality std and PID cuts
- InitStdQualityCuts();
+ InitStdQualityCuts(useTPCCrossedRows);
Init();
}
fCheckOnlyFilterBit(kFALSE),
fUseCustomQualityCuts(kFALSE),
fIsUse2011stdQualityCuts(kFALSE),
- fIsUse2011stdQualityCutsHighPt(kFALSE)
+ fIsUse2011stdQualityCutsHighPt(kFALSE)
{
//
// Constructor: uses externally-defined track-quality cut object
//
if (!rsnTrackQualityCut) {
//if external track quality cut object not defined,
- //sets default track quality to be initialised +
+ //sets default track quality to be initialised (with cut on TPC crossed rows) +
//sets here pt and eta cuts
- InitStdQualityCuts();
+ InitStdQualityCuts(kTRUE);
SetPtRange(0.15, 20.0);
SetEtaRange(-0.8, 0.8);
} else {
fCheckOnlyFilterBit(copy.fCheckOnlyFilterBit),
fUseCustomQualityCuts(copy.fUseCustomQualityCuts),
fIsUse2011stdQualityCuts(copy.fIsUse2011stdQualityCuts),
- fIsUse2011stdQualityCutsHighPt(copy.fIsUse2011stdQualityCutsHighPt)
+ fIsUse2011stdQualityCutsHighPt(copy.fIsUse2011stdQualityCutsHighPt)
{
//
// copy constructor
}
//-----------------------------------------------
-void AliRsnCutSetDaughterParticle::InitStdQualityCuts()
+void AliRsnCutSetDaughterParticle::InitStdQualityCuts(Bool_t useTPCCrossedRows)
{
// initialize quality std (if not externally defined) and PID cuts
// init cut sets by setting variable params
if (fAppliedCutSetID==AliRsnCutSetDaughterParticle::kQualityStd2011) {
fIsUse2011stdQualityCuts = kTRUE;
fIsUse2011stdQualityCutsHighPt = kFALSE;
- }
+ }
if (fAppliedCutSetID==AliRsnCutSetDaughterParticle::kQualityStd2011HighPt) {
fIsUse2011stdQualityCuts = kFALSE;
fIsUse2011stdQualityCutsHighPt = kTRUE;
}
-
+
if (fIsUse2011stdQualityCuts) {
- fCutQuality->SetDefaults2011();//uses filter bit 5 as default
+ AliInfo(Form("Using 2011 std quality cuts with cut on TPC %s",(useTPCCrossedRows?"crossed rows":"N clusters")));
+ fCutQuality->SetDefaults2011(useTPCCrossedRows, kFALSE);//uses filter bit 5 as default
} else {
if (fIsUse2011stdQualityCutsHighPt) {
- fCutQuality->SetDefaultsHighPt2011();//uses filter bit 5 as default
+ AliInfo(Form("Using 2011 std quality cuts with cut on TPC %s for high-pT", (useTPCCrossedRows?"crossed rows":"N clusters")));
+ fCutQuality->SetDefaultsHighPt2011(useTPCCrossedRows, kFALSE);//uses filter bit 10 as default
} else {
- fCutQuality->SetDefaults2010();
- fCutQuality->SetDCARPtFormula("0.0182+0.0350/pt^1.01");
- fCutQuality->SetDCAZmax(2.0);
- fCutQuality->SetSPDminNClusters(1);
- fCutQuality->SetITSminNClusters(0);
- fCutQuality->SetITSmaxChi2(36);
- fCutQuality->SetTPCminNClusters(70);
- fCutQuality->SetTPCmaxChi2(4.0);
- fCutQuality->SetRejectKinkDaughters();
- //fCutQuality->SetITSmaxChi2(36);
- //fCutQuality->SetMaxChi2TPCConstrainedGlobal(36);
+ AliInfo(Form("Using 2010 std quality cuts with cut on TPC %s", (useTPCCrossedRows?"crossed rows":"N clusters")));
+ fCutQuality->SetDefaults2010(useTPCCrossedRows, kFALSE);
}
}
fCutQuality->SetAODTestFilterBit(fAODTrkCutFilterBit); //changes default filter bit to the chosen filter bit
-
+ AliInfo(Form("Applying cut on AOD filter bit %i", fAODTrkCutFilterBit));
//apply pt and eta cuts
fCutQuality->SetPtRange(fPtRange[0], fPtRange[1]);
fCutQuality->SetEtaRange(fEtaRange[0], fEtaRange[1]);
- AliInfo("Standard quality cuts applied");
- fCutQuality->Print();
+ AliInfo(Form("Pt range [%3.2f,%3.2f], Eta range [%3.2f, %3.2f]", fPtRange[0], fPtRange[1], fEtaRange[0], fEtaRange[1]));
return;
}
kStdRowsToCls085,
kStdCls70,
kStdChi2TPCCls35,
+ kStdUseTPCNcls,
kNcustomQualityCuts
};
AliRsnCutSetDaughterParticle::ERsnDaughterCutSet cutSetID,
AliPID::EParticleType pid,
Float_t nsigmaFast,
- Int_t AODfilterBit);
+ Int_t AODfilterBit,
+ Bool_t useTPCCrossedRows);
AliRsnCutSetDaughterParticle(const char *name,
AliRsnCutTrackQuality *rsnTrackQualityCut,
AliRsnCutSetDaughterParticle::ERsnDaughterCutSet cutSetID,
virtual ~AliRsnCutSetDaughterParticle();
void Init();
- void InitStdQualityCuts();
+ void InitStdQualityCuts(Bool_t useTPCCrossedRows=kTRUE);
void SetNsigmaForFastTPCpid(Float_t nsigma) {fNsigmaTPC=nsigma; return;};
void SetNsigmaForFastTOFpid(Float_t nsigma) {fNsigmaTOF=nsigma; return;};
void SetAODTrackCutFilterBit(Int_t ibit) {fAODTrkCutFilterBit=ibit; return;}
Float_t fEtaRange[2]; //single track eta range (min, max)
Bool_t fIsUse2011stdQualityCuts;//flag to enalble std quality cuts 2011
Bool_t fIsUse2011stdQualityCutsHighPt;//flag to enalble std quality cuts 2011
-
+
ClassDef(AliRsnCutSetDaughterParticle, 5) // cut definitions for K*
};
SetEtaRange(-1E20, 1E20);
}
+//_________________________________________________________________________________________________
+void AliRsnCutTrackQuality::SetPtRange(Double_t a, Double_t b)
+{
+ //Set Pt range cut
+ fPt[0] = TMath::Min(a, b);
+ fPt[1] = TMath::Max(a, b);
+ if (fESDtrackCuts) fESDtrackCuts->SetPtRange(fPt[0], fPt[1]);
+ return;
+}
+
+//_________________________________________________________________________________________________
+void AliRsnCutTrackQuality::SetEtaRange(Double_t a, Double_t b)
+{
+ //Set Pt range cut
+ fEta[0] = TMath::Min(a, b);
+ fEta[1] = TMath::Max(a, b);
+ if (fESDtrackCuts) fESDtrackCuts->SetEtaRange(fEta[0], fEta[1]);
+ return;
+}
+
//_________________________________________________________________________________________________
Bool_t AliRsnCutTrackQuality::IsSelected(TObject *object)
{
cuts.SetMaxChi2PerClusterITS(fITSmaxChi2);
// now that all is initialized, do the check
+ if (!track) {
+ AliError("Invalid track object. Rejected.");
+ return kFALSE;
+ }
return cuts.IsSelected(track);
}
AliInfo(Form("fCheckOnlyFilterBit : %i",((int) fCheckOnlyFilterBit)));
}
//__________________________________________________________________________________________________
-void AliRsnCutTrackQuality::SetDefaults2010()
+void AliRsnCutTrackQuality::SetDefaults2010(Bool_t useTPCCrossedRows, Bool_t useDefaultKinematicCuts)
{
//
// Default settings for cuts used in 2010
//
- AddStatusFlag(AliESDtrack::kTPCin , kTRUE);
- AddStatusFlag(AliESDtrack::kTPCrefit, kTRUE);
- AddStatusFlag(AliESDtrack::kITSrefit, kTRUE);
- SetPtRange(0.15, 1E+20);
- SetEtaRange(-0.8, 0.8);
- SetDCARPtFormula("0.0182+0.0350/pt^1.01");
- SetDCAZmax(2.0);
- SetSPDminNClusters(1);
- SetITSminNClusters(0);
- // SetITSmaxChi2(36);
- // SetMaxChi2TPCConstrainedGlobal(36);
- SetTPCminNClusters(70);
- SetTPCmaxChi2(4.0);
- SetRejectKinkDaughters();
- SetAODTestFilterBit(5);
+
+ fIsUseCrossedRowsCut=useTPCCrossedRows;
+ fESDtrackCuts = AliESDtrackCuts::GetStandardITSTPCTrackCuts2010(kTRUE, fIsUseCrossedRowsCut);
+ if (useDefaultKinematicCuts) {
+ SetPtRange(0.15, 1E+20);
+ SetEtaRange(-0.8, 0.8);
+ }
+ SetAODTestFilterBit(5);
+ return;
}
//__________________________________________________________________________________________________
-void AliRsnCutTrackQuality::SetDefaultsHighPt2011(Bool_t useTPCCrossedRows)
+void AliRsnCutTrackQuality::SetDefaultsHighPt2011(Bool_t useTPCCrossedRows, Bool_t useDefaultKinematicCuts)
{
//
// Default settings for cuts used in 2011 (for high-pT)
//
- fIsUseCrossedRowsCut=useTPCCrossedRows;
- fESDtrackCuts = AliESDtrackCuts::GetStandardITSTPCTrackCuts2011(kTRUE, useTPCCrossedRows);
- fESDtrackCuts->SetMinNCrossedRowsTPC(120); //default is min 70 crossed rows -> use 120 to go to higher pt
- fESDtrackCuts->SetMaxFractionSharedTPCClusters(0.4);//default is not set --> use to go to higher pt
- //fESDtrackCuts->SetMinRatioCrossedRowsOverFindableClustersTPC(0.8);//already in 2011 std
- //fESDtrackCuts->SetMaxChi2PerClusterITS(36);//already in 2011 std
- //fESDtrackCuts->SetMaxChi2TPCConstrainedGlobal(36);//already in 2011 std
- // AddStatusFlag(AliESDtrack::kTPCin , kTRUE); //already in 2011 std
- // AddStatusFlag(AliESDtrack::kTPCrefit, kTRUE);//already in 2011 std
- // AddStatusFlag(AliESDtrack::kITSrefit, kTRUE);//already in 2011 std
- SetPtRange(0.15, 1E+20);
- SetEtaRange(-0.8, 0.8);
- SetAODTestFilterBit(10);
- return;
+ fIsUseCrossedRowsCut=useTPCCrossedRows;
+ fESDtrackCuts = AliESDtrackCuts::GetStandardITSTPCTrackCuts2011(kTRUE, fIsUseCrossedRowsCut);
+ fESDtrackCuts->SetMinNCrossedRowsTPC(120); //default is min 70 crossed rows -> use 120 to go to higher pt
+ fESDtrackCuts->SetMaxFractionSharedTPCClusters(0.4);//default is not set --> use to go to higher pt
+ if (useDefaultKinematicCuts) {
+ SetPtRange(0.15, 1E+20);
+ SetEtaRange(-0.8, 0.8);
+ }
+ SetAODTestFilterBit(10);
+ return;
}
//__________________________________________________________________________________________________
-void AliRsnCutTrackQuality::SetDefaults2011(Bool_t useTPCCrossedRows)
+void AliRsnCutTrackQuality::SetDefaults2011(Bool_t useTPCCrossedRows, Bool_t useDefaultKinematicCuts)
{
//
// Default std cuts 2011 with crossed rows (=70)
//
fIsUseCrossedRowsCut=useTPCCrossedRows;
- fESDtrackCuts = AliESDtrackCuts::GetStandardITSTPCTrackCuts2011(kTRUE,useTPCCrossedRows);
- SetPtRange(0.15, 1E+20);
- SetEtaRange(-0.8, 0.8);
+ fESDtrackCuts = AliESDtrackCuts::GetStandardITSTPCTrackCuts2011(kTRUE,fIsUseCrossedRowsCut);
+ if (useDefaultKinematicCuts) {
+ SetPtRange(0.15, 1E+20);
+ SetEtaRange(-0.8, 0.8);
+ }
SetAODTestFilterBit(5);
return;
}
void AddStatusFlag(ULong_t f, Bool_t on) {if (on) fFlagsOn = fFlagsOn | f; else fFlagsOff = fFlagsOff | f;}
void SetStatusFlags(ULong_t f, Bool_t on) {if (on) fFlagsOn = f; else fFlagsOff = f;}
- void SetPtRange(Double_t a, Double_t b) {fPt[0] = TMath::Min(a, b); fPt[1] = TMath::Max(a, b);}
- void SetEtaRange(Double_t a, Double_t b) {fEta[0] = TMath::Min(a, b); fEta[1] = TMath::Max(a, b);}
+ void SetPtRange(Double_t a, Double_t b);
+ void SetEtaRange(Double_t a, Double_t b);
void SetDCARPtFormula(const char *formula) {fDCARptFormula = formula; fDCARmaxfixed = kFALSE;}
void SetDCARPtFormulaMin(const char *formula) {fDCARptFormulaMin = formula; fDCARminfixed = kFALSE;}
void SetAODTestFilterBit(Int_t value) {fAODTestFilterBit = value;}
void SetCheckOnlyFilterBit(Bool_t on=kTRUE) {fCheckOnlyFilterBit=on;}
- void SetDefaults2010();
- void SetDefaults2011(Bool_t useTPCCrossedRows = kTRUE);
- void SetDefaultsHighPt2011(Bool_t useTPCCrossedRows = kTRUE);
+ void SetDefaults2010(Bool_t useTPCCrossedRows = kTRUE, Bool_t useDefaultKinematicCuts=kTRUE);
+ void SetDefaults2011(Bool_t useTPCCrossedRows = kTRUE, Bool_t useDefaultKinematicCuts=kTRUE);
+ void SetDefaultsHighPt2011(Bool_t useTPCCrossedRows = kTRUE, Bool_t useDefaultKinematicCuts=kTRUE);
void SetESDtrackCuts(AliESDtrackCuts *esdTrackCuts) {fESDtrackCuts = esdTrackCuts;}
AliESDtrackCuts *GetESDtrackCuts() {return fESDtrackCuts;}
Double_t GetPtRange(Bool_t max) {return fPt[max];}
//Allows basic configuration of pile-up check and event cuts
//
****************************************************************************/
-enum pairYCutSet { kPairDefault,
- kCentral
+enum pairYCutSet { kPairDefault=0,
+ kCentral //=1
};
enum eventCutSet { kEvtDefault=0,
//
// -- CONFIG ANALYSIS --------------------------------------------------------------------------
//
- gROOT->LoadMacro("$ALICE_ROOT/PWGLF/RESONANCES/macros/mini/ConfigKStarPPb.C");
- if (!ConfigKStarPPb(task, isMC, isPP, "", cutsPair, aodFilterBit, customQualityCutsID, cutPiCandidate, cutKaCandidate, nsigmaPi, nsigmaKa, enableMonitor, isMC&IsMcTrueOnly, monitorOpt.Data(), useMixLS, isMC&checkReflex, yaxisvar)) return 0x0;
+ gROOT->LoadMacro("$ALICE_ROOT/PWGLF/RESONANCES/macros/mini/ConfigKStarPP7TeV.C");
+ if (!ConfigKStarPP7TeV(task, isMC, isPP, "", cutsPair, aodFilterBit, customQualityCutsID, cutPiCandidate, cutKaCandidate, nsigmaPi, nsigmaKa, enableMonitor, isMC&IsMcTrueOnly, monitorOpt.Data(), useMixLS, isMC&checkReflex, yaxisvar)) return 0x0;
//
AliRsnCutTrackQuality * trkQualityCut = new AliRsnCutTrackQuality("myQualityCut");
if (SetCustomQualityCut(trkQualityCut, customQualityCutsID, aodFilterBit)) {
//Set custom quality cuts for systematic checks
- cutSetQ = new AliRsnCutSetDaughterParticle(Form("cutQ_bit%i",aodFilterBit), trkQualityCut, AliRsnCutSetDaughterParticle::kQualityStd2011, AliPID::kPion, -1.0);
+ cutSetQ = new AliRsnCutSetDaughterParticle(Form("cutQ_bit%i",aodFilterBit), trkQualityCut, AliRsnCutSetDaughterParticle::kQualityStd2010, AliPID::kPion, -1.0);
cutSetPi = new AliRsnCutSetDaughterParticle(Form("cutPi%i_%2.1fsigma",cutPiCandidate, nsigmaPi), trkQualityCut, cutPiCandidate, AliPID::kPion, nsigmaPi);
cutSetK = new AliRsnCutSetDaughterParticle(Form("cutK%i_%2.1fsigma",cutPiCandidate, nsigmaKa), trkQualityCut, cutKaCandidate, AliPID::kKaon, nsigmaKa);
} else {
- //use defult quality cuts (std 2010 or 2011)
- cutSetQ = new AliRsnCutSetDaughterParticle(Form("cutQ_bit%i",aodFilterBit), AliRsnCutSetDaughterParticle::kQualityStd2011, AliPID::kPion, -1.0, aodFilterBit);
- cutSetQ->SetUse2011StdQualityCuts(kTRUE);
- cutSetPi = new AliRsnCutSetDaughterParticle(Form("cutPi%i_%2.1fsigma",cutPiCandidate, nsigmaPi), cutPiCandidate, AliPID::kPion, nsigmaPi, aodFilterBit);
- cutSetPi->SetUse2011StdQualityCuts(kTRUE);
- cutSetK = new AliRsnCutSetDaughterParticle(Form("cutK%i_%2.1fsigma",cutPiCandidate, nsigmaKa), cutKaCandidate, AliPID::kKaon, nsigmaKa, aodFilterBit);
- cutSetK->SetUse2011StdQualityCuts(kTRUE);
- }
+ //use default quality cuts std 2010 with crossed rows TPC
+ Bool_t useCrossedRows = 1;
+ cutSetQ = new AliRsnCutSetDaughterParticle(Form("cutQ_bit%i",aodFilterBit), AliRsnCutSetDaughterParticle::kQualityStd2010, AliPID::kPion, -1.0, aodFilterBit, useCrossedRows);
+ cutSetPi = new AliRsnCutSetDaughterParticle(Form("cutPi%i_%2.1fsigma",cutPiCandidate, nsigmaPi), cutPiCandidate, AliPID::kPion, nsigmaPi, aodFilterBit, useCrossedRows);
+ cutSetK = new AliRsnCutSetDaughterParticle(Form("cutK%i_%2.1fsigma",cutPiCandidate, nsigmaKa), cutKaCandidate, AliPID::kKaon, nsigmaKa, aodFilterBit, useCrossedRows);
+ }
Int_t iCutQ = task->AddTrackCuts(cutSetQ);
Int_t iCutPi = task->AddTrackCuts(cutSetPi);
cutSetK = new AliRsnCutSetDaughterParticle(Form("cutK%i_%2.1fsigma",cutPiCandidate, nsigmaKa), trkQualityCut, cutKaCandidate, AliPID::kKaon, nsigmaKa);
} else {
//use defult quality cuts (std 2010 or 2011)
- cutSetQ = new AliRsnCutSetDaughterParticle(Form("cutQ_bit%i",aodFilterBit), AliRsnCutSetDaughterParticle::kQualityStd2011, AliPID::kPion, -1.0, aodFilterBit);
+ cutSetQ = new AliRsnCutSetDaughterParticle(Form("cutQ_bit%i",aodFilterBit), AliRsnCutSetDaughterParticle::kQualityStd2011, AliPID::kPion, -1.0, aodFilterBit, kTRUE);
cutSetQ->SetUse2011StdQualityCuts(kTRUE);
- cutSetPi = new AliRsnCutSetDaughterParticle(Form("cutPi%i_%2.1fsigma",cutPiCandidate, nsigmaPi), cutPiCandidate, AliPID::kPion, nsigmaPi, aodFilterBit);
+ cutSetPi = new AliRsnCutSetDaughterParticle(Form("cutPi%i_%2.1fsigma",cutPiCandidate, nsigmaPi), cutPiCandidate, AliPID::kPion, nsigmaPi, aodFilterBit,kTRUE);
cutSetPi->SetUse2011StdQualityCuts(kTRUE);
- cutSetK = new AliRsnCutSetDaughterParticle(Form("cutK%i_%2.1fsigma",cutPiCandidate, nsigmaKa), cutKaCandidate, AliPID::kKaon, nsigmaKa, aodFilterBit);
+ cutSetK = new AliRsnCutSetDaughterParticle(Form("cutK%i_%2.1fsigma",cutPiCandidate, nsigmaKa), cutKaCandidate, AliPID::kKaon, nsigmaKa, aodFilterBit,kTRUE);
cutSetK->SetUse2011StdQualityCuts(kTRUE);
}