]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - STEER/STEERBase/AliTRDPIDResponse.h
Commit message
[u/mrichter/AliRoot.git] / STEER / STEERBase / AliTRDPIDResponse.h
index 8c2582b1c6dabd49729fde9c50b6b1ca202e2dcc..b72d9009b110fe15c49c89575681dda1d7ef6afa 100644 (file)
@@ -31,6 +31,7 @@
 class TObjArray;
 class AliVTrack;
 class AliTRDPIDResponseObject;
+class AliTRDdEdxParams;
 
 class AliTRDPIDResponse : public TObject {
   public:
@@ -39,7 +40,7 @@ class AliTRDPIDResponse : public TObject {
     };
     enum ETRDPIDResponseDef {
        kNlayer = 6
-       ,kNPBins = 6
+       ,kNPBins = 6
     };
     enum ETRDPIDMethod {
        kNN   = 0,
@@ -51,46 +52,51 @@ class AliTRDPIDResponse : public TObject {
     };
     enum ETRDNslices {
        kNslicesLQ1D = 1,
-      kNslicesLQ2D = 2,
-      kNslicesNN = 7
+       kNslicesLQ2D = 2,
+       kNslicesNN = 7
     };
     AliTRDPIDResponse();
     AliTRDPIDResponse(const AliTRDPIDResponse &ref);
     AliTRDPIDResponse& operator=(const AliTRDPIDResponse &ref);
     ~AliTRDPIDResponse();
     
-    ETRDPIDMethod     GetPIDmethod() const { return fPIDmethod;}
-    Bool_t    GetResponse(Int_t n, const Double_t * const dedx, const Float_t * const p, Double_t prob[AliPID::kSPECIES], Bool_t kNorm=kTRUE) const;
-    inline ETRDNslices  GetNumberOfSlices() const;
+    Double_t GetNumberOfSigmas(const AliVTrack *track, AliPID::EParticleType type) const;
+    Double_t GetSignalDelta( const AliVTrack* track, AliPID::EParticleType type, Bool_t ratio=kFALSE, Double_t *info=0x0) const;
+    static Double_t MeandEdx(const Double_t * xx, const Float_t * par);
+    static Double_t MeanTR(const Double_t * xx, const Float_t * par);
+    static Double_t MeandEdxTR(const Double_t * xx, const Float_t * par);
+    static Double_t ResolutiondEdxTR(const Double_t * xx,  const Float_t * par);
+
+    Int_t    GetResponse(Int_t n, const Double_t * const dedx, const Float_t * const p, Double_t prob[AliPID::kSPECIES],ETRDPIDMethod PIDmethod=kLQ1D, Bool_t kNorm=kTRUE) const;
+    inline ETRDNslices  GetNumberOfSlices(ETRDPIDMethod PIDmethod=kLQ1D) const;
     
     Bool_t    IsOwner() const {return TestBit(kIsOwner);}
     
     void      SetOwner();
-    void      SetPIDmethod(ETRDPIDMethod m) {fPIDmethod=m;}
     void      SetGainNormalisationFactor(Double_t gainFactor) { fGainNormalisationFactor = gainFactor; }
 
     Bool_t SetPIDResponseObject(const AliTRDPIDResponseObject * obj);
+    Bool_t SetdEdxParams(const AliTRDdEdxParams * par);
     
     Bool_t    Load(const Char_t *filename = NULL);
   
-    Bool_t    IdentifiedAsElectron(Int_t nTracklets, const Double_t *like, Double_t p, Double_t level) const;
+    Bool_t    IdentifiedAsElectron(Int_t nTracklets, const Double_t *like, Double_t p, Double_t level,Double_t centrality=-1,ETRDPIDMethod PIDmethod=kLQ1D) const;
   
   private:
-    Bool_t    CookdEdx(Int_t nSlice, const Double_t * const in, Double_t *out) const;
-    Double_t  GetProbabilitySingleLayer(Int_t species, Double_t plocal, Double_t *dEdx) const;
+    Bool_t    CookdEdx(Int_t nSlice, const Double_t * const in, Double_t *out,ETRDPIDMethod PIDmethod=kLQ1D) const;
+    Double_t  GetProbabilitySingleLayer(Int_t species, Double_t plocal, Double_t *dEdx,ETRDPIDMethod PIDmethod=kLQ1D) const;
     
     const AliTRDPIDResponseObject *fkPIDResponseObject;   // PID References and Params
+    const AliTRDdEdxParams * fkTRDdEdxParams; //parametrisation for truncated mean
     Double_t  fGainNormalisationFactor;         // Gain normalisation factor
-    ETRDPIDMethod   fPIDmethod;                 // PID method selector
-      
   
   ClassDef(AliTRDPIDResponse, 3)    // Tool for TRD PID
 };
 
-AliTRDPIDResponse::ETRDNslices AliTRDPIDResponse::GetNumberOfSlices() const {
+AliTRDPIDResponse::ETRDNslices AliTRDPIDResponse::GetNumberOfSlices(ETRDPIDMethod PIDmethod) const {
   // Get the current number of slices
   ETRDNslices slices = kNslicesLQ1D;
-  switch(fPIDmethod){
+  switch(PIDmethod){
     case kLQ1D: slices = kNslicesLQ1D; break;
     case kLQ2D: slices = kNslicesLQ2D; break;
     case kNN:   slices = kNslicesNN; break;