LCOV - code coverage report
Current view: top level - HMPID/HMPIDrec - AliHMPIDReconstructor.h (source / functions) Hit Total Coverage
Test: coverage.info Lines: 18 19 94.7 %
Date: 2016-06-14 17:26:59 Functions: 11 15 73.3 %

          Line data    Source code
       1             : #ifndef AliHMPIDReconstructor_h
       2             : #define AliHMPIDReconstructor_h
       3             : /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
       4             :  * See cxx source for full Copyright notice                               */
       5             : //.
       6             : // HMPID base class to reconstruct an event
       7             : //.
       8             : #include <AliReconstructor.h>        //base class
       9             : #include "AliHMPIDTracker.h"         //CreateTracker()
      10             : #include "AliHMPIDDigit.h"           //Dig2Clu(), UseDig()
      11             : #include "AliHMPIDRecoParamV1.h"
      12             : #include <TMatrixF.h>                //UseDig()
      13             : #include <TClonesArray.h>            //UseDig()
      14             : #include <TObjArray.h>               //SigConv()
      15             : 
      16             : class AliRawReader;                  //Reconstruct() with raw data   
      17             : class AliHMPIDCluster;               //Dig2Clu()
      18             : 
      19             : class AliHMPIDReconstructor: public AliReconstructor 
      20             : {
      21             : public:
      22             :            AliHMPIDReconstructor();              
      23          20 :   virtual ~AliHMPIDReconstructor()                                  {delete fDig;delete fClu;}//dtor  
      24             : //framework part  
      25           6 :   AliTracker*  CreateTracker         () const {return new AliHMPIDTracker;}            //from AliReconstructor for clusters->PID
      26             :   void         ConvertDigits         (AliRawReader *pRR, TTree *pDigTree) const;                                        //from AliReconstruction for raw->digit
      27          24 :   Bool_t       HasDigitConversion()   const {return kTRUE;}                                                             //HMPID digits converted with ConvertDigits 
      28             :   void         Reconstruct           (TTree* digitsTree, TTree* clustersTree) const;                                    //from AliReconstruction for digit->cluster
      29          46 :   static Int_t StreamLevel()               { return fgStreamLevel;}
      30           0 :   static void  SetStreamLevel(Int_t level) { fgStreamLevel = level;}
      31             : 
      32             :     
      33             :   using AliReconstructor::FillESD;                                                                                      //
      34             :   using AliReconstructor::Reconstruct;                                                                                  // 
      35             : 
      36             :   //private part  
      37             :   static        void           Dig2Clu (TObjArray *pDigLst,TObjArray *pCluLst,Int_t *pUserCut,Bool_t isUnfold=kTRUE     );//digits->clusters
      38             :   static        void           FormClu (AliHMPIDCluster *pClu,AliHMPIDDigit *pDig,TClonesArray *pDigLst,TMatrixF *pPadMap);//cluster formation recursive algorithm
      39             :   static inline AliHMPIDDigit* UseDig  (Int_t padX,Int_t padY,                    TClonesArray *pDigLst,TMatrixF *pDigMap);//use this pad's digit to form a cluster
      40             :   inline Bool_t                IsDigSurvive(Int_t *pUserCut, AliHMPIDDigit *pDig                                         )const;//check for sigma cut
      41         564 :   static const AliHMPIDRecoParamV1* GetRecoParam() { return dynamic_cast<const AliHMPIDRecoParamV1*>(AliReconstructor::GetRecoParam(5)); }  //5 is the HMPID detector code
      42             :  
      43             :   protected:
      44             :   TObjArray *fDaqSig;                  // container for the pad pedestal sigmas
      45             :   TObjArray *fDig;                     // tmp list of digits
      46             :   TObjArray *fClu;                     // tmp list of clusters
      47             : //
      48             :   private:
      49             :   AliHMPIDReconstructor(const AliHMPIDReconstructor&);              //Not implemented
      50             :   AliHMPIDReconstructor &operator=(const AliHMPIDReconstructor&);   //Not implemented
      51             :   static Int_t               fgStreamLevel; // flag for streaming   - for HMPID reconstruction  
      52             : //  
      53         308 :   ClassDef(AliHMPIDReconstructor, 3)        // class for the HMPID reconstruction
      54             : };
      55             : 
      56             : //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
      57             : AliHMPIDDigit* AliHMPIDReconstructor::UseDig(Int_t padX,Int_t padY,TClonesArray *pDigLst,TMatrixF *pPadMap)
      58             : {
      59             : //Digit map contains a matrix if digit numbers.
      60             : //Main operation in forming initial cluster is done here. Requested digit pointer is returned and this digit marked as taken.
      61             : //Arguments: padX,padY - pad number
      62             : //           pDigLst   - list of digits for one sector
      63             : //           pDigMap   - map of those digits
      64             : //  Returns: pointer to digit if not yet used or 0 if used
      65        9046 :   Int_t iDig=(Int_t)(*pPadMap)(padX,padY);(*pPadMap)(padX,padY)=-1;//take digit number from the map and reset this map cell to -1
      66        5435 :   if(iDig!=-1)    return (AliHMPIDDigit*)pDigLst->At(iDig);        //digit pointer
      67        3611 :   else            return 0;
      68        4523 : }
      69             : //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
      70             : Bool_t AliHMPIDReconstructor::IsDigSurvive(Int_t *pUserCut, AliHMPIDDigit *pDig)const
      71             : {
      72             : //Check if the current digit survive to a riapllied sigma cut
      73             : //Arguments: pDig pointer to the current digit
      74             : //  Returns: kTRUE if charge > mean+n*sigma
      75        1062 :   Int_t iCh = pDig->Ch();
      76         531 :   Int_t iDaqSigCut =(Int_t)fDaqSig->At(iCh)->GetUniqueID(); 
      77         531 :   if(pUserCut[iCh]<=iDaqSigCut) return kTRUE;
      78         531 :   TMatrixF *pM = (TMatrixF*)fDaqSig->At(pDig->Ch());
      79         531 :   Float_t sig = (*pM)(pDig->PadChX(),pDig->PadChY());
      80         912 :   if(pDig->Q()>pUserCut[iCh]*sig) return kTRUE;
      81         150 :   else return kFALSE;
      82         531 : }
      83             : 
      84             : #endif

Generated by: LCOV version 1.11