]> git.uio.no Git - u/mrichter/AliRoot.git/blob - RICH/AliRICHv2.cxx
Put vacuum in beam-pipe not air.
[u/mrichter/AliRoot.git] / RICH / AliRICHv2.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.5  2000/12/20 14:08:14  jbarbosa
19   Removed dependencies on TGeant3 (thanks to F. Carminati and I. Hrivnacova)
20
21   Revision 1.4  2000/12/18 17:44:49  jbarbosa
22   Took two lines out of output.
23
24   Revision 1.3  2000/10/03 21:44:09  morsch
25   Use AliSegmentation and AliHit abstract base classes.
26
27   Revision 1.2  2000/07/10 15:28:39  fca
28   Correction of the inheritance scheme
29
30   Revision 1.1  2000/06/30 16:40:03  dibari
31   New configurale version.
32
33   Revision 1.4  2000/06/13 13:13:40  jbarbosa
34   Correcting previous correction...
35
36   Revision 1.3  2000/06/13 13:06:38  jbarbosa
37   Fixed compiling error for HP (multiple declaration)
38
39   Revision 1.2  2000/06/12 15:36:16  jbarbosa
40   Cleaned up version.
41
42   Revision 1.1  2000/06/09 15:00:31  jbarbosa
43   New full version. All parameters configurable.
44
45   Revision 1.9  2000/05/31 08:19:38  jbarbosa
46   Fixed bug in StepManager
47
48   Revision 1.8  2000/05/26 17:30:08  jbarbosa
49   Cerenkov angle now stored within cerenkov data structure.
50
51   Revision 1.7  2000/05/18 10:31:36  jbarbosa
52   Fixed positioning of spacers inside freon.
53   Fixed positioning of proximity gap
54   inside methane.
55   Fixed cut on neutral particles in the StepManager.
56
57   Revision 1.6  2000/04/28 11:51:58  morsch
58    Dimensions of arrays hits and Ckov_data corrected.
59
60   Revision 1.5  2000/04/19 13:28:46  morsch
61   Major changes in geometry (parametrised), materials (updated) and
62   step manager (diagnostics) (JB, AM)
63
64 */
65
66
67
68 //////////////////////////////////////////////////////////
69 //  Manager and hits classes for set: RICH full version //
70 //////////////////////////////////////////////////////////
71
72 #include <TTUBE.h>
73 #include <TNode.h> 
74 #include <TRandom.h> 
75 #include <TParticle.h> 
76
77 #include "AliRICHv2.h"
78 #include "AliRICHHit.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(AliRICHv2)
87     
88 //___________________________________________
89 AliRICHv2::AliRICHv2()
90 {
91
92 // Default constructor fo AliRICHvv2 (full version)
93
94     //fChambers = 0;
95 }
96
97 //___________________________________________
98 AliRICHv2::AliRICHv2(const char *name, const char *title)
99     : AliRICH(name,title)
100 {
101
102 // Full version of RICH with hits and diagnostics, CONFIURABLE
103
104     fCkovNumber=0;
105     fFreonProd=0;
106   
107     fChambers = new TObjArray(kNCH);
108     for (Int_t i=0; i<kNCH; i++) {
109     
110         (*fChambers)[i] = new AliRICHChamber();  
111         
112     }
113 }
114
115 void AliRICHv2::Init()
116 {
117
118   printf("*********************************** RICH_INIT ***********************************\n");
119   printf("*                                                                               *\n");
120   printf("*                    AliRICHv2 Configurable version started                     *\n");
121   printf("*                                                                               *\n");
122
123   
124   AliSegmentation*  segmentation;
125   AliRICHGeometry*  geometry;
126   AliRICHResponse*  response;
127
128
129     // 
130     // Initialize Tracking Chambers
131     //
132     for (Int_t i=0; i<kNCH; i++) {
133         //printf ("i:%d",i);
134         ( (AliRICHChamber*) (*fChambers)[i])->Init(i);  
135     }  
136     
137     //
138     // Set the chamber (sensitive region) GEANT identifier
139     
140     ((AliRICHChamber*)(*fChambers)[0])->SetGid(1);  
141     ((AliRICHChamber*)(*fChambers)[1])->SetGid(2);  
142     ((AliRICHChamber*)(*fChambers)[2])->SetGid(3);  
143     ((AliRICHChamber*)(*fChambers)[3])->SetGid(4);  
144     ((AliRICHChamber*)(*fChambers)[4])->SetGid(5);  
145     ((AliRICHChamber*)(*fChambers)[5])->SetGid(6);  
146     ((AliRICHChamber*)(*fChambers)[6])->SetGid(7); 
147
148     Float_t pos1[3]={0,471.8999,165.2599};
149     Chamber(0).SetChamberTransform(pos1[0],pos1[1],pos1[2],new TRotMatrix("rot993","rot993",90,0,70.69,90,19.30999,-90));
150
151     Float_t pos2[3]={171,470,0};
152     Chamber(1).SetChamberTransform(pos2[0],pos2[1],pos2[2],new TRotMatrix("rot994","rot994",90,-20,90,70,0,0));
153
154     Float_t pos3[3]={0,500,0};
155     Chamber(2).SetChamberTransform(pos3[0],pos3[1],pos3[2],new TRotMatrix("rot995","rot995",90,0,90,90,0,0));
156     
157     Float_t pos4[3]={-171,470,0};
158     Chamber(3).SetChamberTransform(pos4[0],pos4[1],pos4[2], new TRotMatrix("rot996","rot996",90,20,90,110,0,0));  
159
160     Float_t pos5[3]={161.3999,443.3999,-165.3};
161     Chamber(4).SetChamberTransform(pos5[0],pos5[1],pos5[2],new TRotMatrix("rot997","rot997",90,340,108.1999,70,18.2,70));
162
163     Float_t pos6[3]={0., 471.9, -165.3,};
164     Chamber(5).SetChamberTransform(pos6[0],pos6[1],pos6[2],new TRotMatrix("rot998","rot998",90,0,109.3099,90,19.30999,90));
165
166     Float_t pos7[3]={-161.399,443.3999,-165.3};
167     Chamber(6).SetChamberTransform(pos7[0],pos7[1],pos7[2],new TRotMatrix("rot999","rot999",90,20,108.1999,110,18.2,110));
168     
169     segmentation=Chamber(0).GetSegmentationModel(0);
170     geometry=Chamber(0).GetGeometryModel();
171     response=Chamber(0).GetResponseModel();
172     
173      
174     printf("*                            Pads            : %3dx%3d                          *\n",segmentation->Npx(),segmentation->Npy());
175     printf("*                            Pad size        : %5.2f x%5.2f mm2                 *\n",segmentation->Dpx(),segmentation->Dpy()); 
176     printf("*                            Gap Thickness   : %5.1f cm                         *\n",geometry->GetGapThickness());
177     printf("*                            Radiator Width  : %5.1f cm                         *\n",geometry->GetQuartzWidth());
178     printf("*                            Radiator Length : %5.1f cm                         *\n",geometry->GetQuartzLength());
179     printf("*                            Freon Thickness : %5.1f cm                         *\n",geometry->GetFreonThickness());
180     printf("*                            Charge Slope    : %5.1f ADC                        *\n",response->ChargeSlope());
181     printf("*                            Feedback Prob.  : %5.2f %%                          *\n",response->AlphaFeedback()*100);
182     printf("*                            Debug Level     : %3d                              *\n",GetDebugLevel());
183     printf("*                                                                               *\n");
184     printf("*********************************************************************************\n");
185
186 }
187