+#ifndef ALIHFEPIDTRD_H
+#define ALIHFEPIDTRD_H
+
/**************************************************************************
* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
* *
* about the suitability of this software for any purpose. It is *
* provided "as is" without express or implied warranty. *
**************************************************************************/
-#ifndef ALIHFEPIDTRD_H
-#define ALIHFEPIDTRD_H
+/* $Id$ */
+
+//
+// TRD PID Class
+// Does PID either on a x% electron efficiency basis or on dE/dx
+// For more information please check the implementation file
+//
#ifndef ALIHFEPIDBASE_H
#include "AliHFEpidBase.h"
#endif
class AliAODTrack;
class AliAODMCParticle;
class AliESDtrack;
+class AliHFEcollection;
class AliMCParticle;
class AliVParticle;
class TList;
kHistTRDSigV2 = 4,
kHistOverallSpecies = 5
};
+ AliHFEpidTRD();
AliHFEpidTRD(const Char_t *name);
AliHFEpidTRD(const AliHFEpidTRD &ref);
AliHFEpidTRD& operator=(const AliHFEpidTRD &ref);
virtual ~AliHFEpidTRD();
-
+
virtual Bool_t InitializePID();
- virtual Int_t IsSelected(AliHFEpidObject *track);
- virtual Bool_t HasQAhistos() const { return kTRUE; };
+ virtual Int_t IsSelected(const AliHFEpidObject *track, AliHFEpidQAmanager *pidqa) const;
- Double_t GetTRDSignalV1(AliESDtrack *track, Int_t mcPID);
- Double_t GetTRDSignalV2(AliESDtrack *track, Int_t mcPID);
+ Double_t GetTRDSignalV1(const AliESDtrack *track, Float_t truncation = 0.7) const;
+ Double_t GetTRDSignalV2(const AliESDtrack *track, Float_t trucation = 0.7) const;
+ Bool_t IsCalculateTRDSignals() const { return TestBit(kTRDsignals); }
void SetPIDMethod(PIDMethodTRD_t method) { fPIDMethod = method; };
+ void SetElectronEfficiency(Double_t electronEfficiency) { fElectronEfficiency = electronEfficiency; }
+ void SetThresholdParameters(Double_t electronEff, Double_t *params);
+ void SetMinP(Double_t p) { fMinP = p; }
+ void CalculateTRDSignals(Bool_t docalc) { SetBit(kTRDsignals, docalc); }
+
+ Double_t GetElectronLikelihood(const AliVParticle *track, AliHFEpidObject::AnalysisType_t anaType) const;
+ void GetTRDmomenta(const AliVParticle *track, AliHFEpidObject::AnalysisType_t anaType, Double_t *mom) const;
+ Double_t GetP(const AliVParticle *track, AliHFEpidObject::AnalysisType_t anaType) const;
+ Double_t GetTRDthresholds(Double_t electronEff, Double_t p) const;
+ Double_t GetChargeLayer(const AliVParticle *track, UInt_t layer, AliHFEpidObject::AnalysisType_t anatype) const;
protected:
+ enum{
+ kTRDsignals = BIT(16),
+ kTRDdefaultThresholds = BIT(17)
+ };
void Copy(TObject &ref) const;
- Int_t MakePIDesd(AliESDtrack *esdTrack, AliMCParticle *mcTrack);
- Int_t MakePIDaod(AliAODTrack *aofTrack, AliAODMCParticle *aodMC);
- Double_t GetTRDthresholds(Double_t electronEff, Double_t p);
- Int_t GetMCpid(AliESDtrack *track);
void InitParameters();
- virtual void AddQAhistograms(TList *l);
- void GetParameters(Double_t electronEff, Double_t *parameters);
+ void InitParameters1DLQ();
+ void GetParameters(Double_t electronEff, Double_t *parameters) const;
+ void SetUseDefaultParameters(Bool_t useDefault = kTRUE) { SetBit(kTRDdefaultThresholds, useDefault); }
+ Bool_t UseDefaultParameters() const { return TestBit(kTRDdefaultThresholds); }
- void FillHistogramsLikelihood(Int_t whenFilled, Float_t p, Float_t elProb);
- void FillHistogramsTRDSignalV1(Double_t signal, Double_t p, Int_t species);
- void FillHistogramsTRDSignalV2(Double_t signal, Double_t p, Int_t species);
private:
static const Double_t fgkVerySmall; // Check for 0
+ Double_t fMinP; // Minimum momentum above which TRD PID is applied
+ Double_t fElectronEfficiency; // Cut on electron efficiency
PIDMethodTRD_t fPIDMethod; // PID Method: 2D Likelihood or Neural Network
Double_t fThreshParams[kThreshParams]; // Threshold parametrisation
- TList *fContainer; // QA Histogram Container
ClassDef(AliHFEpidTRD, 1) // TRD electron ID class
};