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