ROOT logo
/**************************************************************************
* 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.                  *
**************************************************************************/
//
// Container for TRD thresholds stored in the OADB
//
#ifndef ALITRDPIDPARAMS_H
#define ALITRDPIDPARAMS_H

#ifndef ROOT_TNamed
#include <TNamed.h>
#endif

class TList;
class TSortedList;

class AliTRDPIDParams : public TNamed{
  public:
    AliTRDPIDParams();
    AliTRDPIDParams(const char *name);
    AliTRDPIDParams(const AliTRDPIDParams &);
    virtual ~AliTRDPIDParams();
    virtual void Print(Option_t *) const;

    void AddCentralityClass(Double_t minCentrality, Double_t maxCentrality);
    Bool_t GetThresholdParameters(Int_t ntracklets, Double_t efficiency, Double_t *params, Double_t centrality = -1) const;
    void SetThresholdParameters(Int_t ntracklets, Double_t effMin, Double_t effMax, Double_t *params, Double_t centrality = -1);

  /* private: */
    class AliTRDPIDThresholds : public TObject{
    public:
      AliTRDPIDThresholds();
      AliTRDPIDThresholds(Int_t nTracklets, Double_t effMin, Double_t effMax, Double_t *params = NULL);
      AliTRDPIDThresholds(Int_t nTracklets, Double_t eff, Double_t *params = NULL);
      AliTRDPIDThresholds(const AliTRDPIDThresholds &);
      AliTRDPIDThresholds &operator=(const AliTRDPIDThresholds &);
      virtual ~AliTRDPIDThresholds() {}

      Int_t GetNTracklets() const { return fNTracklets; }
      Double_t GetElectronEfficiency(Int_t step = 0) const { if(step == 0) return fEfficiency[0]; else return fEfficiency[1]; }
      const Double_t *GetThresholdParams() const { return fParams; }

      virtual Bool_t IsSortable() const { return kTRUE; }
      virtual Int_t Compare(const TObject *ref) const;
      virtual Bool_t IsEqual(const TObject *ref) const;

    private:
      Int_t fNTracklets;          //
      Double_t fEfficiency[2];    //
      Double_t fParams[4];        //

      // #if ROOT_VERSION_CODE < ROOT_VERSION(5,99,0)
      // Private - cannot be streamed 
      ClassDef(AliTRDPIDThresholds, 1);
      // #endif
    };

    class AliTRDPIDCentrality : public TObject{
    public:
       AliTRDPIDCentrality();
       AliTRDPIDCentrality(Double_t minCentrality, Double_t maxCentrality);
       AliTRDPIDCentrality(const AliTRDPIDCentrality &ref);
       AliTRDPIDCentrality &operator=(const AliTRDPIDCentrality &ref);
       virtual ~AliTRDPIDCentrality();

       Double_t GetMinCentrality() const { return fMinCentrality; };
       Double_t GetMaxCentrality() const { return fMaxCentrality; };
        
       void SetThresholdParameters(Int_t ntracklets, Double_t effMin, Double_t effMax, Double_t *params);
       Bool_t GetThresholdParameters(Int_t ntracklets, Double_t efficiency, Double_t *params) const;
       void Print(Option_t *) const;
    private: 
       TSortedList *fEntries;       //
       Double_t fMinCentrality;     //
       Double_t fMaxCentrality;     //

       // #if ROOT_VERSION_CODE < ROOT_VERSION(5,99,0)
       // Private - cannot be streamed
       ClassDef(AliTRDPIDCentrality, 1);
       // #endif
    };
  private:

    AliTRDPIDCentrality *FindCentrality(Double_t centrality) const;
    AliTRDPIDParams &operator=(const AliTRDPIDParams &);
    static const Double_t kVerySmall;
    TList *fEntries; //


