Added charge to the clusters tree
[u/mrichter/AliRoot.git] / ITS / UPGRADE / AliITSUModule.h
1 #ifndef ALIITSUMODULE_H
2 #define ALIITSUMODULE_H
3 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
4  * See cxx source for full Copyright notice                               */
5
6 /* $Id: AliITSUModule.h 53509 2011-12-10 18:55:52Z masera $ */
7 ///////////////////////////////////////////////////////////////////////
8 //                                                                   //
9 //  Class AliITSUModule                                            //
10 //  is a superclass for AliITSUModuleSSD, SPD and SDD.             //
11 //  The main function of modules is to simulate DIGITS from          //
12 //  GEANT HITS and produce POINTS from DIGITS                        //
13 //  It also make fast simulation without use of DIGITS               //
14 //                                                                   //
15 //  created by: A.Boucham, W.Peryt, S.Radomski, P.Skowronski         //
16 //              R.Barbera, B. Batynia, B. Nilsen                     //
17 //  ver. 1.0    CERN, 16.09.1999                                     //
18 //  modified for upgrade: ruben.shahoyan@cern.ch                     //
19 //                                                                   //
20 ///////////////////////////////////////////////////////////////////////
21
22 #include <TObject.h>
23 #include <TObjArray.h>
24 #include "AliITSUHit.h"
25 class AliITSUGeomTGeo;
26
27 class AliITSUModule: public TObject {
28
29  public:
30   AliITSUModule();             // default constructor
31   AliITSUModule(Int_t index, AliITSUGeomTGeo* tg);
32   virtual ~AliITSUModule();
33   UInt_t     GetIndex()                                 const {return GetUniqueID();}
34   void       SetIndex(UInt_t ind)                             {return SetUniqueID(ind);}
35   Int_t      GetNHits()                                 const {return fHitsM->GetEntriesFast();}
36   TObjArray *GetHits()                                  const {return fHitsM;}
37   AliITSUHit *GetHit(Int_t i)                         const {return (AliITSUHit*)fHitsM->UncheckedAt(i);}
38   void       AddHit(AliITSUHit *hit)                        {fHitsM->AddLast(hit);}
39   void       Clear(Option_t* opt=0);
40   //
41   Bool_t   MedianHitG(AliITSUHit *h1,AliITSUHit *h2,Float_t &x,Float_t &y,Float_t &z);
42   void     MedianHitG(Int_t index, Float_t hitx1,Float_t hity1,Float_t hitz1,Float_t hitx2,Float_t hity2,Float_t hitz2, Float_t &xMg,Float_t &yMg, Float_t &zMg);
43   Bool_t   MedianHitL(AliITSUHit *h1,AliITSUHit *h2,Float_t &x,Float_t &y,Float_t &z) const;
44   void     MedianHitL(Int_t,AliITSUHit *,AliITSUHit *,Float_t &,Float_t &, Float_t &){};
45   Double_t PathLength(const AliITSUHit *itsHit1,const AliITSUHit *itsHit2);
46   void     MedianHit(Int_t index, Float_t xg,Float_t yg,Float_t zg,Int_t status,Float_t &xMg, Float_t &yMg, Float_t &zMg,Int_t &flag);
47   void     PathLength(Float_t x,Float_t y,Float_t z,Int_t status,Int_t &nseg,Float_t &x1,Float_t &y1,Float_t &z1,Float_t &dx1,Float_t &dy1, Float_t &dz1,Int_t &flag) const;
48   Bool_t   LineSegmentL(Int_t hindex,Double_t &a,Double_t &b,Double_t &c,Double_t &d,Double_t &e,Double_t &f,Double_t &de);
49   Bool_t   LineSegmentL(Int_t hindex,Double_t &a,Double_t &b,Double_t &c,Double_t &d,Double_t &e,Double_t &f,Double_t &de, Double_t &tof, Int_t &track);
50   //
51   Bool_t   LineSegmentG(Int_t hindex,Double_t &a,Double_t &b,Double_t &c,Double_t &d,Double_t &e,Double_t &f,Double_t &de);
52   Bool_t   LineSegmentG(Int_t hindex,Double_t &a,Double_t &b,Double_t &c,Double_t &d,Double_t &e,Double_t &f,Double_t &de, Double_t &tof, Int_t &track);
53   //
54  protected:
55     AliITSUModule(const AliITSUModule &source); 
56     AliITSUModule& operator=(const AliITSUModule &source); 
57     TObjArray            *fHitsM;     // Pointer to list of hits on this module
58     AliITSUGeomTGeo    *fGeomTG;    // pointed to geometry
59     //
60     ClassDef(AliITSUModule,1) // Copy the hits into a more useful order
61 };
62
63 inline void AliITSUModule::Clear(Option_t *) {fHitsM->Clear();}
64
65 #endif
66
67
68