KaliVeda  1.13/01
Heavy-Ion Analysis Toolkit
KVINDRAFNL.cpp
Go to the documentation of this file.
1 /***************************************************************************
2 $Id: KVINDRAFNL.cpp,v 1.11 2008/12/17 13:01:26 franklan Exp $
3  kvindrafnl.cpp - description
4  -------------------
5  begin : Wed Oct 29 2003
6  copyright : (C) 2003 by J.D. Frankland
7  email : frankland@ganil.fr
8  ***************************************************************************/
9 
10 /***************************************************************************
11  * *
12  * This program is free software; you can redistribute it and/or modify *
13  * it under the terms of the GNU General Public License as published by *
14  * the Free Software Foundation; either version 2 of the License, or *
15  * (at your option) any later version. *
16  * *
17  ***************************************************************************/
18 
19 #include "KVINDRAFNL.h"
20 #include "KVSiB.h"
21 #include "KVBIC.h"
22 #include "KVTelBlocking.h"
23 #include "KVIDTelescope.h"
24 #include "KVIDBlocking.h"
25 #include "KVDataSet.h"
26 
27 #define CHIO_SI_PIEDS "pied_chiosi_e416a.dat"
28 #define CSI_PIEDS "pied_csi_e416a.dat"
29 
30 
33 
36 {
37  //Default ctor.
38 }
39 
40 
41 
42 
45 
46 KVINDRAFNL::~KVINDRAFNL()
47 {
48  //Default dtor.
49 }
50 
51 
52 
53 
61 
63 {
64 // //Add SIB and BIC detectors to KVINDRA4 list
65 // KVINDRA4::MakeListOfDetectorTypes();
66 // KVSiB *sib = new KVSiB(500.0);
67 // fDetectorTypes->Add(sib);
68 // KVBIC *bic = new KVBIC(30.); //BIC 30 Torr
69 // fDetectorTypes->Add(bic);
70 }
71 
72 
73 
74 
90 
92 {
93  //Add KVTelBlocking telescopes to list of prototypes for KVINDRA4
94  //Each of these replaces a ChIo cell and block of 4 Si/CsI, so we use the azimuthal
95  //widths corresponding to the replaced ChIo in each case.
96 
97 // KVINDRA4::PrototypeTelescopes();
98 
99 // //telescope blocking #1 : ring 4 12h
100 // KVTelBlocking *tel = new KVTelBlocking(1);
101 // fTelescopes->Add(tel);
102 // tel->SetType("Blocking T1");
103 // tel->SetAzimuthalWidth(29.10);
104 
105 // //telescope blocking #2 & #3 : ring 6 1h & 9h
106 // tel = new KVTelBlocking(2);
107 // fTelescopes->Add(tel);
108 // tel->SetType("Blocking T2/3");
109 // tel->SetAzimuthalWidth(29.28);
110 
111 }
112 
113 
114 
115 
123 
125 {
126  //build KVINDRA4, then remove detectors not present in E416
127  //These are:
128  // ChIo Ring 2, Rings 13/14/16
129  // Si300 Rings 1-5
130  // ChIo-Si-CsI groups: 0423-0524, 0617-0718, 0601-0702
131  //Then add the 3 blocking telescopes T1, T2 and T3 (BIC + SIB)
132 
133  KVINDRA4::BuildGeometry();
134 
135  //remove chio's
136  RemoveRing("CHIO", 2);
137  RemoveRing("CHIO", 13);
138  RemoveRing("CHIO", 14);
139  RemoveRing("CHIO", 16);
140 
141  //remove Si300
142  for (int ring = 1; ring < 6; ring++) {
143  GetRing("SI-CSI", ring)->RemoveDetectors("SI");
144  }
145 
146 }
147 
148 
149 
150 
153 
155 {
156  //Construct KVINDRAFNL
157  KVINDRA4::Build(run);
158 
159  GetRing("CHIO", 4)->RemoveTelescope("CI_0423");
160  GetRing("SI-CSI", 4)->RemoveTelescope("CSI_0423");
161  GetRing("SI-CSI", 4)->RemoveTelescope("CSI_0424");
162  GetRing("SI-CSI", 5)->RemoveTelescope("CSI_0523");
163  GetRing("SI-CSI", 5)->RemoveTelescope("CSI_0524");
164  GetRing("CHIO", 6)->RemoveTelescope("CI_0601");
165  GetRing("SI-CSI", 6)->RemoveTelescope("SI_CSI_0601");
166  GetRing("SI-CSI", 6)->RemoveTelescope("SI_CSI_0602");
167  GetRing("SI-CSI", 7)->RemoveTelescope("SI_CSI_0701");
168  GetRing("SI-CSI", 7)->RemoveTelescope("SI_CSI_0702");
169  GetRing("CHIO", 6)->RemoveTelescope("CI_0617");
170  GetRing("SI-CSI", 6)->RemoveTelescope("SI_CSI_0617");
171  GetRing("SI-CSI", 6)->RemoveTelescope("SI_CSI_0618");
172  GetRing("SI-CSI", 7)->RemoveTelescope("SI_CSI_0717");
173  GetRing("SI-CSI", 7)->RemoveTelescope("SI_CSI_0718");
174 
175  //add blocking telescopes
176 // KVLayer *B__lay = new KVLayer(); //blocking layer
177 
178 // KVTelescope *B__tel =
179 // (KVTelescope *) fTelescopes->FindObjectByType("Blocking T1");
180 // //distance target->entrance of telescope.
181 // //1224mm is distance to SIB, so have to subtract depth of SIB
182 // Double_t dist = 1224. - B__tel->GetDepth(2);
183 // B__lay->AddRing(new KVRing(4, 7.21, 13.83, 0., 1, dist, B__tel)
184 
185 // );
186 
187 // B__tel = (KVTelescope *) fTelescopes->FindObjectByType("Blocking T2/3");
188 // //distance target->entrance of telescope.
189 // //1003mm is distance to SIB, so have to subtract depth of SIB
190 // dist = 1003. - B__tel->GetDepth(2);
191 // B__lay->
192 // AddRing(new
193 // KVRing(6, 14.21, 26.74, 30., 2, dist, B__tel, 1, 2, 240.)
194 
195 // );
196 
197 // B__lay->SetName("BLOCKING");
198 // AddLayer(B__lay);
199 
200 // UpdateArray();
201 
202 // SetName("INDRA");
203 // SetTitle("INDRA for FNL Experiments E416 & E416a");
204 
205 // //set pedestals
206 // Info("Build", "Setting pedestals for ChIo/Si detectors");
207 // TString fullpath;
208 // SearchKVFile(CHIO_SI_PIEDS, fullpath, fDataSet.Data());
209 // SetPedestals(fullpath.Data());
210 // Info("Build", "Setting pedestals for CsI detectors");
211 // SearchKVFile(CSI_PIEDS, fullpath, fDataSet.Data());
212 // SetPedestals(fullpath.Data());
213 }
214 
215 
216 
217 
244 
246  UInt_t type) const
247 {
248  //Modified KVINDRA::GetDetectorByType
249  //If the type is "ChIo_*" or "Si_*" and ring number 'cou' and
250  //module number 'mod' correspond to one of the INDRA detectors
251  //removed to make way for the blocking telescopes, then we return
252  //a pointer to the corresponding BIC or SIB
253  //
254  //i.e.
255  //GetDetectorByType(4,23,ChIo_GG/PG/T) -> BIC_1
256  //GetDetectorByType(4,23,Si_GG/PG/T) -> SIB_1
257  //GetDetectorByType(4,24,Si_GG/PG/T) -> SIB_1
258  //GetDetectorByType(5,23,Si_GG/PG/T) -> SIB_1
259  //GetDetectorByType(5,24,Si_GG/PG/T) -> SIB_1
260  //
261  //GetDetectorByType(6,1,ChIo_GG/PG/T) -> BIC_2
262  //GetDetectorByType(6,1,Si_GG/PG/T) -> SIB_2
263  //GetDetectorByType(6,2,Si_GG/PG/T) -> SIB_2
264  //GetDetectorByType(7,1,Si_GG/PG/T) -> SIB_2
265  //GetDetectorByType(7,2,Si_GG/PG/T) -> SIB_2
266  //
267  //GetDetectorByType(6,17,ChIo_GG/PG/T) -> BIC_3
268  //GetDetectorByType(6,17,Si_GG/PG/T) -> SIB_3
269  //GetDetectorByType(6,18,Si_GG/PG/T) -> SIB_3
270  //GetDetectorByType(7,17,Si_GG/PG/T) -> SIB_3
271  //GetDetectorByType(7,18,Si_GG/PG/T) -> SIB_3
272  //
273 
275 
276  if (!det) {
277  if (cou == 4 && mod == 23 && (type >= ChIo_GG && type <= ChIo_T))
278  det = (KVINDRADetector*)GetDetector("BIC_1");
279  else if (cou == 6 && mod == 1 && (type >= ChIo_GG && type <= ChIo_T))
280  det = (KVINDRADetector*)GetDetector("BIC_2");
281  else if (cou == 6 && mod == 17
282  && (type >= ChIo_GG && type <= ChIo_T))
283  det = (KVINDRADetector*)GetDetector("BIC_3");
284  else if ((cou >= 4 && cou <= 5) && (mod >= 23 && mod <= 24)
285  && (type >= Si_GG && type <= Si_T))
286  det = (KVINDRADetector*)GetDetector("SIB_1");
287  else if ((cou >= 6 && cou <= 7) && (mod >= 1 && mod <= 2)
288  && (type >= Si_GG && type <= Si_T))
289  det = (KVINDRADetector*)GetDetector("SIB_2");
290  else if ((cou >= 6 && cou <= 7) && (mod >= 17 && mod <= 18)
291  && (type >= Si_GG && type <= Si_T))
292  det = (KVINDRADetector*)GetDetector("SIB_3");
293  }
294  return det;
295 }
296 
297 
298 
int Int_t
unsigned int UInt_t
@ ChIo_T
Definition: KVINDRA.h:44
@ ChIo_GG
Definition: KVINDRA.h:42
@ Si_GG
Definition: KVINDRA.h:45
@ Si_T
Definition: KVINDRA.h:47
ClassImp(KVPartitionList) void KVPartitionList
Initialisation.
int type
Base class for detectors of INDRA array.
Describes INDRA as used in FNL experiment E416 (June-July 2003)
Definition: KVINDRAFNL.h:31
KVINDRADetector * GetDetectorByType(UInt_t cou, UInt_t mod, UInt_t type) const
Definition: KVINDRAFNL.cpp:245
virtual void PrototypeTelescopes()
Definition: KVINDRAFNL.cpp:91
virtual void MakeListOfDetectorTypes()
Definition: KVINDRAFNL.cpp:62
virtual void BuildGeometry()
Definition: KVINDRAFNL.cpp:124
virtual void Build(Int_t run=-1)
Construct KVINDRAFNL.
Definition: KVINDRAFNL.cpp:154
virtual KVINDRADetector * GetDetectorByType(UInt_t cou, UInt_t mod, UInt_t type) const
Definition: KVINDRA.cpp:642