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