]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - PWGPP/TRD/AliTRDresolution.h
Merge branch 'master' of https://git.cern.ch/reps/AliRoot
[u/mrichter/AliRoot.git] / PWGPP / TRD / AliTRDresolution.h
index 01bf5ac90d7da3610bf2004428e9c210305fbc13..a59ce50381bf0ec01ec6049b68e8795bdb0b4547 100644 (file)
 #include "TNamed.h"
 #endif
 
-class TAxis;
 class TH1;
 class TH2;
-class TH3;
 class TF1;
 class TGraphErrors;
 class TObjArray;
@@ -64,14 +62,15 @@ public:
 /*    ,kTrackOut        // tracklet - track residuals/pulls at lower TRD entrance during refit
     ,kMCtrackOut      // TOF/HMPID track monitor*/
     ,kNclasses        // total number of resolution classes
+    ,kV0TrackIn       // tracklet - track residuals/pulls at lower TRD entrance for V0 tagged tracks
   };
   enum ETRDresolutionClassProjs {
     kDetNproj=460      // detector projections
     ,kClNproj=2800     // cluster projections
     ,kTrkltNproj=8000  // tracklet projections
-    ,kTrkInNproj=245   // trackIn projections
+    ,kTrkInNproj=1440  // trackIn projections
     ,kTrkNproj=2500    // track projections
-    ,kMCTrkInNproj=260 // trackIn projections
+    ,kMCTrkInNproj=1260// trackIn projections
   };
   enum ETRDresolutionProjs {
     kBC    = 0 // bunch cross
@@ -88,13 +87,15 @@ public:
     ,kNdimTrklt   = 4
     ,kNdimTrkIn   = 7
     ,kNbunchCross = 3  // no of classes for bunch crossing
-    ,kNpt         = 3  // no of log bins in pt spectrum
+    ,kNspc        = 3  // no of species e, mu+pi, K+p
     ,kNcharge     = 2  // no of charges
     ,kNpads       = 4  // no of charges
   };
 
   AliTRDresolution();
   AliTRDresolution(char* name, Bool_t xchange=kTRUE);
+  AliTRDresolution(const AliTRDresolution&);
+  AliTRDresolution& operator=(const AliTRDresolution&);
   virtual ~AliTRDresolution();
   
   static Bool_t   FitTrack(const Int_t np, AliTrackPoint *points, Float_t params[10]);
@@ -102,31 +103,24 @@ public:
   void            UserCreateOutputObjects();
 //  Float_t GetCorrectionX(Int_t det, Int_t tb) const {return fXcorr[det][tb];}
   static void     GetRangeZ(TH2 *h2, Float_t &m, Float_t &M);
-  Float_t         GetDyRange() const {return fDyRange;}
-  static Float_t  GetMeanStat(TH1 *h, Float_t cut=0., Option_t *opt="");
   Float_t         GetPtThreshold() const {return fPtThreshold;}
-  static Int_t    GetPtBin(Float_t pt);
   Bool_t          GetRefFigure(Int_t ifig);
 
   virtual TObjArray*  Histos(); 
 //  Bool_t  Load(const Char_t *file = "AnalysisResults.root", const Char_t *dir="TRD_Performance");
 //  Bool_t  LoadCorrection(const Char_t *file=NULL);
   void            MakeSummary();
-  static void     MakePtSegmentation(Float_t pt0=0.5, Float_t dpt=0.002);
 
   TObjArray*      Results(ETRDresolutionClass c) const  { if(!fProj) return NULL; return (TObjArray*)fProj->At(c);}
   void            UserExec(Option_t * opt);
   void            InitExchangeContainers();
-  Bool_t          HasProcessDetector() const            { return TESTBIT(fSteer, kDetector);}
-  Bool_t          HasProcessCluster() const             { return TESTBIT(fSteer, kCluster);}
-  Bool_t          HasProcessTrklt() const               { return TESTBIT(fSteer, kTracklet);}
-  Bool_t          HasProcessTrkIn() const               { return TESTBIT(fSteer, kTrackIn);}
-  Bool_t          HasTrackRefit() const                 { return TestBit(kTrackRefit);}
-  Bool_t          HasTrackSelection() const             { return TestBit(kTrackSelect);}
+/*  Bool_t          HasTrackRefit() const                 { return TestBit(kTrackRefit);}
+  Bool_t          HasTrackSelection() const             { return TestBit(kTrackSelect);}*/
   Bool_t          IsVerbose() const                     { return TestBit(kVerbose);}
   Bool_t          IsVisual() const                      { return TestBit(kVisual);}
   Bool_t          UseBCselectTOF() const                { return fBCbinTOF>0;}
   Bool_t          UseBCselectFill() const               { return fBCbinFill>0;}
