+++ /dev/null
-/**************************************************************************
-* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
-* *
-* Author: The ALICE Off-line Project. *
-* Contributors are mentioned in the code where appropriate. *
-* *
-* Permission to use, copy, modify and distribute this software and its *
-* documentation strictly for non-commercial purposes is hereby granted *
-* without fee, provided that the above copyright notice appears in all *
-* copies and that both the copyright notice and this permission notice *
-* appear in the supporting documentation. The authors make no claims *
-* about the suitability of this software for any purpose. It is *
-* provided "as is" without express or implied warranty. *
-**************************************************************************/
-//
-// Extra Cuts from the ALICE HFE Group
-// Container for cuts which are currently not implemented by
-// the Correction Framework
-//
-#ifndef ALIHFEEXTRACUTS_H
-#define ALIHFEEXTRACUTS_H
-
-// #ifndef ALICFCUTBASE_H
-#include "AliCFCutBase.h"
-// #endif
-
-class TList;
-
-class AliVEvent;
-class AliVParticle;
-class AliVTrack;
-
-class AliHFEextraCuts : public AliCFCutBase{
- public:
- typedef enum{
- kFirst = 0,
- kSecond = 1,
- kBoth = 2,
- kNone = 3,
- kAny = 4,
- kExclusiveSecond = 5
- } ITSPixel_t;
- typedef enum{
- kFound = 0,
- kFoundIter1 = 1,
- kCrossedRows = 2
- } ETPCclusterDef_t;
- typedef enum{
- kFoundOverFindable = 0,
- kFoundOverFindableIter1 = 1,
- kFoundOverCR = 2,
- kCROverFindable = 3
- } ETPCclrDef_t;
- AliHFEextraCuts(const Char_t *name, const Char_t *title);
- AliHFEextraCuts(const AliHFEextraCuts &c);
- AliHFEextraCuts &operator=(const AliHFEextraCuts &c);
- virtual ~AliHFEextraCuts();
-
- virtual Bool_t IsSelected(TObject *o);
- virtual Bool_t IsSelected(TList *) { return kTRUE; };
- virtual void SetRecEventInfo(const TObject *event);
-
- inline void SetClusterRatioTPC(Double_t ratio, ETPCclrDef_t def);
- inline void SetRequireITSpixel(ITSPixel_t pixel);
- inline void SetMinImpactParamR(Double_t impactParam);
- 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);
- inline void SetMinTrackletsTRD(Int_t minTracklets, Bool_t exact = kFALSE);
- inline void SetMinNClustersTPC(Int_t minclusters, ETPCclusterDef_t def);
- 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 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 SetCheckITSstatus(Bool_t check) { fCheck = check; };
- 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
-
- protected:
- virtual void AddQAHistograms(TList *qaList);
- Bool_t CheckRecCuts(AliVTrack *track);
- Bool_t CheckMCCuts(AliVParticle * /*track*/) const;
- Bool_t CheckITSstatus(Int_t itsStatus) const;
- void FillQAhistosRec(AliVTrack *track, UInt_t when);
-// void FillQAhistosMC(AliMCParticle *track, UInt_t when);
- void FillCutCorrelation(ULong64_t survivedCut);
- void PrintBitMap(Int_t bitmap);
-
- // Getter Functions for ESD/AOD compatible mode
- Int_t GetITSstatus(AliVTrack *track, Int_t layer);
- UInt_t GetTPCncls(AliVTrack *track);
- UInt_t GetTPCnclusdEdx(AliVTrack *track);
- Bool_t GetTPCCountSharedMapBitsAboveThreshold(AliVTrack *track);
- Double_t GetTPCclusterRatio(AliVTrack *track);
- void GetImpactParameters(AliVTrack *track, Float_t &radial, Float_t &z);
- //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);
- Float_t GetTPCsharedClustersRatio(AliVTrack *track);
-
- private:
- typedef enum{
- kMinImpactParamR = 0,
- kMaxImpactParamR = 1,
- kMinImpactParamZ = 2,
- kMaxImpactParamZ = 3,
- kClusterRatioTPC = 4,
- kMinTrackletsTRD = 5,
- kPixelITS = 6,
- kMinHFEImpactParamR = 7,
- kMinHFEImpactParamNsigmaR = 8,
- kMinNClustersTPC = 9,
- kTPCfractionShared = 10,
- kTOFPID = 11,
- kTOFmismatch = 12,
- kTPCPIDCleanUp = 13,
- kEMCALmatch = 14,
- kMaxImpactParameterRpar = 15,
- kNcuts = 16
- } Cut_t;
- enum{
- //
- // Common Constants
- //
- kBeforeCuts =0,
- kAfterCuts = 1
- };
- static const Int_t fgkNQAhistos; // Number of QA histos
- AliVEvent *fEvent; //! working event
- ULong64_t fCutCorrelation; // Cut Correlation
- ULong64_t fRequirements; // Cut Requirements
- Float_t fImpactParamCut[4]; // Impact Parmameter Cut
- Float_t fIPcutParam[4]; // Parmameter of impact parameter cut parametrization
- UInt_t fMinNClustersTPC; // Minimum TPC clusters cut
- Float_t fClusterRatioTPC; // Ratio of findable vs. found clusters in TPC
- UChar_t fMinTrackletsTRD; // Min. Number of Tracklets inside TRD
- 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 fCheck; // check
- TList *fQAlist; //! Directory for QA histograms
- Int_t fDebugLevel; // Debug Level
-
- ClassDef(AliHFEextraCuts, 1) // Additional cuts implemented by the ALICE HFE group
-};
-
-//__________________________________________________________
-void AliHFEextraCuts::SetClusterRatioTPC(Double_t ratio, ETPCclrDef_t def) {
- SETBIT(fRequirements, kClusterRatioTPC);
- SETBIT(fTPCclusterRatioDef, def);
- fClusterRatioTPC = ratio;
-}
-
-//__________________________________________________________
-void AliHFEextraCuts::SetRequireITSpixel(ITSPixel_t pixel) {
- SETBIT(fRequirements, kPixelITS);
- fPixelITS = pixel;
-}
-
-//__________________________________________________________
-void AliHFEextraCuts::SetMinImpactParamR(Double_t impactParam){
- SETBIT(fRequirements, kMinImpactParamR);
- fImpactParamCut[0] = impactParam;
-}
-
-//__________________________________________________________
-void AliHFEextraCuts::SetMaxImpactParamR(Double_t impactParam){
- SETBIT(fRequirements, kMaxImpactParamR);
- fImpactParamCut[2] = impactParam;
-}
-
-//__________________________________________________________
-void AliHFEextraCuts::SetMinImpactParamZ(Double_t impactParam){
- SETBIT(fRequirements, kMinImpactParamZ);
- fImpactParamCut[1] = impactParam;
-}
-
-//__________________________________________________________
-void AliHFEextraCuts::SetMaxImpactParamZ(Double_t impactParam){
- SETBIT(fRequirements, kMaxImpactParamZ);
- fImpactParamCut[3] = impactParam;
-}
-
-//__________________________________________________________
-void AliHFEextraCuts::SetMinHFEImpactParamR(Float_t ipcutParam[4], Bool_t isSigmacut){
- 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];
-}
-
-//__________________________________________________________
-void AliHFEextraCuts::SetMinTrackletsTRD(Int_t minTracklets, Bool_t exact){
- SETBIT(fRequirements, kMinTrackletsTRD);
- fMinTrackletsTRD = minTracklets;
- fTRDtrackletsExact = exact;
-}
-
-//__________________________________________________________
-void AliHFEextraCuts::SetMinNClustersTPC(Int_t minClusters, ETPCclusterDef_t tpcdef){
- SETBIT(fRequirements, kMinNClustersTPC);
- SETBIT(fTPCclusterDef, tpcdef);
- fMinNClustersTPC = minClusters;
-}
-#endif