4 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
5 * See cxx source for full Copyright notice */
10 ////////////////////////////////////////////////
11 // Manager and hits classes for set:RICH //
12 ////////////////////////////////////////////////
13 #include "AliDetector.h"
14 #include "AliRICHConst.h"
15 #include "AliRICHSegRes.h"
16 #include "DataStructures.h"
17 #include "AliRICHChamber.h"
18 #include "AliRICHSegRes.h"
21 #include <TObjArray.h>
24 #include <TParticle.h>
26 static const int NCH=7;
31 class AliRICHRawCluster;
33 class AliRICHClusterFinder;
36 class AliRICHCerenkov;
37 class AliRICHSegmentation;
38 class AliRICHResponse;
41 class AliRICH : public AliDetector {
44 AliRICH(const char *name, const char *title);
46 virtual void AddHit(Int_t, Int_t*, Float_t*);
47 virtual void AddCerenkov(Int_t, Int_t*, Float_t*);
48 virtual void AddPadHit(Int_t*);
49 virtual void AddDigits(Int_t, Int_t*, Int_t*, Int_t*);
50 virtual void AddRawCluster(Int_t, const AliRICHRawCluster&);
51 virtual void AddRecHit(Int_t, Float_t*);
54 virtual void BuildGeometry();
55 virtual void CreateGeometry() {}
56 virtual void CreateMaterials() {}
57 virtual void StepManager();
58 Int_t DistancetoPrimitive(Int_t px, Int_t py);
59 virtual Int_t IsVersion() const =0;
61 TClonesArray *PadHits() {return fPadHits;}
62 TClonesArray *Cerenkovs() {return fCerenkovs;}
63 virtual void MakeBranch(Option_t *opt=" ");
64 void SetTreeAddress();
65 virtual void ResetHits();
66 virtual void ResetDigits();
67 virtual void ResetRawClusters();
68 virtual void ResetRecHits();
69 virtual void FindClusters(Int_t,Int_t);
70 virtual void Digitise(Int_t,Option_t *opt=" ",Text_t *name=" ");
72 // Configuration Methods (per station id)
74 // Set Chamber Segmentation Parameters
75 // id refers to the station and isec to the cathode plane
76 // Set Segmentation and Response Model
77 virtual void SetGeometryModel(Int_t id, AliRICHGeometry *geometry);
78 virtual void SetSegmentationModel(Int_t id, AliRICHSegmentation *segmentation);
79 virtual void SetResponseModel(Int_t id, AliRICHResponse *response);
80 virtual void SetNsec(Int_t id, Int_t nsec);
81 // Set Reconstruction Model
82 virtual void SetReconstructionModel(Int_t id, AliRICHClusterFinder *reconstruction);
83 // Response Simulation
84 virtual void MakePadHits(Float_t xhit,Float_t yhit,Float_t eloss,Int_t id,Response_t res);
85 // Return reference to Chamber #id
86 virtual AliRICHChamber& Chamber(Int_t id) {return *((AliRICHChamber *) (*fChambers)[id]);}
87 // Retrieve pad hits for a given Hit
88 virtual AliRICHPadHit* FirstPad(AliRICHHit *, TClonesArray *);
89 virtual AliRICHPadHit* NextPad(TClonesArray *);
90 // Return pointers to digits
91 TObjArray *Dchambers() {return fDchambers;}
92 Int_t *Ndch() {return fNdch;}
93 virtual TClonesArray *DigitsAddress(Int_t id) {return ((TClonesArray *) (*fDchambers)[id]);}
94 // Return pointers to rec. hits
95 TObjArray *RecHits() {return fRecHits;}
96 Int_t *Nrechits() {return fNrechits;}
97 virtual TClonesArray *RecHitsAddress(Int_t id) {return ((TClonesArray *) (*fRecHits)[id]);}
98 // Return pointers to reconstructed clusters
99 virtual TClonesArray *RawClustAddress(Int_t id) {return ((TClonesArray *) (*fRawClusters)[id]);}
103 TObjArray *fChambers; // List of Tracking Chambers
104 Int_t fNPadHits; // Number of clusters
105 Int_t fNcerenkovs; // Number of cerenkovs
106 TClonesArray *fPadHits; // List of clusters
107 TObjArray *fDchambers; // List of digits
108 TClonesArray *fCerenkovs; // List of cerenkovs
109 Int_t *fNdch; // Number of digits
110 Text_t *fFileName; // Filename for event mixing
111 TObjArray *fRawClusters; // List of raw clusters
112 TObjArray *fRecHits; // List of rec. hits
113 Int_t *fNrawch; // Number of raw clusters
114 Int_t *fNrechits; // Number of rec hits
118 ClassDef(AliRICH,1) //Hits manager for set:RICH