+
/**************************************************************************
* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
* *
#include "AliCFCutBase.h"
// #endif
+#ifndef ROOT_TArrayI
+#include <TArrayI.h>
+#endif
+
class TList;
class AliVEvent;
class AliVParticle;
class AliVTrack;
+class AliVVertex;
+class AliAODVertex;
+class AliAODEvent;
+class AliESDEvent;
class AliHFEextraCuts: public AliCFCutBase{
public:
typedef enum{
kFound = 0,
kFoundIter1 = 1,
- kCrossedRows = 2
+ kCrossedRows = 2,
+ kFoundAll = 3
} ETPCclusterDef_t;
typedef enum{
kFoundOverFindable = 0,
kFoundOverFindableIter1 = 1,
kFoundOverCR = 2,
- kCROverFindable = 3
+ kCROverFindable = 3,
+ kFoundAllOverFindable = 4,
} ETPCclrDef_t;
AliHFEextraCuts(const Char_t *name, const Char_t *title);
AliHFEextraCuts(const AliHFEextraCuts &c);
inline void SetMaxImpactParamR(Double_t impactParam);
inline void SetMinImpactParamZ(Double_t impactParam);
inline void SetMaxImpactParamZ(Double_t impactParam);
- inline void SetMinHFEImpactParamR(Float_t ipcutParam[4], Bool_t issigmacut, Bool_t isabs);
+ inline void SetMinHFEImpactParamR(Float_t ipcutParam[4], Bool_t issigmacut, Bool_t isipcharge, Bool_t isopp);
inline void SetMinTrackletsTRD(Int_t minTracklets, Bool_t exact = kFALSE);
+ inline void SetMaxChi2TRD(Float_t maxchi2);
inline void SetMinNClustersTPC(Int_t minclusters, ETPCclusterDef_t def);
void SetMinNClustersTPCPID(Int_t minclusters) { SETBIT(fRequirements, kMinNClustersTPCPID); fMinNClustersTPCPID = minclusters; }
void SetTOFPID(Bool_t tofPid) { tofPid ? SETBIT(fRequirements, kTOFPID) : CLRBIT(fRequirements, kTOFPID); }
void SetTOFMISMATCH(Bool_t tofMismatch) { tofMismatch ? SETBIT(fRequirements, kTOFmismatch) : CLRBIT(fRequirements, kTOFmismatch); }
+ void SetMatchTOFLabel(Bool_t match) {match ? SETBIT(fRequirements, kTOFlabel) : CLRBIT(fRequirements, kTOFlabel); }
void SetTPCPIDCleanUp(Bool_t tpcPIDCleanUp) { tpcPIDCleanUp ? SETBIT(fRequirements, kTPCPIDCleanUp) : CLRBIT(fRequirements, kTPCPIDCleanUp); }
void SetMaxImpactParameterRpar(Bool_t maxImpactParameterRpar) { maxImpactParameterRpar ? SETBIT(fRequirements, kMaxImpactParameterRpar) : CLRBIT(fRequirements, kMaxImpactParameterRpar); }
void SetFractionOfTPCSharedClusters(Double_t fractionShared) { fFractionTPCShared= fractionShared; SETBIT(fRequirements, kTPCfractionShared); }
void SetTOFsignalDxz(Double_t tofsignalDx,Double_t tofsignalDz) { fTOFsignalDx=tofsignalDx; fTOFsignalDz=tofsignalDz; SETBIT(fRequirements, kTOFsignalDxy); }
void SetRejectKinkDaughter() { SETBIT(fRequirements, kRejectKinkDaughter);};
void SetRejectKinkMother() { SETBIT(fRequirements, kRejectKinkMother);};
+ void SetAODFilterBit(Int_t bit) {fAODFilterBit = bit; SETBIT(fRequirements, kAODFilterBit);};
void SetCheckITSstatus(Bool_t check) { fCheck = check; };
+ void SetITSpatternCut() { SETBIT(fRequirements, kITSpattern); }
void SetDebugLevel(Int_t level) { fDebugLevel = level; };
Bool_t GetCheckITSstatus() const { return fCheck; };
Int_t GetDebugLevel() const { return fDebugLevel; };
- void GetHFEImpactParameters(AliVTrack *track, Double_t &dcaxy, Double_t &dcansigmaxy); // temporary moved from protected to publich for IP QA
- void GetHFEImpactParameters(AliVTrack *track, Double_t dcaD[2], Double_t covD[3]);
- Int_t GetITSstatus(AliVTrack *track, Int_t layer);
+ void GetHFEImpactParameters(const AliVTrack * const track, Double_t &dcaxy, Double_t &dcansigmaxy); // temporary moved from protected to publich for IP QA
+ void GetHFEImpactParameters(const AliVTrack * const track, Double_t dcaD[2], Double_t covD[3]);
+ void GetImpactParameters(AliVTrack *track, Float_t &radial, Float_t &z);
+ const AliVVertex* RemoveDaughtersFromPrimaryVtx(const AliESDEvent * const esdevent, const AliVTrack * const track);
+ AliAODVertex* RemoveDaughtersFromPrimaryVtx(const AliAODEvent * const aod, const AliVTrack * const track);
+ Int_t GetITSstatus(const AliVTrack * const track, Int_t layer) const;
Bool_t CheckITSstatus(Int_t itsStatus) const;
+ Bool_t CheckITSpattern(const AliVTrack *const track) const;
+ Bool_t IsKinkDaughter(AliVTrack *track);
+ Bool_t IsKinkMother(AliVTrack *track);
+
void UnSetRejectKinkDaughter() { CLRBIT(fRequirements, kRejectKinkDaughter);};
void UnSetRejectKinkMother() { CLRBIT(fRequirements, kRejectKinkMother);};
// Getter Functions for ESD/AOD compatible mode
UInt_t GetTPCncls(AliVTrack *track);
Bool_t GetTPCCountSharedMapBitsAboveThreshold(AliVTrack *track);
- Double_t GetTPCclusterRatio(AliVTrack *track);
- void GetImpactParameters(AliVTrack *track, Float_t &radial, Float_t &z);
+ Double_t GetTPCclusterRatio(AliVTrack *track);
//void GetHFEImpactParameters(AliVTrack *track, Double_t &dcaxy, Double_t &dcansigmaxy);
- void GetHFEImpactParameterCuts(AliVTrack *track, Double_t &hfeimpactRcut, Double_t &hfeimpactnsigmaRcut);
- void GetMaxImpactParameterCutR(AliVTrack *track, Double_t &maximpactRcut);
- void GetTOFsignalDxDz(AliVTrack *track, Double_t &tofsignalDx, Double_t &tofsignalDz);
+ void GetHFEImpactParameterCuts(const AliVTrack * const track, Double_t &hfeimpactRcut, Double_t &hfeimpactnsigmaRcut);
+ void GetMaxImpactParameterCutR(const AliVTrack * const track, Double_t &maximpactRcut);
+ void GetTOFsignalDxDz(const AliVTrack * const track, Double_t &tofsignalDx, Double_t &tofsignalDz);
Float_t GetTPCsharedClustersRatio(AliVTrack *track);
+ Float_t GetTRDchi(AliVTrack *track);
Int_t GetITSNbOfcls(AliVTrack *track);
- Bool_t IsKinkDaughter(AliVTrack *track);
- Bool_t IsKinkMother(AliVTrack *track);
+ Bool_t MatchTOFlabel(const AliVTrack * const track) const;
private:
typedef enum{
kRejectKinkMother = 19,
kDriftITS = 20,
kTOFsignalDxy = 21,
- kNcuts = 22
+ kMaxTRDChi2 = 22,
+ kITSpattern = 23,
+ kMinHFEImpactParamRcharge = 24,
+ kAODFilterBit=25,
+ kTOFlabel=26,
+ kNcuts = 27
} Cut_t;
enum{
//
UInt_t fMinNClustersTPCPID; // Minimum TPC PID clusters cut
Float_t fClusterRatioTPC; // Ratio of findable vs. found clusters in TPC
UChar_t fMinTrackletsTRD; // Min. Number of Tracklets inside TRD
+ Float_t fMaxChi2TRD; // Max chi2 TRD
UChar_t fMinNbITScls; // Min. Number of ITS clusters
Bool_t fTRDtrackletsExact; // Require exact number of tracklets
UChar_t fPixelITS; // Cut on ITS Pixels
UChar_t fTPCclusterDef; // TPC cluster definition Bitmap
UChar_t fTPCclusterRatioDef; // TPC cluster ratio definition Bitmap
Double_t fFractionTPCShared; // Cut on fraction of shared clusters
- Bool_t fAbsHFEImpactParamNsigmaR; // flag to use abs ip cut
+ Bool_t fOppSideIPcut; // flag to use conversion peak side of ip*charge cut
Double_t fTOFsignalDx; // TOF signal dx
Double_t fTOFsignalDz; // TOF signal dz
+ Double_t fMagField; // Magnetic field
+ Int_t fAODFilterBit; // Require AOD filter bit
+ TArrayI fListKinkMothers; // List of Kink Mothers (AOD analysis)
+ Int_t fNumberKinkMothers; // Number of Kink mothers
Bool_t fCheck; // check
TList *fQAlist; //! Directory for QA histograms
}
//__________________________________________________________
-void AliHFEextraCuts::SetMinHFEImpactParamR(Float_t ipcutParam[4], Bool_t isSigmacut, Bool_t isabs){
- if(isSigmacut) SETBIT(fRequirements, kMinHFEImpactParamNsigmaR);
- else SETBIT(fRequirements, kMinHFEImpactParamR);
- fIPcutParam[0]=ipcutParam[0];
- fIPcutParam[1]=ipcutParam[1];
- fIPcutParam[2]=ipcutParam[2];
- fIPcutParam[3]=ipcutParam[3];
- fAbsHFEImpactParamNsigmaR = isabs;
+void AliHFEextraCuts::SetMinHFEImpactParamR(Float_t ipcutParam[4], Bool_t isSigmacut, Bool_t isIPcharge, Bool_t isopp){
+ if(isSigmacut){ SETBIT(fRequirements, kMinHFEImpactParamNsigmaR);}
+ else{
+ if(isIPcharge){ SETBIT(fRequirements, kMinHFEImpactParamRcharge);}
+ else {SETBIT(fRequirements, kMinHFEImpactParamR);}
+ fIPcutParam[0]=ipcutParam[0];
+ fIPcutParam[1]=ipcutParam[1];
+ fIPcutParam[2]=ipcutParam[2];
+ fIPcutParam[3]=ipcutParam[3];
+ fOppSideIPcut = isopp;
+ }
}
//__________________________________________________________
fTRDtrackletsExact = exact;
}
+//__________________________________________________________
+void AliHFEextraCuts::SetMaxChi2TRD(Float_t maxchi2){
+ SETBIT(fRequirements, kMaxTRDChi2);
+ fMaxChi2TRD = maxchi2;
+}
+
+
//__________________________________________________________
void AliHFEextraCuts::SetMinNClustersTPC(Int_t minClusters, ETPCclusterDef_t tpcdef){
SETBIT(fRequirements, kMinNClustersTPC);