LCOV - code coverage report
Current view: top level - TRD/TRDrec - AliTRDCalPIDLQ.h (source / functions) Hit Total Coverage
Test: coverage.info Lines: 1 15 6.7 %
Date: 2016-06-14 17:26:59 Functions: 2 11 18.2 %

          Line data    Source code
       1             : #ifndef ALITRDCALPIDLQ_H
       2             : #define ALITRDCALPIDLQ_H
       3             : 
       4             : /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
       5             :  * See cxx source for full Copyright notice                               */
       6             : 
       7             : /* $Id$ */
       8             : 
       9             : ////////////////////////////////////////////////////////////////////////////
      10             : //                                                                        //
      11             : // PID distributions for the LQ method                                    //
      12             : //                                                                        //
      13             : // Author:                                                                //
      14             : // Alex Bercuci <A.Bercuci@gsi.de>                                        //
      15             : //                                                                        //          
      16             : ////////////////////////////////////////////////////////////////////////////
      17             : 
      18             : #ifndef ALITRDCALPID_H
      19             : #include "AliTRDCalPID.h"
      20             : #endif
      21             : #ifndef ROOT_TMath
      22             : #include "TMath.h"
      23             : #endif
      24             : 
      25             : class AliTRDCalPIDLQ : public AliTRDCalPID
      26             : {
      27             : public:
      28             :   enum ETRDCalPIDLQ {
      29             :     kNLength = 4 // No of bins for tracklet length discretization 
      30             :    ,kNN2LQtransition = 4 // index of NN slices where first LQ slice ends
      31             :   };
      32             :   AliTRDCalPIDLQ();
      33             :   AliTRDCalPIDLQ(const Text_t *name, const Text_t *title);
      34           0 :   virtual        ~AliTRDCalPIDLQ(){};
      35             : 
      36             :   inline static Bool_t  CookdEdx(const Float_t * const dedx, Double_t *x, Bool_t k2D=kTRUE);
      37             :   TObject*              GetModel(Int_t ip, Int_t iType, Int_t slices) const;
      38           0 :   static Double_t       GetLength(Int_t il) { return (il<0 || il>=kNLength) ? -1. : fgTrackSegLength[il]; }
      39             :   inline static Int_t   GetModelID(Int_t mom, Int_t spec, Int_t slices=1);
      40             :   static Int_t          GetNrefs();
      41             :   Double_t              GetProbability(Int_t spec, Float_t mom
      42             :                                , const Float_t * const dedx
      43             :                                , Float_t length, Int_t slices) const;
      44             :   Bool_t                LoadReferences(Char_t* refFile);
      45             : protected:
      46             :   static Float_t  fgTrackSegLength[kNLength]; // Track segment lengths
      47             : 
      48             : private:
      49             :   AliTRDCalPIDLQ(const AliTRDCalPIDLQ& pd);
      50             :   AliTRDCalPIDLQ&   operator=(const AliTRDCalPIDLQ &c);
      51             :   void      Init();
      52             : 
      53          36 :   ClassDef(AliTRDCalPIDLQ, 2)                 // LQ PID reference manager
      54             : };
      55             : 
      56             : //_________________________________________________________________________
      57             : inline Bool_t  AliTRDCalPIDLQ::CookdEdx(const Float_t * const dedx, Double_t *x, Bool_t k2D)
      58             : {
      59             : // Convert NN dEdx slices to the representation used by LQ
      60             : 
      61           0 :   x[0]=0.;x[1]=0.;
      62           0 :   for(Int_t islice=AliTRDCalPID::kNSlicesNN; islice--;){
      63             :     Int_t jslice(0);
      64           0 :     if(k2D) jslice = islice>kNN2LQtransition;
      65           0 :     x[jslice]+=dedx[islice];
      66             :   }
      67             :   
      68             :   // check data integrity
      69           0 :   if(x[0]<1.e-30) return kFALSE;
      70           0 :   if(k2D && x[1]<1.e-30) return kFALSE;
      71             : 
      72           0 :   x[0] = TMath::Log(x[0]);
      73           0 :   x[1] = k2D ? TMath::Log(x[1]) : 0.;
      74           0 :   return kTRUE;
      75           0 : }
      76             : 
      77             : //_________________________________________________________________________
      78             : inline Int_t AliTRDCalPIDLQ::GetModelID(Int_t mom, Int_t spec, Int_t ii)
      79             : {
      80             : // Returns the ID of the PDF distribution 
      81             : // 5 species * 11 momentum ranges * 2 slices
      82             : 
      83           0 :   Int_t n(GetNrefs()>>1);
      84           0 :   return (ii-1)*n + (spec * AliTRDCalPID::kNMom + mom);
      85             : }
      86             : 
      87             : 
      88             : #endif
      89             : 

Generated by: LCOV version 1.11