]> git.uio.no Git - u/mrichter/AliRoot.git/blob - ITS/AliITSRecPointContainer.h
Changes to the Improve method (J. Belikov) Savannah bug 76361
[u/mrichter/AliRoot.git] / ITS / AliITSRecPointContainer.h
1 #ifndef ALIITSRECPOINTCONTAINER_H
2 #define ALIITSRECPOINTCONTAINER_H
3 /* Copyright(c) 2009-2011, ALICE Experiment at CERN, All rights reserved. *
4  * See cxx source for full Copyright notice                               */
5
6 /* $Id$ */
7
8 ////////////////////////////////////////////////////////////////////////
9 //           Container class for ITS rec points                       //
10 ////////////////////////////////////////////////////////////////////////
11
12 #include <TClonesArray.h>
13 #include <TString.h>
14
15 class AliITSRecoParam;
16
17 class AliITSRecPointContainer : public TObject {
18
19  public:
20
21   virtual ~AliITSRecPointContainer();  //Destructor
22
23   Bool_t IsSPDActive() const {return fDet.Contains("SPD");}
24   Bool_t IsSDDActive() const {return fDet.Contains("SDD");}
25   Bool_t IsSSDActive() const {return fDet.Contains("SSD");}
26   Bool_t IsITSComplete() const {return fDet.Contains("ALL");}
27   Bool_t GetStatusOK() const {return fStatusOK;}
28   Int_t GetNumberOfModules() const {return fActualSize; }
29
30   static AliITSRecPointContainer* Instance(const AliITSRecoParam *ptr=NULL);
31   void PrepareToRead(){if(fNextEvent<0){fNextEvent=0;} else {++fNextEvent;}}
32   TClonesArray* FetchClusters(Int_t mod, TTree* tR);
33   TClonesArray* FetchClusters(Int_t mod, TTree* tR,Int_t cureve);
34   TClonesArray* UncheckedGetClusters(Int_t mod) const {return fArray[mod];}
35
36   // In the following two methods: 1<=lay<=6  (i.e. layers numbered from 1) 
37   UInt_t GetNClustersInLayer(Int_t lay, TTree* tR, Int_t eventN=-1);
38   UInt_t GetNClustersInLayerFast(Int_t lay) const;
39   void FullReset(){fCurrentEve=-1000; Reset();}
40   void ResetSPD(); // clears only SPD parts - see implementation for usage
41   void ResetSDD(); // clears only SPD parts - see implementation for usage
42   void ResetSSD(); // clears only SPD parts - see implementation for usage
43
44  private:
45   // methods
46   AliITSRecPointContainer(const AliITSRecoParam* krp=NULL);   // Default constructor
47   AliITSRecPointContainer(const AliITSRecPointContainer& rec);
48   AliITSRecPointContainer& operator=(const AliITSRecPointContainer &source);
49   Bool_t CheckBoundaries(Int_t i)const { return (i>=0 && i<fgkNModules);}
50   void CookEntries();
51   void Reset();
52   void ClearClus(Int_t first, Int_t lastpp){ // clears clusters for modules 
53     // ranging from first to lastpp-1 included
54     for(Int_t i=first;i<lastpp;i++)(fArray[i])->Clear();
55   }
56   //Data members
57   static AliITSRecPointContainer* fgInstance; //! AliITSRecPointContainer 
58                                               //  singleton
59   static const Int_t fgkNModules=2198;  //! total number of ITS modules
60
61   Int_t fSPDNModules; //! number of SPD modules
62   Int_t fSDDNModules; //! number of SDD modules
63   Int_t fSSDNModules; //! number of SDD modules
64   TClonesArray* fArray[fgkNModules];  //! container - 1 TClonesArray per module
65   Int_t fCurrentEve; //! event number
66   Int_t fNextEvent; //! number of the next event to be read; used only when
67                     //! the run loader is not available. It is just a counter.
68   Int_t fActualSize; //! actual number of ITS modules in TTree R 
69   TString fDet; //! ITS subdetectors active for the current run 
70   Bool_t fStatusOK; //! kFALSE is RP branch is absent or if there are anomalies
71                     //! in the number of active modules
72   UInt_t fNClusters[6]; //! Number of clusters per layer
73
74   ClassDef(AliITSRecPointContainer,0)
75 };
76
77 #endif