+  Bool_t          UseLYselectTrklt() const              { return fLYselect>=0;}
   Bool_t          UseExchangeContainers() const         { return TestBit(kXchange);}
   Bool_t          PostProcess();
 
@@ -138,82 +132,51 @@ public:
   TH1*            PlotMC(const AliTRDtrackV1 *t=NULL);
 
   static Bool_t   Process(TH2* const /*h2*/, TGraphErrors **/*g*/, Int_t stat=100){ return Bool_t(stat);}
-  void            SetDyRange(Float_t dy) {fDyRange = dy;}
   void            SetPtThreshold(Float_t pt)            { fPtThreshold = pt;}
-  void            SetBCselectTOF(Int_t b=0)             { fBCbinTOF = b==0?2:(b<0?1:3);}
+  void            SetBCselectTOF(Int_t b=0)             { fBCbinTOF = b;}
   void            SetBCselectFill(Int_t b=0)            { fBCbinFill = b<0||b>3499?1:b+1;}
   void            SetBsign(Int_t b=0)                   { fBsign = Bool_t(b);}
-  static void     SetNormZ(TH2 *h2, Int_t bxmin=1, Int_t bxmax=-1, Int_t bymin=1, Int_t bymax=-1, Float_t thr=0.);
+  void            SetLYselect(Int_t ly=0)               { fLYselect = ly;}
   void            SetProcesses(Bool_t det, Bool_t cl, Bool_t trklt, Bool_t trkin);
-  static void     SetRangeZ(TH2 *h2, Float_t m, Float_t M, Float_t thr=0.);
+  void            SetDump3D(Bool_t det, Bool_t cl, Bool_t trklt, Bool_t trkin);
   void            SetVerbose(Bool_t v = kTRUE)          { SetBit(kVerbose, v);}
   void            SetVisual(Bool_t v = kTRUE)           { SetBit(kVisual, v);}
-  void            SetTrackRefit(Bool_t v = kTRUE)       { SetBit(kTrackRefit, v);}
-  void            SetTrackSelection(Bool_t v = kTRUE)   { SetBit(kTrackSelect, v);}
+/*  void            SetTrackRefit(Bool_t v = kTRUE)       { SetBit(kTrackRefit, v);}
+  void            SetTrackSelection(Bool_t v = kTRUE)   { SetBit(kTrackSelect, v);}*/
   void            SetUseExchangeContainers(Bool_t v = kTRUE) { SetBit(kXchange, v);}
 
   void            Terminate(Option_t * opt);
   static Bool_t   UseTrack(const Int_t np, const AliTrackPoint *points, Float_t params[10]);
 
-  class AliTRDresolutionProjection : public TNamed
-  {
-    friend class AliTRDresolution;  // Friend class
-  public:
-    AliTRDresolutionProjection();
-    virtual ~AliTRDresolutionProjection();
-    AliTRDresolutionProjection& operator+=(const AliTRDresolutionProjection& other);
-    AliTRDresolutionProjection& operator=(const AliTRDresolutionProjection& other);
-    void  Build(const Char_t *n, const Char_t *t, Int_t ix, Int_t iy, Int_t iz, TAxis *aa[]);
-    void  Increment(Int_t bin[], Double_t v);
-    TH2*  Projection2D(const Int_t nstat, const Int_t ncol, const Int_t mid=0, Bool_t del=kTRUE);
-    void  SetRebinStrategy(Int_t n, Int_t rebx[], Int_t reby[]);
-    void  SetShowRange(Float_t zm, Float_t zM, Float_t em=0., Float_t eM=0.) {fRange[0] = zm; fRange[1] = zM; fRange[2] = em; fRange[3] = eM;}
-  private:
-    AliTRDresolutionProjection(const AliTRDresolutionProjection&);
-  protected:
-    TH3  *fH;          // data container
-    Int_t fAx[3];      // projection axes
-    Int_t fNrebin;     // no. of rebinning steps
-    Int_t *fRebinX;    //[fNrebin] rebinning of the X axis
-    Int_t *fRebinY;    //[fNrebin] rebinning of the Y axis
-    Float_t fRange[4]; //show range of the z processed
-
-    ClassDef(AliTRDresolutionProjection, 2)  // wrapper for a projection container THnSparse -> TH3
-  };
-
-  AliTRDresolution(const AliTRDresolution&);
-  AliTRDresolution& operator=(const AliTRDresolution&);
-
   void        AdjustF1(TH1 *h, TF1 *f);
