RESONANCES/AliRsnPIDRange.cxx
RESONANCES/AliRsnCutPIDNSigma.cxx
RESONANCES/AliRsnCutMomentumComparison.cxx
+ RESONANCES/AliRsnCutTOFMatch.cxx
RESONANCES/AliRsnCutKaonForPhi2010.cxx
RESONANCES/AliRsnCutKaonForPhi2010PP.cxx
RESONANCES/AliRsnCutPion2010PP.cxx
RESONANCES/AliRsnCutProton2010PP.cxx
RESONANCES/AliRsnCutDaughterKStar2010PP.cxx
- RESONANCES/AliRsnCutDaughterLStar2010.cxx
+ RESONANCES/AliRsnCutDaughterLStar2010.cxx
+ RESONANCES/AliRsnCutDaughterSigmaStar2010PP.cxx
+ RESONANCES/AliRsnCutSetDaughterParticle.cxx
RESONANCES/AliRsnCutV0.cxx
RESONANCES/AliRsnCutSet.cxx
RESONANCES/AliRsnExpression.cxx
RESONANCES/AliRsnMiniMonitor.cxx
RESONANCES/AliRsnMiniAnalysisTask.cxx
RESONANCES/AliRsnMiniMonitorTask.cxx
- RESONANCES/AliRsnCutKaon.cxx
- RESONANCES/AliRsnCutPion.cxx
- RESONANCES/AliRsnCutDaughterSigmaStar2010PP.cxx
)
string ( REPLACE ".cxx" ".h" HDRS "${SRCS}" )
#pragma link C++ class AliRsnPIDRange+;
#pragma link C++ class AliRsnCutPIDNSigma+;
#pragma link C++ class AliRsnCutMomentumComparison+;
+#pragma link C++ class AliRsnCutTOFMatch+;
#pragma link C++ class AliRsnCutKaonForPhi2010+;
#pragma link C++ class AliRsnCutKaonForPhi2010PP+;
#pragma link C++ class AliRsnCutPion2010PP+;
#pragma link C++ class AliRsnCutDaughterKStar2010PP+;
#pragma link C++ class AliRsnCutDaughterLStar2010+;
#pragma link C++ class AliRsnCutV0+;
-#pragma link C++ class AliRsnCutKaon+;
-#pragma link C++ class AliRsnCutPion+;
#pragma link C++ class AliRsnCutDaughterSigmaStar2010PP+;
+#pragma link C++ class AliRsnCutSetDaughterParticle+;
#pragma link C++ class AliRsnCutSet+;
#pragma link C++ class AliRsnExpression+;
+++ /dev/null
-//
-// All cuts for single pions
-// based on track quality and particle identification
-// with TPC and TOF.
-// Author: fbellini@cern.ch
-//
-//
-
-#include <Riostream.h>
-
-#include "AliPID.h"
-#include "AliPIDResponse.h"
-#include "AliRsnCutKaon.h"
-
-ClassImp(AliRsnCutKaon)
-
-const char *AliRsnCutKaon::fgkCutName[AliRsnCutKaon::kNkaonCuts]= {
- "kQuality_Std2010",
- "kTOFMatch_Std2010",
- "kFastTPCpid_Nsigma",
- "kFastTPCpid_1point5sigma",
- "kFastTPCpid_2sigma",
- "kFastTPCpid_3sigma",
- "kFastTOFpid_Nsigma",
- "kFastTOFpid_1point5sigma",
- "kFastTOFpid_2sigma",
- "kFastTOFpid_3sigma",
- "kTPCTOFpid_DefaultKstarPP2010"
-};
-
-//__________________________________________________________________________________________________
-AliRsnCutKaon::AliRsnCutKaon(const char *name, AliRsnCutKaon::ERsnKaonCut cutID, AliPID::EParticleType pid) :
- AliRsnCut(name, AliRsnTarget::kDaughter),
- fNoPID(kFALSE),
- fPID(pid),
- fCutQuality(Form("%sQuality", name)),
- fAppliedCutID(cutID),
- fNsigmaCutTPC(1E6),
- fNsigmaCutTOF(1E6)
-{
- //
- // Constructor
- // Initialize track quality cuts to 2010 defaults
- //
- fCutQuality.SetPtRange(0.15, 1E+20);
- fCutQuality.SetEtaRange(-0.8, 0.8);
- fCutQuality.SetDCARPtFormula("0.0182+0.0350/pt^1.01");
- fCutQuality.SetDCAZmax(2.0);
- fCutQuality.SetSPDminNClusters(1);
- fCutQuality.SetITSminNClusters(0);
- fCutQuality.SetITSmaxChi2(1E+20);
- fCutQuality.SetTPCminNClusters(70);
- fCutQuality.SetTPCmaxChi2(4.0);
- fCutQuality.SetRejectKinkDaughters();
- fCutQuality.SetAODTestFilterBit(5);
- AliInfo(Form("Applied cut on kaon candidate: %s", AliRsnCutKaon::fgkCutName[fAppliedCutID]));
-}
-
-//__________________________________________________________________________________________________
-Bool_t AliRsnCutKaon::MatchTOF(const AliVTrack *vtrack)
-{
-//
-// Checks if the track has matched the TOF detector
-//
- if (!vtrack) {
- AliWarning("NULL argument: impossible to check status");
- return kFALSE;
- }
- if (!(vtrack->GetStatus() & AliESDtrack::kTOFout)) return kFALSE;
- if (!(vtrack->GetStatus() & AliESDtrack::kTIME)) return kFALSE;
-
- return kTRUE;
-}
-
-//__________________________________________________________________________________________________
-Bool_t AliRsnCutKaon::IsSelected(TObject *obj)
-{
-//
-// Global check
-//
- // coherence check
- if (!TargetOK(obj)) return kFALSE;
-
- // check track
- AliVTrack *track = dynamic_cast<AliVTrack *>(fDaughter->GetRef());
- if (!track) return kFALSE;
-
- Bool_t isSelected=kFALSE;
- switch (fAppliedCutID)
- {
- case AliRsnCutKaon::kQualityStd2010:
- isSelected=IsSelectedByQualityStd2010(obj, 1, 1, 1);
- break;
-
- case AliRsnCutKaon::kTOFMatchStd2010:
- isSelected=IsSelectedByTOFMatchStd2010(obj);
- break;
-
- case AliRsnCutKaon::kFastTPCpidNsigma:
- isSelected=IsSelectedByFastTPCpidNsigma(obj,fNsigmaCutTPC);
- break;
-
- case AliRsnCutKaon::kFastTPCpid1point5sigma:
- isSelected=IsSelectedByFastTPCpid1point5sigma(obj);
- break;
-
- case AliRsnCutKaon::kFastTPCpid2sigma:
- isSelected=IsSelectedByFastTPCpid2sigma(obj);
- break;
-
- case AliRsnCutKaon::kFastTPCpid3sigma:
- isSelected=IsSelectedByFastTPCpid3sigma(obj);
- break;
-
- case AliRsnCutKaon::kFastTOFpidNsigma:
- isSelected=IsSelectedByFastTOFpidNsigma(obj,fNsigmaCutTOF);
- break;
-
- case AliRsnCutKaon::kFastTOFpid1point5sigma:
- isSelected=IsSelectedByFastTOFpid1point5sigma(obj);
- break;
-
- case AliRsnCutKaon::kFastTOFpid2sigma:
- isSelected=IsSelectedByFastTOFpid2sigma(obj);
- break;
-
- case AliRsnCutKaon::kFastTOFpid3sigma:
- isSelected=IsSelectedByFastTOFpid3sigma(obj);
- break;
-
- case AliRsnCutKaon::kTPCTOFpidDefaultKstarPP2010:
- isSelected=IsSelectedByTPCTOFpidDefaultKstarPP2010(obj);
- break;
-
- default :
- break;
- }
-
- return isSelected;
-}
-
-//-----------------------------------------------------------
-Bool_t AliRsnCutKaon::IsSelectedByQualityStd2010(TObject *obj, Bool_t requireTPCin=kTRUE, Bool_t requireTPCrefit=kTRUE, Bool_t requireITSrefit=kTRUE)
-{
- //Checks if track passes the standard quality cuts
- //defined for analysis in 2010 pp and PbPb data
-
- if (!obj) {
- AliError("Invalid track object passed to function. Please check!");
- return kFALSE;
- }
-
- fAppliedCutID= AliRsnCutKaon::kQualityStd2010;
- AliVTrack *track = dynamic_cast<AliVTrack *>(fDaughter->GetRef());
- if (!track) return kFALSE;
-
- //optionally check refit flags (to be used for Phi and kStar analysis)
- if (requireTPCin && ((track->GetStatus() & AliESDtrack::kTPCin) == 0) ) return kFALSE;
- if (requireTPCrefit && ((track->GetStatus() & AliESDtrack::kTPCrefit) == 0) ) return kFALSE;
- if (requireITSrefit && ((track->GetStatus() & AliESDtrack::kITSrefit) == 0) ) return kFALSE;
-
- // quality
- if (!fCutQuality.IsSelected(obj)) return kFALSE;
- return kTRUE;
-}
-
-//-----------------------------------------------------------
-Bool_t AliRsnCutKaon::IsSelectedByTOFMatchStd2010(TObject *obj)
-{
- /*
- fbellini@cern.ch, 05.dec.2011
- definition of TOF match: quality cuts 2010 + kTOFout + kTIME
- (optionally) L > 350. cm cut can be added
- */
- if (!obj) {
- AliError("Invalid track object passed to function. Please check!");
- return kFALSE;
- }
-
- fAppliedCutID=AliRsnCutKaon::kTOFMatchStd2010;
-
- if (!IsSelectedByQualityStd2010(obj, kTRUE, kTRUE, kTRUE))
- return kFALSE;
-
- AliVTrack *track = dynamic_cast<AliVTrack *>(fDaughter->GetRef());
- if (!track) return kFALSE;
- return MatchTOF(track);
-}
-
-//-----------------------------------------------------------
-Bool_t AliRsnCutKaon::IsSelectedByFastTPCpidNsigma(TObject *obj,Float_t nSigmaCut=10.)
-{
- /*
- fbellini@cern.ch, 05.dec.2011 Double_t pTPC = track->GetTPCmomentum();
- definition of fast TPC pid N-sigma: quality cuts 2010 + sigma cut on dE/dx without p dependence
- */
- if (!obj) {
- AliError("Invalid track object passed to function. Please check!");
- return kFALSE;
- }
- fAppliedCutID=AliRsnCutKaon::kFastTPCpidNsigma;
-
- // check initialization of PID object
- AliPIDResponse *pid = fEvent->GetPIDResponse();
- if (!pid) {
- AliFatal("NULL PID response");
- return kFALSE;
- }
-
- if (!IsSelectedByQualityStd2010(obj, kTRUE, kTRUE, kTRUE))
- return kFALSE;
-
- AliVTrack *track = dynamic_cast<AliVTrack *>(fDaughter->GetRef());
- if (!track) return kFALSE;
-
- Double_t nsTPC = TMath::Abs(pid->NumberOfSigmasTPC(track,fPID));
- return (nsTPC <= nSigmaCut);
-}
-//-----------------------------------------------------------
-Bool_t AliRsnCutKaon::IsSelectedByFastTOFpidNsigma(TObject *obj,Float_t nSigmaCut=10.)
-{
- /*
- fbellini@cern.ch, 05.dec.2011
- definition of fast TOF pid N-sigma: quality cuts 2010 + sigma cut on t-t_0-t_exp without p dependence
- */
- if (!obj) {
- AliError("Invalid track object passed to function. Please check!");
- return kFALSE;
- }
-
- fAppliedCutID=AliRsnCutKaon::kFastTOFpidNsigma;
-
- // check initialization of PID object
- AliPIDResponse *pid = fEvent->GetPIDResponse();
- if (!pid) {
- AliFatal("NULL PID response");
- return kFALSE;
- }
-
- if (!IsSelectedByQualityStd2010(obj, kTRUE, kTRUE, kTRUE))
- return kFALSE;
-
- AliVTrack *track = dynamic_cast<AliVTrack *>(fDaughter->GetRef());
- if (!track) return kFALSE;
- Bool_t isTOF = MatchTOF(track);
- Double_t nsTOF = isTOF ? TMath::Abs(pid->NumberOfSigmasTOF(track, fPID)) : 1E20;
-
- return (nsTOF <= nSigmaCut);
-}
-
-//-----------------------------------------------------------
-Bool_t AliRsnCutKaon::IsSelectedByTPCTOFpidDefaultKstarPP2010(TObject *obj)
-{
- /*
- fbellini@cern.ch, 05.dec.2011
- definition of TPC-TOF pid for pp phi and Kstar analysis on 2010 data:
- quality cuts 2010 + sigma cut on dE/dx with pTPC dependence + sigma cut on t-t_0-t_exp with p dependence
- */
-
- if (!obj) {
- AliError("Invalid track object passed to function. Please check!");
- return kFALSE;
- }
- fAppliedCutID=AliRsnCutKaon::kTPCTOFpidDefaultKstarPP2010;
-
- // check initialization of PID object
- AliPIDResponse *pid = fEvent->GetPIDResponse();
- if (!pid) {
- AliFatal("NULL PID response");
- return kFALSE;
- }
-
- if (!IsSelectedByQualityStd2010(obj, kTRUE, kTRUE, kTRUE)) //require ITS+TPCrefit and TPCin
- return kFALSE;
-
- AliVTrack *track = dynamic_cast<AliVTrack *>(fDaughter->GetRef());
- if (!track) return kFALSE;
-
- Bool_t isTOF = MatchTOF(track);
- Double_t pTPC = track->GetTPCmomentum();
- Double_t p = track->P();
- Double_t nsTPC = TMath::Abs(pid->NumberOfSigmasTPC(track, fPID));
- Double_t nsTOF = isTOF ? TMath::Abs(pid->NumberOfSigmasTOF(track, fPID)) : 1E20;
- Double_t maxTPC = 1E20;
- Double_t maxTOF = 1E20;
-
- if (isTOF) {
- // TPC: 5sigma cut for all
- if (nsTPC > 5.0) return kFALSE;
- // TOF: 3sigma below 1.5 GeV, 2sigma above
- if (p < 1.5) maxTOF = 3.0; else maxTOF = 2.0;
- return (nsTOF <= maxTOF);
- } else {
- // TPC:
- // all below 350 MeV: 5sigma
- // all between 350 and 500 MeV: 3sigma
- // pios above 500 MeV: 2sigma
- // kaons between 500 and 700 MeV: 2sigma
- // kaons above 700 MeV: rejected
- if (pTPC <= 0.35)
- maxTPC = 5.0;
- else if (pTPC > 0.35 && pTPC <= 0.5)
- maxTPC = 3.0;
- else {
- if (pTPC <= 0.7) maxTPC = 2.0;
- else
- return kFALSE;
- }
- return (nsTPC <= maxTPC);
- }
-}
+++ /dev/null
-#ifndef ALIRSNCUTKAON_H
-#define ALIRSNCUTKAON_H
-
-//
-// Cuts for selecting good pion candidates for rsn analysis
-// Applies track quality selection plus PID selection,
-// with different tolerance ranges depending on the momentum.
-//
-
-#include "AliVTrack.h"
-#include "AliRsnCut.h"
-#include "AliRsnCutTrackQuality.h"
-
-class AliRsnCutKaon : public AliRsnCut {
-
-public:
- enum ERsnKaonCut {
- kQualityStd2010,
- kTOFMatchStd2010,
- kFastTPCpidNsigma,
- kFastTPCpid1point5sigma,
- kFastTPCpid2sigma,
- kFastTPCpid3sigma,
- kFastTOFpidNsigma,
- kFastTOFpid1point5sigma,
- kFastTOFpid2sigma,
- kFastTOFpid3sigma,
- kTPCTOFpidDefaultKstarPP2010,
- kNkaonCuts
- };
-
- AliRsnCutKaon(const char *name = "", AliRsnCutKaon::ERsnKaonCut cutID = AliRsnCutKaon::kQualityStd2010 , AliPID::EParticleType pid = AliPID::kKaon);
- virtual ~AliRsnCutKaon() { }
-
- void SetNoPID(Bool_t yn = kTRUE) {fNoPID = yn;}
- AliRsnCutTrackQuality *CutQuality() {return &fCutQuality;}
- Bool_t MatchTOF(const AliVTrack *vtrack);
-
- Bool_t IsSelected(TObject *obj);
-
- Bool_t IsSelectedByQualityStd2010(TObject *obj, Bool_t requireTPCin, Bool_t requireTPCrefit, Bool_t requireITSrefit );
- Bool_t IsSelectedByTOFMatchStd2010(TObject *obj);
-
- Bool_t IsSelectedByFastTPCpidNsigma(TObject *obj,Float_t nSigmaCut);
- Bool_t IsSelectedByFastTPCpid1point5sigma(TObject *obj) {return IsSelectedByFastTPCpidNsigma(obj, 1.5);}
- Bool_t IsSelectedByFastTPCpid2sigma(TObject *obj) {return IsSelectedByFastTPCpidNsigma(obj, 2.0);}
- Bool_t IsSelectedByFastTPCpid3sigma(TObject *obj) {return IsSelectedByFastTPCpidNsigma(obj, 3.0);}
-
- Bool_t IsSelectedByFastTOFpidNsigma(TObject *obj,Float_t nSigmaCut);
- Bool_t IsSelectedByFastTOFpid1point5sigma(TObject *obj) {return IsSelectedByFastTOFpidNsigma(obj, 1.5);}
- Bool_t IsSelectedByFastTOFpid2sigma(TObject *obj) {return IsSelectedByFastTOFpidNsigma(obj, 2.0);}
- Bool_t IsSelectedByFastTOFpid3sigma(TObject *obj) {return IsSelectedByFastTOFpidNsigma(obj, 3.0);}
-
- Bool_t IsSelectedByTPCTOFpidDefaultKstarPP2010(TObject *obj);
-
- //setters
- void SetNsigmaCutTPC(Float_t nMaxSigmaCut=1E6) {fNsigmaCutTPC=nMaxSigmaCut; return;}
- void SetNsigmaCutTOF(Float_t nMaxSigmaCut=1E6) {fNsigmaCutTOF=nMaxSigmaCut; return;}
-
- //getters
- const char *GetAppliedKaonCutName() { if (fAppliedCutID>0) { return fgkCutName[fAppliedCutID];} else {return "none";}}
- Int_t GetAppliedKaonCutId() { return fAppliedCutID;}
- const char *GetKaonCutName(const AliRsnCutKaon::ERsnKaonCut cutID) { return fgkCutName[cutID];}
-
-private:
-
- Bool_t fNoPID; // flag to switch off PID check
- AliPID::EParticleType fPID; // PID for track
- AliRsnCutTrackQuality fCutQuality; // track quality cut
- Int_t fAppliedCutID; // ID of applied cut
- static const char *fgkCutName[kNkaonCuts]; //array with cuts names
- Float_t fNsigmaCutTPC; // max sigma for TPC dE/dx fast cut
- Float_t fNsigmaCutTOF; // max sigma for TOF t-t0-t_exp fast cut
-
- ClassDef(AliRsnCutKaon, 1) // cut definitions for K*
-
-};
-
-#endif
+++ /dev/null
-//
-// All cuts for single pions
-// based on track quality and particle identification
-// with TPC and TOF.
-// Author: fbellini@cern.ch
-//
-//
-
-#include <Riostream.h>
-
-#include "AliPID.h"
-#include "AliPIDResponse.h"
-#include "AliRsnCutPion.h"
-
-ClassImp(AliRsnCutPion)
-
-const char *AliRsnCutPion::fgkCutName[AliRsnCutPion::kNpionCuts]= {
- "kQuality_Std2010",
- "kTOFMatch_Std2010",
- "kFastTPCpid_Nsigma",
- "kFastTPCpid_1point5sigma",
- "kFastTPCpid_2sigma",
- "kFastTPCpid_3sigma",
- "kFastTOFpid_Nsigma",
- "kFastTOFpid_1point5sigma",
- "kFastTOFpid_2sigma",
- "kFastTOFpid_3sigma",
- "kTPCTOFpid_DefaultKstarPP2010"
-};
-
-//__________________________________________________________________________________________________
-AliRsnCutPion::AliRsnCutPion(const char *name, AliRsnCutPion::ERsnPionCut cutID, AliPID::EParticleType pid) :
- AliRsnCut(name, AliRsnTarget::kDaughter),
- fNoPID(kFALSE),
- fPID(pid),
- fCutQuality(Form("%sQuality", name)),
- fAppliedCutID(cutID),
- fNsigmaCutTPC(1E6),
- fNsigmaCutTOF(1E6)
-{
- //
- // Constructor
- // Initialize track quality cuts to 2010 defaults
- //
- fCutQuality.SetPtRange(0.15, 1E+20);
- fCutQuality.SetEtaRange(-0.8, 0.8);
- fCutQuality.SetDCARPtFormula("0.0182+0.0350/pt^1.01");
- fCutQuality.SetDCAZmax(2.0);
- fCutQuality.SetSPDminNClusters(1);
- fCutQuality.SetITSminNClusters(0);
- fCutQuality.SetITSmaxChi2(1E+20);
- fCutQuality.SetTPCminNClusters(70);
- fCutQuality.SetTPCmaxChi2(4.0);
- fCutQuality.SetRejectKinkDaughters();
- fCutQuality.SetAODTestFilterBit(5);
- AliInfo(Form("Applied cut on pion candidate: %s", AliRsnCutPion::fgkCutName[fAppliedCutID]));
-}
-
-//__________________________________________________________________________________________________
-Bool_t AliRsnCutPion::MatchTOF(const AliVTrack *vtrack)
-{
-//
-// Checks if the track has matched the TOF detector
-//
- if (!vtrack) {
- AliWarning("NULL argument: impossible to check status");
- return kFALSE;
- }
- if (!(vtrack->GetStatus() & AliESDtrack::kTOFout)) return kFALSE;
- if (!(vtrack->GetStatus() & AliESDtrack::kTIME)) return kFALSE;
-
- return kTRUE;
-}
-
-//__________________________________________________________________________________________________
-Bool_t AliRsnCutPion::IsSelected(TObject *obj)
-{
-//
-// Global check
-//
- // coherence check
- if (!TargetOK(obj)) return kFALSE;
-
- // check track
- AliVTrack *track = dynamic_cast<AliVTrack *>(fDaughter->GetRef());
- if (!track) return kFALSE;
-
- Bool_t isSelected=kFALSE;
- switch (fAppliedCutID)
- {
- case AliRsnCutPion::kQualityStd2010:
- isSelected=IsSelectedByQualityStd2010(obj, 1, 1, 1);
- break;
-
- case AliRsnCutPion::kTOFMatchStd2010:
- isSelected=IsSelectedByTOFMatchStd2010(obj);
- break;
-
- case AliRsnCutPion::kFastTPCpidNsigma:
- isSelected=IsSelectedByFastTPCpidNsigma(obj,fNsigmaCutTPC);
- break;
-
- case AliRsnCutPion::kFastTPCpid1point5sigma:
- isSelected=IsSelectedByFastTPCpid1point5sigma(obj);
- break;
-
- case AliRsnCutPion::kFastTPCpid2sigma:
- isSelected=IsSelectedByFastTPCpid2sigma(obj);
- break;
-
- case AliRsnCutPion::kFastTPCpid3sigma:
- isSelected=IsSelectedByFastTPCpid3sigma(obj);
- break;
-
- case AliRsnCutPion::kFastTOFpidNsigma:
- isSelected=IsSelectedByFastTOFpidNsigma(obj,fNsigmaCutTOF);
- break;
-
- case AliRsnCutPion::kFastTOFpid1point5sigma:
- isSelected=IsSelectedByFastTOFpid1point5sigma(obj);
- break;
-
- case AliRsnCutPion::kFastTOFpid2sigma:
- isSelected=IsSelectedByFastTOFpid2sigma(obj);
- break;
-
- case AliRsnCutPion::kFastTOFpid3sigma:
- isSelected=IsSelectedByFastTOFpid3sigma(obj);
- break;
-
- case AliRsnCutPion::kTPCTOFpidDefaultKstarPP2010:
- isSelected=IsSelectedByTPCTOFpidDefaultKstarPP2010(obj);
- break;
-
- default :
- break;
- }
-
- return isSelected;
-}
-
-//-----------------------------------------------------------
-Bool_t AliRsnCutPion::IsSelectedByQualityStd2010(TObject *obj, Bool_t requireTPCin=kTRUE, Bool_t requireTPCrefit=kTRUE, Bool_t requireITSrefit=kTRUE)
-{
- //Checks if track passes the standard quality cuts
- //defined for analysis in 2010 pp and PbPb data
-
- if (!obj) {
- AliError("Invalid track object passed to function. Please check!");
- return kFALSE;
- }
-
- fAppliedCutID=AliRsnCutPion::kQualityStd2010;
- AliVTrack *track = dynamic_cast<AliVTrack *>(fDaughter->GetRef());
- if (!track) return kFALSE;
-
- //optionally check refit flags (to be used for Phi and kStar analysis)
- if (requireTPCin && ((track->GetStatus() & AliESDtrack::kTPCin) == 0) ) return kFALSE;
- if (requireTPCrefit && ((track->GetStatus() & AliESDtrack::kTPCrefit) == 0) ) return kFALSE;
- if (requireITSrefit && ((track->GetStatus() & AliESDtrack::kITSrefit) == 0) ) return kFALSE;
-
- // quality
- if (!fCutQuality.IsSelected(obj)) return kFALSE;
- return kTRUE;
-}
-
-//-----------------------------------------------------------
-Bool_t AliRsnCutPion::IsSelectedByTOFMatchStd2010(TObject *obj)
-{
- /*
- fbellini@cern.ch, 05.dec.2011
- definition of TOF match: quality cuts 2010 + kTOFout + kTIME
- (optionally) L > 350. cm cut can be added
- */
- if (!obj) {
- AliError("Invalid track object passed to function. Please check!");
- return kFALSE;
- }
-
- fAppliedCutID=AliRsnCutPion::kTOFMatchStd2010;
-
- if (!IsSelectedByQualityStd2010(obj, kTRUE, kTRUE, kTRUE))
- return kFALSE;
-
- AliVTrack *track = dynamic_cast<AliVTrack *>(fDaughter->GetRef());
- if (!track) return kFALSE;
- return MatchTOF(track);
-}
-
-//-----------------------------------------------------------
-Bool_t AliRsnCutPion::IsSelectedByFastTPCpidNsigma(TObject *obj,Float_t nSigmaCut=10.)
-{
- /*
- fbellini@cern.ch, 05.dec.2011 Double_t pTPC = track->GetTPCmomentum();
- definition of fast TPC pid N-sigma: quality cuts 2010 + sigma cut on dE/dx without p dependence
- */
- if (!obj) {
- AliError("Invalid track object passed to function. Please check!");
- return kFALSE;
- }
- fAppliedCutID=AliRsnCutPion::kFastTPCpidNsigma;
-
- // check initialization of PID object
- AliPIDResponse *pid = fEvent->GetPIDResponse();
- if (!pid) {
- AliFatal("NULL PID response");
- return kFALSE;
- }
-
- if (!IsSelectedByQualityStd2010(obj, kTRUE, kTRUE, kTRUE))
- return kFALSE;
-
- AliVTrack *track = dynamic_cast<AliVTrack *>(fDaughter->GetRef());
- if (!track) return kFALSE;
-
- Double_t nsTPC = TMath::Abs(pid->NumberOfSigmasTPC(track,fPID));
- return (nsTPC <= nSigmaCut);
-}
-//-----------------------------------------------------------
-Bool_t AliRsnCutPion::IsSelectedByFastTOFpidNsigma(TObject *obj,Float_t nSigmaCut=10.)
-{
- /*
- fbellini@cern.ch, 05.dec.2011
- definition of fast TOF pid N-sigma: quality cuts 2010 + sigma cut on t-t_0-t_exp without p dependence
- */
- if (!obj) {
- AliError("Invalid track object passed to function. Please check!");
- return kFALSE;
- }
-
- fAppliedCutID=AliRsnCutPion::kFastTOFpidNsigma;
-
- // check initialization of PID object
- AliPIDResponse *pid = fEvent->GetPIDResponse();
- if (!pid) {
- AliFatal("NULL PID response");
- return kFALSE;
- }
-
- if (!IsSelectedByQualityStd2010(obj, kTRUE, kTRUE, kTRUE))
- return kFALSE;
-
- AliVTrack *track = dynamic_cast<AliVTrack *>(fDaughter->GetRef());
- if (!track) return kFALSE;
- Bool_t isTOF = MatchTOF(track);
- Double_t nsTOF = isTOF ? TMath::Abs(pid->NumberOfSigmasTOF(track, fPID)) : 1E20;
-
- return (nsTOF <= nSigmaCut);
-}
-
-//-----------------------------------------------------------
-Bool_t AliRsnCutPion::IsSelectedByTPCTOFpidDefaultKstarPP2010(TObject *obj)
-{
- /*
- fbellini@cern.ch, 05.dec.2011
- definition of TPC-TOF pid for pp phi and Kstar analysis on 2010 data:
- quality cuts 2010 + sigma cut on dE/dx with pTPC dependence + sigma cut on t-t_0-t_exp with p dependence
- */
-
- if (!obj) {
- AliError("Invalid track object passed to function. Please check!");
- return kFALSE;
- }
- fAppliedCutID=AliRsnCutPion::kTPCTOFpidDefaultKstarPP2010;
-
- // check initialization of PID object
- AliPIDResponse *pid = fEvent->GetPIDResponse();
- if (!pid) {
- AliFatal("NULL PID response");
- return kFALSE;
- }
-
- if (!IsSelectedByQualityStd2010(obj, kTRUE, kTRUE, kTRUE)) //require ITS+TPCrefit and TPCin
- return kFALSE;
-
- AliVTrack *track = dynamic_cast<AliVTrack *>(fDaughter->GetRef());
- if (!track) return kFALSE;
-
- Bool_t isTOF = MatchTOF(track);
- Double_t pTPC = track->GetTPCmomentum();
- Double_t p = track->P();
- Double_t nsTPC = TMath::Abs(pid->NumberOfSigmasTPC(track, fPID));
- Double_t nsTOF = isTOF ? TMath::Abs(pid->NumberOfSigmasTOF(track, fPID)) : 1E20;
- Double_t maxTPC = 1E20;
- Double_t maxTOF = 1E20;
-
- if (isTOF) {
- // TPC: 5sigma cut for all
- if (nsTPC > 5.0) return kFALSE;
- // TOF: 3sigma below 1.5 GeV, 2sigma above
- if (p < 1.5) maxTOF = 3.0; else maxTOF = 2.0;
- return (nsTOF <= maxTOF);
- } else {
- // TPC:
- // all below 350 MeV: 5sigma
- // all between 350 and 500 MeV: 3sigma
- // pions above 500 MeV: 2sigma
- if (pTPC <= 0.35)
- maxTPC = 5.0;
- else if (pTPC > 0.35 && pTPC <= 0.5)
- maxTPC = 3.0;
- else
- maxTPC = 2.0;
-
- return (nsTPC <= maxTPC);
- }
-}
+++ /dev/null
-#ifndef ALIRSNCUTPION_H
-#define ALIRSNCUTPION_H
-
-//
-// Cuts for selecting good pion candidates for rsn analysis
-// Applies track quality selection plus PID selection,
-// with different tolerance ranges depending on the momentum.
-//
-
-#include "AliVTrack.h"
-#include "AliRsnCut.h"
-#include "AliRsnCutTrackQuality.h"
-
-class AliRsnCutPion : public AliRsnCut {
-
-public:
- enum ERsnPionCut {
- kQualityStd2010,
- kTOFMatchStd2010,
- kFastTPCpidNsigma,
- kFastTPCpid1point5sigma,
- kFastTPCpid2sigma,
- kFastTPCpid3sigma,
- kFastTOFpidNsigma,
- kFastTOFpid1point5sigma,
- kFastTOFpid2sigma,
- kFastTOFpid3sigma,
- kTPCTOFpidDefaultKstarPP2010,
- kNpionCuts
- };
-
- AliRsnCutPion(const char *name = "", AliRsnCutPion::ERsnPionCut cutID = AliRsnCutPion::kQualityStd2010, AliPID::EParticleType pid = AliPID::kPion);
- virtual ~AliRsnCutPion() { }
-
- void SetNoPID(Bool_t yn = kTRUE) {fNoPID = yn;}
- AliRsnCutTrackQuality *CutQuality() {return &fCutQuality;}
- Bool_t MatchTOF(const AliVTrack *vtrack);
-
- Bool_t IsSelected(TObject *obj);
-
- Bool_t IsSelectedByQualityStd2010(TObject *obj, Bool_t requireTPCin, Bool_t requireTPCrefit, Bool_t requireITSrefit );
- Bool_t IsSelectedByTOFMatchStd2010(TObject *obj);
-
- Bool_t IsSelectedByFastTPCpidNsigma(TObject *obj,Float_t nSigmaCut);
- Bool_t IsSelectedByFastTPCpid1point5sigma(TObject *obj) {return IsSelectedByFastTPCpidNsigma(obj, 1.5);}
- Bool_t IsSelectedByFastTPCpid2sigma(TObject *obj) {return IsSelectedByFastTPCpidNsigma(obj, 2.0);}
- Bool_t IsSelectedByFastTPCpid3sigma(TObject *obj) {return IsSelectedByFastTPCpidNsigma(obj, 3.0);}
-
- Bool_t IsSelectedByFastTOFpidNsigma(TObject *obj,Float_t nSigmaCut);
- Bool_t IsSelectedByFastTOFpid1point5sigma(TObject *obj) {return IsSelectedByFastTOFpidNsigma(obj, 1.5);}
- Bool_t IsSelectedByFastTOFpid2sigma(TObject *obj) {return IsSelectedByFastTOFpidNsigma(obj, 2.0);}
- Bool_t IsSelectedByFastTOFpid3sigma(TObject *obj) {return IsSelectedByFastTOFpidNsigma(obj, 3.0);}
-
- Bool_t IsSelectedByTPCTOFpidDefaultKstarPP2010(TObject *obj);
-
- //setters
- void SetNsigmaCutTPC(Float_t nMaxSigmaCut=1E6) {fNsigmaCutTPC=nMaxSigmaCut; return;}
- void SetNsigmaCutTOF(Float_t nMaxSigmaCut=1E6) {fNsigmaCutTOF=nMaxSigmaCut; return;}
-
- //getters
- const char *GetAppliedPionCutName() {if (fAppliedCutID>0) { return fgkCutName[fAppliedCutID];} else {return "none";}}
- Int_t GetAppliedPionCutId() { return fAppliedCutID;}
- const char *GetPionCutName(AliRsnCutPion::ERsnPionCut cutID) { return fgkCutName[cutID];}
-
-private:
-
- Bool_t fNoPID; // flag to switch off PID check
- AliPID::EParticleType fPID; // PID for track
- AliRsnCutTrackQuality fCutQuality; // track quality cut
- Int_t fAppliedCutID; // ID of applied cut
- static const char *fgkCutName[kNpionCuts]; //array with cuts names
- Float_t fNsigmaCutTPC; // max sigma for TPC dE/dx fast cut
- Float_t fNsigmaCutTOF; // max sigma for TOF t-t0-t_exp fast cut
-
- ClassDef(AliRsnCutPion,1) // cut definitions for K*
-
-};
-
-#endif