]> git.uio.no Git - u/mrichter/AliRoot.git/blob - RICH/AliRICHv0.cxx
Added member data and getters for padplane dimensions
[u/mrichter/AliRoot.git] / RICH / AliRICHv0.cxx
1 /**************************************************************************
2  * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
3  *                                                                        *
4  * Author: The ALICE Off-line Project.                                    *
5  * Contributors are mentioned in the code where appropriate.              *
6  *                                                                        *
7  * Permission to use, copy, modify and distribute this software and its   *
8  * documentation strictly for non-commercial purposes is hereby granted   *
9  * without fee, provided that the above copyright notice appears in all   *
10  * copies and that both the copyright notice and this permission notice   *
11  * appear in the supporting documentation. The authors make no claims     *
12  * about the suitability of this software for any purpose. It is          *
13  * provided "as is" without express or implied warranty.                  *
14  **************************************************************************/
15
16 /*
17   $Log$
18   Revision 1.17  2000/12/18 17:44:29  jbarbosa
19   Took two lines out of output.
20
21   Revision 1.16  2000/10/03 21:44:09  morsch
22   Use AliSegmentation and AliHit abstract base classes.
23
24   Revision 1.15  2000/10/02 15:54:55  jbarbosa
25   New default version (15 mm freon).
26
27   Revision 1.14  2000/07/10 15:28:39  fca
28   Correction of the inheritance scheme
29
30   Revision 1.13  2000/06/30 16:38:15  dibari
31   Test on kDebugevel
32
33   Revision 1.12  2000/06/13 13:06:28  jbarbosa
34   Fixed compiling error for HP (multiple declaration)
35
36   Revision 1.11  2000/06/12 15:35:44  jbarbosa
37   Cleaned up version.
38
39   Revision 1.10  2000/06/09 14:59:25  jbarbosa
40   New default version. No setters needed, no hits.
41
42   Revision 1.9  2000/05/31 08:19:38  jbarbosa
43   Fixed bug in StepManager
44
45   Revision 1.8  2000/05/26 17:30:08  jbarbosa
46   Cerenkov angle now stored within cerenkov data structure.
47
48   Revision 1.7  2000/05/18 10:31:36  jbarbosa
49   Fixed positioning of spacers inside freon.
50   Fixed positioning of proximity gap
51   inside methane.
52   Fixed cut on neutral particles in the StepManager.
53
54   Revision 1.6  2000/04/28 11:51:58  morsch
55    Dimensions of arrays hits and Ckov_data corrected.
56
57   Revision 1.5  2000/04/19 13:28:46  morsch
58   Major changes in geometry (parametrised), materials (updated) and
59   step manager (diagnostics) (JB, AM)
60
61 */
62
63
64
65 /////////////////////////////////////////////////////////////
66 //  Manager and hits classes for set: RICH default version //
67 /////////////////////////////////////////////////////////////
68
69 #include <TTUBE.h>
70 #include <TNode.h> 
71 #include <TRandom.h> 
72
73 #include "AliRICHv0.h"
74 #include "AliSegmentation.h"
75 #include "AliRICHResponse.h"
76 #include "AliRICHSegmentationV0.h"
77 #include "AliRICHResponseV0.h"
78 #include "AliRICHGeometry.h"
79 #include "AliRun.h"
80 #include "AliMC.h"
81 #include "iostream.h"
82 #include "AliCallf77.h"
83 #include "AliConst.h" 
84 #include "AliPDG.h" 
85
86 ClassImp(AliRICHv0)
87     
88 //___________________________________________
89 AliRICHv0::AliRICHv0() : AliRICH()
90 {
91
92 // Default constructor
93
94     //fChambers = 0;
95 }
96
97 //___________________________________________
98 AliRICHv0::AliRICHv0(const char *name, const char *title)
99     : AliRICH(name,title)
100 {
101     //
102 // Version 0
103 // Default Segmentation, no hits
104     AliRICHSegmentationV0* segmentationV0 = new AliRICHSegmentationV0;
105 //
106 //  Segmentation parameters
107     segmentationV0->SetPadSize(0.84,0.80);
108     segmentationV0->SetDAnod(0.84/2);
109 //
110 //  Geometry parameters
111     AliRICHGeometry* geometry = new AliRICHGeometry;
112     geometry->SetGapThickness(8);
113     geometry->SetProximityGapThickness(.4);
114     geometry->SetQuartzLength(131);
115     geometry->SetQuartzWidth(126.2);
116     geometry->SetQuartzThickness(.5);
117     geometry->SetOuterFreonLength(131);
118     geometry->SetOuterFreonWidth(40.3);
119     geometry->SetInnerFreonLength(131);
120     geometry->SetInnerFreonWidth(40.3);
121     geometry->SetFreonThickness(1.5);
122 //
123 //  Response parameters
124     AliRICHResponseV0*  responseV0   = new AliRICHResponseV0;
125     responseV0->SetSigmaIntegration(5.);
126     responseV0->SetChargeSlope(27.);
127     responseV0->SetChargeSpread(0.18, 0.18);
128     responseV0->SetMaxAdc(4096);
129     responseV0->SetAlphaFeedback(0.036);
130     responseV0->SetEIonisation(26.e-9);
131     responseV0->SetSqrtKx3(0.77459667);
132     responseV0->SetKx2(0.962);
133     responseV0->SetKx4(0.379);
134     responseV0->SetSqrtKy3(0.77459667);
135     responseV0->SetKy2(0.962);
136     responseV0->SetKy4(0.379);
137     responseV0->SetPitch(0.25);
138 //
139 //
140 //    AliRICH *RICH = (AliRICH *) gAlice->GetDetector("RICH"); 
141     
142     fCkovNumber=0;
143     fFreonProd=0;
144     Int_t i=0;
145     
146     fChambers = new TObjArray(kNCH);
147     for (i=0; i<kNCH; i++) {
148       
149       (*fChambers)[i] = new AliRICHChamber();  
150       
151     }
152   
153     for (i=0; i<kNCH; i++) {
154       SetGeometryModel(i,geometry);
155       SetSegmentationModel(i, segmentationV0);
156       SetResponseModel(i, responseV0);
157       SetNsec(i,1);
158       SetDebugLevel(0);
159     }
160 }
161
162
163
164 //___________________________________________
165
166 void AliRICHv0::Init()
167 {
168
169   printf("*********************************** RICH_INIT ***********************************\n");
170   printf("*                                                                               *\n");
171   printf("*                       AliRICHv0 Default version started                       *\n");
172   printf("*                                                                               *\n");
173
174   
175   AliSegmentation*  segmentation;
176   AliRICHGeometry*  geometry;
177   AliRICHResponse*  response;
178
179
180     // 
181     // Initialize Tracking Chambers
182     //
183     for (Int_t i=1; i<kNCH; i++) {
184         //printf ("i:%d",i);
185         ( (AliRICHChamber*) (*fChambers)[i])->Init(i);  
186     }  
187     
188     //
189     // Set the chamber (sensitive region) GEANT identifier
190     
191     ((AliRICHChamber*)(*fChambers)[0])->SetGid(1);  
192     ((AliRICHChamber*)(*fChambers)[1])->SetGid(2);  
193     ((AliRICHChamber*)(*fChambers)[2])->SetGid(3);  
194     ((AliRICHChamber*)(*fChambers)[3])->SetGid(4);  
195     ((AliRICHChamber*)(*fChambers)[4])->SetGid(5);  
196     ((AliRICHChamber*)(*fChambers)[5])->SetGid(6);  
197     ((AliRICHChamber*)(*fChambers)[6])->SetGid(7); 
198
199     Float_t pos1[3]={0,471.8999,165.2599};
200     Chamber(0).SetChamberTransform(pos1[0],pos1[1],pos1[2],new TRotMatrix("rot993","rot993",90,0,70.69,90,19.30999,-90));
201
202     Float_t pos2[3]={171,470,0};
203     Chamber(1).SetChamberTransform(pos2[0],pos2[1],pos2[2],new TRotMatrix("rot994","rot994",90,-20,90,70,0,0));
204
205     Float_t pos3[3]={0,500,0};
206     Chamber(2).SetChamberTransform(pos3[0],pos3[1],pos3[2],new TRotMatrix("rot995","rot995",90,0,90,90,0,0));
207     
208     Float_t pos4[3]={-171,470,0};
209     Chamber(3).SetChamberTransform(pos4[0],pos4[1],pos4[2], new TRotMatrix("rot996","rot996",90,20,90,110,0,0));  
210
211     Float_t pos5[3]={161.3999,443.3999,-165.3};
212     Chamber(4).SetChamberTransform(pos5[0],pos5[1],pos5[2],new TRotMatrix("rot997","rot997",90,340,108.1999,70,18.2,70));
213
214     Float_t pos6[3]={0., 471.9, -165.3,};
215     Chamber(5).SetChamberTransform(pos6[0],pos6[1],pos6[2],new TRotMatrix("rot998","rot998",90,0,109.3099,90,19.30999,90));
216
217     Float_t pos7[3]={-161.399,443.3999,-165.3};
218     Chamber(6).SetChamberTransform(pos7[0],pos7[1],pos7[2],new TRotMatrix("rot999","rot999",90,20,108.1999,110,18.2,110));
219     
220     segmentation=Chamber(0).GetSegmentationModel(0);
221     geometry=Chamber(0).GetGeometryModel();
222     response=Chamber(0).GetResponseModel();
223     
224      
225     printf("*                            Pads            : %3dx%3d                          *\n",segmentation->Npx(),segmentation->Npy());
226     printf("*                            Pad size        : %5.2f x%5.2f mm2                 *\n",segmentation->Dpx(),segmentation->Dpy()); 
227     printf("*                            Gap Thickness   : %5.1f cm                         *\n",geometry->GetGapThickness());
228     printf("*                            Radiator Width  : %5.1f cm                         *\n",geometry->GetQuartzWidth());
229     printf("*                            Radiator Length : %5.1f cm                         *\n",geometry->GetQuartzLength());
230     printf("*                            Freon Thickness : %5.1f cm                         *\n",geometry->GetFreonThickness());
231     printf("*                            Charge Slope    : %5.1f ADC                        *\n",response->ChargeSlope());
232     printf("*                            Feedback Prob.  : %5.2f %%                         *\n",response->AlphaFeedback()*100);
233     printf("*                                                                               *\n");
234     printf("*********************************************************************************\n");
235
236 }
237