Bool_t CheckParticleCuts(UInt_t step, TObject *o);
Bool_t CheckEventCuts(const char*namestep, TObject *o);
void SetRecEvent(const AliVEvent *ev);
- void SetMCEvent(const AliMCEvent *ev);
+ void SetMCEvent(const AliVEvent *ev);
TList *GetQAhistograms() const { return fHistQA; }
// Getters
Bool_t IsRequireITSpixel() const { return TESTBIT(fRequirements, kITSPixel); };
+ Bool_t IsRequireITSdrift() const { return TESTBIT(fRequirements, kITSDrift); };
Bool_t IsRequireMaxImpactParam() const { return TESTBIT(fRequirements, kMaxImpactParam); };
Bool_t IsRequirePrimary() const { return TESTBIT(fRequirements, kPrimary); };
Bool_t IsRequireProdVertex() const { return TESTBIT(fRequirements, kProductionVertex); };
Bool_t IsRequireKineMCCuts() const {return TESTBIT(fRequirements, kKineMCCuts); };
Double_t GetVertexRange() const {return fVertexRangeZ; };
Int_t GetMinTrackletsTRD() const { return fMinTrackletsTRD; }
+ Bool_t GetUseMixedVertex() const { return fUseMixedVertex;};
// Setters
inline void SetCutITSpixel(UChar_t cut);
+ inline void SetCutITSdrift(UChar_t cut);
void SetCheckITSLayerStatus(Bool_t checkITSLayerStatus) { fCheckITSLayerStatus = checkITSLayerStatus; }
void SetMinNClustersTPC(UChar_t minClustersTPC) { fMinClustersTPC = minClustersTPC; }
void SetMinNClustersTPCPID(UChar_t minClustersTPC) { fMinClustersTPCPID = minClustersTPC; }
void SetMinNClustersITS(UChar_t minClustersITS) { fMinClustersITS = minClustersITS; }
void SetMinNTrackletsTRD(UChar_t minNtrackletsTRD, Bool_t exact = kFALSE) { fMinTrackletsTRD = minNtrackletsTRD; fTRDtrackletsExact = exact; }
+ void SetMaxChi2perTrackletTRD(Float_t maxchi2trackletTRD) { fMaxChi2TRD = maxchi2trackletTRD; }
void SetMaxChi2perClusterITS(Double_t chi2) { fMaxChi2clusterITS = chi2; };
void SetMaxChi2perClusterTPC(Double_t chi2) { fMaxChi2clusterTPC = chi2; };
inline void SetMaxImpactParam(Double_t radial, Double_t z);
- inline void SetIPcutParam(Float_t p0, Float_t p1, Float_t p2, Float_t p3, Bool_t isipsigma);
+ inline void SetIPcutParam(Float_t p0, Float_t p1, Float_t p2, Float_t p3, Bool_t isIPcharge, Bool_t isipsigma, Bool_t isopp);
void SetMinRatioTPCclusters(Double_t minRatioTPC) { fMinClusterRatioTPC = minRatioTPC; };
void SetPtRange(Double_t ptmin, Double_t ptmax){fPtRange[0] = ptmin; fPtRange[1] = ptmax;};
+ void SetTOFsignaldxz(Double_t tofsignaldx, Double_t tofsignaldz){fTOFsignaldx = tofsignaldx; fTOFsignaldz = tofsignaldz;};
+ void SetAODFilterBit(Int_t bit) { fAODFilterBit = bit; };
inline void SetProductionVertex(Double_t xmin, Double_t xmax, Double_t ymin, Double_t ymax);
inline void SetSigmaToVertex(Double_t sig);
inline void SetSigmaToVertexXY(Double_t sig);
inline void SetSigmaToVertexZ(Double_t sig);
- void SetTPCmodes(AliHFEextraCuts::ETPCclusterDef_t clusterDef, AliHFEextraCuts::ETPCclrDef_t ratioDef) {
+ void SetTPCmodes(UChar_t clusterDef, UChar_t ratioDef) {
fTPCclusterDef= clusterDef;
fTPCratioDef = ratioDef;
}
+ void SetEtaRange(Double_t etaRange){fEtaRange[0] = -etaRange; fEtaRange[1] = etaRange;};
+ void SetEtaRange(Double_t etamin, Double_t etamax){fEtaRange[0] = etamin; fEtaRange[1] = etamax;};
void SetVertexRange(Double_t zrange){fVertexRangeZ = zrange;};
void SetTOFPIDStep(Bool_t tofPidStep) {fTOFPIDStep = tofPidStep;};
void SetTOFMISMATCHStep(Bool_t tofMismatchStep) {fTOFMISMATCHStep = tofMismatchStep;};
void SetTPCPIDCleanUpStep(Bool_t tpcPIDCleanUpStep) {fTPCPIDCLEANUPStep = tpcPIDCleanUpStep;};
- void SetUseMixedVertex(Bool_t useMixedVertex) {fUseMixedVertex = useMixedVertex;};
+ void SetITSpatternCut() { fITSpatternCut = kTRUE; }
+ inline void SetUseMixedVertex(Bool_t useMixedVertex);
+ inline void SetUseSPDVertex(Bool_t useSPDVertex);
+ void SetUseCorrelationVertex() { fUseCorrelationVertex = kTRUE;};
+ void SetSPDVtxResolutionCut() {fSPDVtxResolution = kTRUE;}
void SetFractionOfSharedTPCClusters(Double_t fractionOfSharedTPCClusters) {fFractionOfSharedTPCClusters = fractionOfSharedTPCClusters;};
void SetMaxImpactParameterRpar(Bool_t maxImpactParameterRpar) { fMaxImpactParameterRpar = maxImpactParameterRpar; };
inline void CreateStandardCuts();
// Requirements
+ void SetAdditionalStatusRequirement(Long_t requirement) {fAdditionalStatusRequirement = requirement;}
void SetRequireDCAToVertex() { SETBIT(fRequirements, kDCAToVertex); CLRBIT(fRequirements, kSigmaToVertex); };
void SetRequireIsPrimary() { SETBIT(fRequirements, kPrimary); };
void SetRequireITSPixel() { SETBIT(fRequirements, kITSPixel); }
+ void SetRequireITSDrift() { SETBIT(fRequirements, kITSDrift); }
+ void UnsetRequireITSPixel() { CLRBIT(fRequirements, kITSPixel); }
void SetRequireProdVertex() { SETBIT(fRequirements, kProductionVertex); };
void SetRequireSigmaToVertex() { SETBIT(fRequirements, kSigmaToVertex); CLRBIT(fRequirements, kDCAToVertex); };
void UnsetVertexRequirement() { CLRBIT(fRequirements, kDCAToVertex); CLRBIT(fRequirements, kSigmaToVertex); }
kDCAToVertex = 3,
kITSPixel = 4,
kMaxImpactParam = 5,
- kKineMCCuts = 6
+ kKineMCCuts = 6,
+ kITSDrift = 7
} Require_t;
void SetParticleGenCutList();
void SetAcceptanceCutList();
static const Char_t* fgkUndefined; // Name for undefined (overflow)
ULong64_t fRequirements; // Bitmap for requirements
- AliHFEextraCuts::ETPCclusterDef_t fTPCclusterDef; // TPC cluster definition
- AliHFEextraCuts::ETPCclrDef_t fTPCratioDef; // TPC cluster ratio Definition
+ UChar_t fTPCclusterDef; // TPC cluster definition
+ UChar_t fTPCratioDef; // TPC cluster ratio Definition
+ Double_t fEtaRange[2]; // Eta range
Double_t fDCAtoVtx[2]; // DCA to Vertex
Double_t fProdVtx[4]; // Production Vertex
Double_t fPtRange[2]; // pt range
UChar_t fMinClustersTPCPID; // Min.Number of TPC clusters
UChar_t fMinClustersITS; // Min.Number of TPC clusters
UChar_t fMinTrackletsTRD; // Min. Number of TRD tracklets
+ Float_t fMaxChi2TRD; // Max. Chi2 per TRD tracklet
UChar_t fCutITSPixel; // Cut on ITS pixel
Bool_t fCheckITSLayerStatus; // Check ITS layer status
+ UChar_t fCutITSDrift; // Cut on ITS drift
Double_t fMaxChi2clusterITS; // Max Chi2 per ITS cluster
Double_t fMaxChi2clusterTPC; // Max Chi2 per TPC cluster
Double_t fMinClusterRatioTPC; // Min. Ratio findable / found TPC clusters
Bool_t fTOFPIDStep; // TOF matching step efficiency
Bool_t fTOFMISMATCHStep; // TOF mismatch step
Bool_t fTPCPIDCLEANUPStep; // TPC PIC cleanup step
- Bool_t fUseMixedVertex; // Use primary vertex from track only as before
+ Bool_t fITSpatternCut; // Cut on ITS pattern
+ Bool_t fUseMixedVertex; // Use primary vertex from track if there otherwise SPD vertex
+ Bool_t fUseSPDVertex; // Use primary SPD vertex
+ Bool_t fUseCorrelationVertex; // Use the correlation of the vertex in z
+ Bool_t fSPDVtxResolution; // Check resolution of the SPD vertex
Float_t fIPCutParams[4]; // Parameters of impact parameter cut parametrization
- Bool_t fIsIPSigmacut; // if abs IP cut or IP sigma cut
+ Bool_t fIsIPSigmacut; // if IP cut or IP sigma cut
+ Bool_t fIsIPcharge; // if cut on IP * charge (cut using only positive side of distribution, to eliminate conversions)
+ Bool_t fIsIPOpp; // if IP*charge cut on side of the photon peak
Double_t fFractionOfSharedTPCClusters; // Fraction of shared TPC clusters
Bool_t fMaxImpactParameterRpar; // Max impact parameter
-
-
+ Long_t fAdditionalStatusRequirement; // Additional status bit requirement
+ Double_t fTOFsignaldx; // TOF signal Dx
+ Double_t fTOFsignaldz; // TOF signal Dz
+ Int_t fAODFilterBit; // AOD Filter Bit Number
TList *fHistQA; //! QA Histograms
TObjArray *fCutList; //! List of cut objects(Correction Framework Manager)
Int_t fDebugLevel; // Debug Level
- ClassDef(AliHFEcuts, 2) // Container for HFE cuts
+ ClassDef(AliHFEcuts, 5) // Container for HFE cuts
};
//__________________________________________________________________
}
//__________________________________________________________________
-void AliHFEcuts::SetIPcutParam(Float_t p0, Float_t p1, Float_t p2, Float_t p3, Bool_t isipsigma){
+void AliHFEcuts::SetIPcutParam(Float_t p0, Float_t p1, Float_t p2, Float_t p3, Bool_t isipsigma, Bool_t isIPcharge, Bool_t isopp){
// Set parameters for impact parameter cut parametrization
fIPCutParams[0] = p0;
fIPCutParams[1] = p1;
fIPCutParams[2] = p2;
fIPCutParams[3] = p3;
fIsIPSigmacut = isipsigma;
+ fIsIPcharge = isIPcharge;
+ fIsIPOpp = isopp;
}
//__________________________________________________________________
fCutITSPixel = cut;
}
+//__________________________________________________________________
+void AliHFEcuts::SetCutITSdrift(UChar_t cut){
+ SetRequireITSDrift();
+ fCutITSDrift = cut;
+}
+//__________________________________________________________________
+void AliHFEcuts::SetUseMixedVertex(Bool_t useMixedVertex){
+ //
+ // Choice of a vertex
+ //
+ fUseMixedVertex = useMixedVertex;
+ if(useMixedVertex) fUseSPDVertex = kFALSE;
+}
+//__________________________________________________________________
+void AliHFEcuts::SetUseSPDVertex(Bool_t useSPDVertex){
+ //
+ // Choice of a vertex
+ //
+ fUseSPDVertex = useSPDVertex;
+ if(useSPDVertex) fUseMixedVertex = kFALSE;
+}
+
//__________________________________________________________________
void AliHFEcuts::CreateStandardCuts(){
//