-  TObjArray*  BuildMonitorContainerCluster(const char* name, Bool_t expand=kFALSE, Float_t range=-1.);
-  TObjArray*  BuildMonitorContainerTracklet(const char* name, Bool_t expand=kFALSE);
-  TObjArray*  BuildMonitorContainerTrack(const char* name);
-  void        DrawSigma(TH2 *h2, const Char_t *t, Float_t m=0., Float_t M=-1., Float_t scale=1);
+  TH2*        DrawSigma(TH2 *h2, const Char_t *t, Float_t m=0., Float_t M=-1., Float_t scale=1);
   void        GetLandauMpvFwhm(TF1 * const f, Float_t &mpv, Float_t &xm, Float_t &xM);
   void        GetRange(TH2 *h2, Char_t mod, Float_t *range);
 
 protected:
+  Bool_t      HasDump3DFor(ETRDresolutionClass cls) const { return TESTBIT(fSteer, 4+cls);}
+  Bool_t      HasProcess(ETRDresolutionClass cls) const   { return TESTBIT(fSteer, cls);}
   Bool_t      MakeProjectionDetector();
   Bool_t      MakeProjectionCluster(Bool_t mc=kFALSE);
   Bool_t      MakeProjectionTracklet(Bool_t mc=kFALSE);
-  Bool_t      MakeProjectionTrackIn(Bool_t mc=kFALSE);
+  Bool_t      MakeProjectionTrackIn(Bool_t mc=kFALSE, Bool_t v0=kFALSE);
   Bool_t      MakeProjectionTrack();
   Bool_t      Process(TH2* const /*h2*/, TF1 */*f*/, Float_t /*k*/, TGraphErrors **/*g*/) { return kTRUE;}
   Bool_t      Pulls(Double_t dyz[2], Double_t cc[3], Double_t tilt) const;
 
   UShort_t              fSteer;           // bit map to steer internal behaviour of class
-  UShort_t              fIdxFrame;        // frame counter (internal)
+                                          // MakeProjection [kTrackIn kTracklet kCluster kDetector]
+                                          // Dump3D [4+kTrackIn 4+kTracklet 4+kCluster 4+kDetector]
   Float_t               fPtThreshold;     // pt threshold for some performance plots
-  Float_t               fDyRange;         // min/max dy
   Int_t                 fBCbinTOF;        // set/select by TOF BC index
   Int_t                 fBCbinFill;       // set/select by Bunch Fill index
+  Int_t                 fLYselect;        // select layer for Tracklet projections (in debug mode)
   Bool_t                fBsign;           // sign of magnetic field (kFALSE[-] kTRUE[+])
   static Char_t const  *fgPerformanceName[kNclasses]; //! name of performance plot
   static Int_t const    fgkNbins[kNdim];  //! no of bins/projection
   static Double_t const fgkMin[kNdim];    //! low limits for projections
   static Double_t const fgkMax[kNdim];    //! high limits for projections
-  static Char_t const  *fgkTitle[kNdim];  //! title of projection 
-  static Float_t        fgPtBin[25];      //! pt segmentation
+  static Char_t const  *fgkTitle[kNdim];  //! title of projection
   TObjArray            *fProj;            //! result holder - sigma values
   TDatabasePDG         *fDBPDG;           //! PDG database
 
@@ -221,6 +184,6 @@ protected:
   TObjArray            *fCl;              //! cluster2track calib
   TObjArray            *fMCcl;            //! cluster2mc calib
   
-  ClassDef(AliTRDresolution, 10) // TRD tracking resolution task
+  ClassDef(AliTRDresolution, 11) // TRD tracking resolution task
 };
 #endif