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