]> git.uio.no Git - u/mrichter/AliRoot.git/blob - RICH/AliRICHv1.cxx
Took two lines out of output.
[u/mrichter/AliRoot.git] / RICH / AliRICHv1.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.8  2000/11/01 15:39:00  jbarbosa
19   Updated default geometry.
20
21   Revision 1.7  2000/10/03 21:44:09  morsch
22   Use AliSegmentation and AliHit abstract base classes.
23
24   Revision 1.6  2000/07/10 15:28:39  fca
25   Correction of the inheritance scheme
26
27   Revision 1.5  2000/06/30 16:38:51  dibari
28   Removed setters.
29
30   Revision 1.4  2000/06/13 13:13:40  jbarbosa
31   Correcting previous correction...
32
33   Revision 1.3  2000/06/13 13:06:38  jbarbosa
34   Fixed compiling error for HP (multiple declaration)
35
36   Revision 1.2  2000/06/12 15:36:16  jbarbosa
37   Cleaned up version.
38
39   Revision 1.1  2000/06/09 15:00:31  jbarbosa
40   New full version. All parameters configurable.
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 full version //
67 //////////////////////////////////////////////////////////
68
69 #include <TTUBE.h>
70 #include <TNode.h> 
71 #include <TRandom.h> 
72 #include <TParticle.h> 
73
74 #include "AliRICHv1.h"
75 #include "AliRICHHit.h"
76 #include "AliSegmentation.h"
77 #include "AliRICHResponse.h"
78 #include "AliRICHSegmentationV0.h"
79 #include "AliRICHResponseV0.h"
80 #include "AliRICHGeometry.h"
81 #include "AliRun.h"
82 #include "AliMC.h"
83 #include "iostream.h"
84 #include "AliCallf77.h"
85 #include "AliConst.h" 
86 #include "AliPDG.h" 
87 #include "TGeant3.h"
88
89 ClassImp(AliRICHv1)
90     
91 //___________________________________________
92 AliRICHv1::AliRICHv1()
93 {
94
95 // Default constructor fo AliRICHvv1 (full version)
96
97     //fChambers = 0;
98 }
99
100 //___________________________________________
101 AliRICHv1::AliRICHv1(const char *name, const char *title)
102     : AliRICH(name,title)
103 {
104
105 // Full version of RICH with hits and diagnostics
106
107   // Version 0
108 // Default Segmentation, no hits
109     AliRICHSegmentationV0* segmentationV0 = new AliRICHSegmentationV0;
110 //
111 //  Segmentation parameters
112     segmentationV0->SetPadSize(0.84,0.80);
113     segmentationV0->SetDAnod(0.84/2);
114 //
115 //  Geometry parameters
116     AliRICHGeometry* geometry = new AliRICHGeometry;
117     geometry->SetGapThickness(8);
118     geometry->SetProximityGapThickness(.4);
119     geometry->SetQuartzLength(133);
120     geometry->SetQuartzWidth(127.9);
121     geometry->SetQuartzThickness(.5);
122     geometry->SetOuterFreonLength(133);
123     geometry->SetOuterFreonWidth(41.3);
124     geometry->SetInnerFreonLength(133);
125     geometry->SetInnerFreonWidth(41.3);
126     geometry->SetFreonThickness(1.5);
127 //
128 //  Response parameters
129     AliRICHResponseV0*  responseV0   = new AliRICHResponseV0;
130     responseV0->SetSigmaIntegration(5.);
131     responseV0->SetChargeSlope(27.);
132     responseV0->SetChargeSpread(0.18, 0.18);
133     responseV0->SetMaxAdc(4096);
134     responseV0->SetAlphaFeedback(0.036);
135     responseV0->SetEIonisation(26.e-9);
136     responseV0->SetSqrtKx3(0.77459667);
137     responseV0->SetKx2(0.962);
138     responseV0->SetKx4(0.379);
139     responseV0->SetSqrtKy3(0.77459667);
140     responseV0->SetKy2(0.962);
141     responseV0->SetKy4(0.379);
142     responseV0->SetPitch(0.25);
143 //
144 //
145 //    AliRICH *RICH = (AliRICH *) gAlice->GetDetector("RICH"); 
146     
147     fCkovNumber=0;
148     fFreonProd=0;
149     Int_t i=0;
150     
151     fChambers = new TObjArray(kNCH);
152     for (i=0; i<kNCH; i++) {
153       
154       (*fChambers)[i] = new AliRICHChamber();  
155       
156     }
157   
158     for (i=0; i<kNCH; i++) {
159       SetGeometryModel(i,geometry);
160       SetSegmentationModel(i, segmentationV0);
161       SetResponseModel(i, responseV0);
162       SetNsec(i,1);
163       SetDebugLevel(0);
164     }
165
166
167 }
168
169 void AliRICHv1::Init()
170 {
171
172   printf("*********************************** RICH_INIT ***********************************\n");
173   printf("*                                                                               *\n");
174   printf("*                        AliRICHv1 Full version started                         *\n");
175   printf("*                                                                               *\n");
176
177   
178   AliSegmentation*  segmentation;
179   AliRICHGeometry*  geometry;
180   AliRICHResponse*  response;
181
182
183     // 
184     // Initialize Tracking Chambers
185     //
186     for (Int_t i=1; i<kNCH; i++) {
187         //printf ("i:%d",i);
188         ( (AliRICHChamber*) (*fChambers)[i])->Init(i);  
189     }  
190     
191     //
192     // Set the chamber (sensitive region) GEANT identifier
193     
194     ((AliRICHChamber*)(*fChambers)[0])->SetGid(1);  
195     ((AliRICHChamber*)(*fChambers)[1])->SetGid(2);  
196     ((AliRICHChamber*)(*fChambers)[2])->SetGid(3);  
197     ((AliRICHChamber*)(*fChambers)[3])->SetGid(4);  
198     ((AliRICHChamber*)(*fChambers)[4])->SetGid(5);  
199     ((AliRICHChamber*)(*fChambers)[5])->SetGid(6);  
200     ((AliRICHChamber*)(*fChambers)[6])->SetGid(7); 
201
202     Float_t pos1[3]={0,471.8999,165.2599};
203     Chamber(0).SetChamberTransform(pos1[0],pos1[1],pos1[2],new TRotMatrix("rot993","rot993",90,0,70.69,90,19.30999,-90));
204
205     Float_t pos2[3]={171,470,0};
206     Chamber(1).SetChamberTransform(pos2[0],pos2[1],pos2[2],new TRotMatrix("rot994","rot994",90,-20,90,70,0,0));
207
208     Float_t pos3[3]={0,500,0};
209     Chamber(2).SetChamberTransform(pos3[0],pos3[1],pos3[2],new TRotMatrix("rot995","rot995",90,0,90,90,0,0));
210     
211     Float_t pos4[3]={-171,470,0};
212     Chamber(3).SetChamberTransform(pos4[0],pos4[1],pos4[2], new TRotMatrix("rot996","rot996",90,20,90,110,0,0));  
213
214     Float_t pos5[3]={161.3999,443.3999,-165.3};
215     Chamber(4).SetChamberTransform(pos5[0],pos5[1],pos5[2],new TRotMatrix("rot997","rot997",90,340,108.1999,70,18.2,70));
216
217     Float_t pos6[3]={0., 471.9, -165.3,};
218     Chamber(5).SetChamberTransform(pos6[0],pos6[1],pos6[2],new TRotMatrix("rot998","rot998",90,0,109.3099,90,19.30999,90));
219
220     Float_t pos7[3]={-161.399,443.3999,-165.3};
221     Chamber(6).SetChamberTransform(pos7[0],pos7[1],pos7[2],new TRotMatrix("rot999","rot999",90,20,108.1999,110,18.2,110));
222     
223     segmentation=Chamber(0).GetSegmentationModel(0);
224     geometry=Chamber(0).GetGeometryModel();
225     response=Chamber(0).GetResponseModel();
226     
227      
228     printf("*                            Pads            : %3dx%3d                          *\n",segmentation->Npx(),segmentation->Npy());
229     printf("*                            Pad size        : %5.2f x%5.2f mm2                 *\n",segmentation->Dpx(),segmentation->Dpy()); 
230     printf("*                            Gap Thickness   : %5.1f cm                         *\n",geometry->GetGapThickness());
231     printf("*                            Radiator Width  : %5.1f cm                         *\n",geometry->GetQuartzWidth());
232     printf("*                            Radiator Length : %5.1f cm                         *\n",geometry->GetQuartzLength());
233     printf("*                            Freon Thickness : %5.1f cm                         *\n",geometry->GetFreonThickness());
234     printf("*                            Charge Slope    : %5.1f ADC                        *\n",response->ChargeSlope());
235     printf("*                            Feedback Prob.  : %5.2f %%                         *\n",response->AlphaFeedback()*100);
236     printf("*                            Debug Level     : %3d                              *\n",GetDebugLevel());
237     printf("*                                                                               *\n");
238     printf("*********************************************************************************\n");
239
240 }
241
242
243
244
245
246
247
248