    ClassDef(AliTRDPIDParams, 2);
};
#endif


 AliTRDPIDParams.h:1
 AliTRDPIDParams.h:2
 AliTRDPIDParams.h:3
 AliTRDPIDParams.h:4
 AliTRDPIDParams.h:5
 AliTRDPIDParams.h:6
 AliTRDPIDParams.h:7
 AliTRDPIDParams.h:8
 AliTRDPIDParams.h:9
 AliTRDPIDParams.h:10
 AliTRDPIDParams.h:11
 AliTRDPIDParams.h:12
 AliTRDPIDParams.h:13
 AliTRDPIDParams.h:14
 AliTRDPIDParams.h:15
 AliTRDPIDParams.h:16
 AliTRDPIDParams.h:17
 AliTRDPIDParams.h:18
 AliTRDPIDParams.h:19
 AliTRDPIDParams.h:20
 AliTRDPIDParams.h:21
 AliTRDPIDParams.h:22
 AliTRDPIDParams.h:23
 AliTRDPIDParams.h:24
 AliTRDPIDParams.h:25
 AliTRDPIDParams.h:26
 AliTRDPIDParams.h:27
 AliTRDPIDParams.h:28
 AliTRDPIDParams.h:29
 AliTRDPIDParams.h:30
 AliTRDPIDParams.h:31
 AliTRDPIDParams.h:32
 AliTRDPIDParams.h:33
 AliTRDPIDParams.h:34
 AliTRDPIDParams.h:35
 AliTRDPIDParams.h:36
 AliTRDPIDParams.h:37
 AliTRDPIDParams.h:38
 AliTRDPIDParams.h:39
 AliTRDPIDParams.h:40
 AliTRDPIDParams.h:41
 AliTRDPIDParams.h:42
 AliTRDPIDParams.h:43
 AliTRDPIDParams.h:44
 AliTRDPIDParams.h:45
 AliTRDPIDParams.h:46
 AliTRDPIDParams.h:47
 AliTRDPIDParams.h:48
 AliTRDPIDParams.h:49
 AliTRDPIDParams.h:50
 AliTRDPIDParams.h:51
 AliTRDPIDParams.h:52
 AliTRDPIDParams.h:53
 AliTRDPIDParams.h:54
 AliTRDPIDParams.h:55
 AliTRDPIDParams.h:56
 AliTRDPIDParams.h:57
 AliTRDPIDParams.h:58
 AliTRDPIDParams.h:59
 AliTRDPIDParams.h:60
 AliTRDPIDParams.h:61
 AliTRDPIDParams.h:62
 AliTRDPIDParams.h:63
 AliTRDPIDParams.h:64
 AliTRDPIDParams.h:65
 AliTRDPIDParams.h:66
 AliTRDPIDParams.h:67
 AliTRDPIDParams.h:68
 AliTRDPIDParams.h:69
 AliTRDPIDParams.h:70
 AliTRDPIDParams.h:71
 AliTRDPIDParams.h:72
 AliTRDPIDParams.h:73
 AliTRDPIDParams.h:74
 AliTRDPIDParams.h:75
 AliTRDPIDParams.h:76
 AliTRDPIDParams.h:77
 AliTRDPIDParams.h:78
 AliTRDPIDParams.h:79
 AliTRDPIDParams.h:80
 AliTRDPIDParams.h:81
 AliTRDPIDParams.h:82
 AliTRDPIDParams.h:83
 AliTRDPIDParams.h:84
 AliTRDPIDParams.h:85
 AliTRDPIDParams.h:86
 AliTRDPIDParams.h:87
 AliTRDPIDParams.h:88
 AliTRDPIDParams.h:89
 AliTRDPIDParams.h:90
 AliTRDPIDParams.h:91
 AliTRDPIDParams.h:92
 AliTRDPIDParams.h:93
 AliTRDPIDParams.h:94
 AliTRDPIDParams.h:95
 AliTRDPIDParams.h:96
 AliTRDPIDParams.h:97
 AliTRDPIDParams.h:98
 AliTRDPIDParams.h:99
 AliTRDPIDParams.h:100
 AliTRDPIDParams.h:101
 AliTRDPIDParams.h:102
 AliTRDPIDParams.h:103
 AliTRDPIDParams.h:104
 AliTRDPIDParams.h:105