forked from alisw/AliRoot
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathgalice.C
298 lines (250 loc) · 10.4 KB
/
galice.C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
// In order to create galice.root follow the steps shown below
//
// gAlice->Init("galice.C");
// AliRunLoader::Instance()->Write();
// delete AliRunLoader::Instance();
//
void Config()
{
AliRunLoader* runLoader = AliRunLoader::Open("galice.root", AliConfig::GetDefaultEventFolderName(), "recreate");
runLoader->SetCompressionLevel(2);
runLoader->SetNumberOfEventsPerFile(1);
gAlice->SetRunLoader(runLoader);
gSystem->Load("libgeant321");
new TGeant3("C++ Interface to Geant3");
// Field (L3 0.4 T)
TGeoGlobalMagField::Instance()->SetField(new AliMagF("Maps","Maps", 1., 1., AliMagF::k5kG));
Int_t iABSO = 0;
Int_t iDIPO = 0;
Int_t iFMD = 0;
Int_t iFRAME = 0;
Int_t iHALL = 0;
Int_t iITS = 1;
Int_t iMAG = 0;
Int_t iMUON = 0;
Int_t iPHOS = 0;
Int_t iPIPE = 0;
Int_t iPMD = 0;
Int_t iHMPID = 0;
Int_t iSHIL = 0;
Int_t iT0 = 0;
Int_t iTOF = 0;
Int_t iTPC = 1;
Int_t iTRD = 0;
Int_t iZDC = 0;
Int_t iEMCAL = 0;
Int_t iACORDE = 0;
Int_t iVZERO = 0;
runLoader->CdGAFile();
//=================== Alice BODY parameters =============================
AliBODY *BODY = new AliBODY("BODY", "Alice envelop");
if (iMAG)
{
//=================== MAG parameters ============================
// --- Start with Magnet since detector layouts may be depending ---
// --- on the selected Magnet dimensions ---
AliMAG *MAG = new AliMAG("MAG", "Magnet");
}
if (iABSO)
{
//=================== ABSO parameters ============================
AliABSO *ABSO = new AliABSOv0("ABSO", "Muon Absorber");
}
if (iDIPO)
{
//=================== DIPO parameters ============================
AliDIPO *DIPO = new AliDIPOv2("DIPO", "Dipole version 2");
}
if (iHALL)
{
//=================== HALL parameters ============================
AliHALL *HALL = new AliHALL("HALL", "Alice Hall");
}
if (iFRAME)
{
//=================== FRAME parameters ============================
AliFRAMEv2 *FRAME = new AliFRAMEv2("FRAME", "Space Frame");
if (geo == kHoles) {
FRAME->SetHoles(1);
} else {
FRAME->SetHoles(0);
}
}
if (iSHIL)
{
//=================== SHIL parameters ============================
AliSHIL *SHIL = new AliSHILv2("SHIL", "Shielding Version 2");
}
if (iPIPE)
{
//=================== PIPE parameters ============================
AliPIPE *PIPE = new AliPIPEv0("PIPE", "Beam Pipe");
}
if(iITS) {
//=================== ITS parameters ============================
//
// As the innermost detector in ALICE, the Inner Tracking System "impacts" on
// almost all other detectors. This involves the fact that the ITS geometry
// still has several options to be followed in parallel in order to determine
// the best set-up which minimizes the induced background. All the geometries
// available to date are described in the following. Read carefully the comments
// and use the default version (the only one uncommented) unless you are making
// comparisons and you know what you are doing. In this case just uncomment the
// ITS geometry you want to use and run Aliroot.
//
// Detailed geometries:
//
//
//AliITS *ITS = new AliITSv5symm("ITS","Updated ITS TDR detailed version with symmetric services");
//
//AliITS *ITS = new AliITSv5asymm("ITS","Updates ITS TDR detailed version with asymmetric services");
//
AliITSvPPRasymmFMD *ITS = new AliITSvPPRasymmFMD("ITS","New ITS PPR detailed version with asymmetric services");
ITS->SetMinorVersion(2); // don't touch this parameter if you're not an ITS developer
ITS->SetReadDet(kFALSE); // don't touch this parameter if you're not an ITS developer
// ITS->SetWriteDet("$ALICE_ROOT/ITS/ITSgeometry_vPPRasymm2.det"); // don't touch this parameter if you're not an ITS developer
ITS->SetThicknessDet1(200.); // detector thickness on layer 1 must be in the range [100,300]
ITS->SetThicknessDet2(200.); // detector thickness on layer 2 must be in the range [100,300]
ITS->SetThicknessChip1(200.); // chip thickness on layer 1 must be in the range [150,300]
ITS->SetThicknessChip2(200.); // chip thickness on layer 2 must be in the range [150,300]
ITS->SetRails(0); // 1 --> rails in ; 0 --> rails out
ITS->SetCoolingFluid(1); // 1 --> water ; 0 --> freon
//
//AliITSvPPRsymm *ITS = new AliITSvPPRsymm("ITS","New ITS PPR detailed version with symmetric services");
//ITS->SetMinorVersion(2); // don't touch this parameter if you're not an ITS developer
//ITS->SetReadDet(kFALSE); // don't touch this parameter if you're not an ITS developer
//ITS->SetWriteDet("$ALICE_ROOT/ITS/ITSgeometry_vPPRsymm2.det"); // don't touch this parameter if you're not an ITS developer
//ITS->SetThicknessDet1(200.); // detector thickness on layer 1 must be in the range [100,300]
//ITS->SetThicknessDet2(200.); // detector thickness on layer 2 must be in the range [100,300]
//ITS->SetThicknessChip1(200.); // chip thickness on layer 1 must be in the range [150,300]
//ITS->SetThicknessChip2(200.); // chip thickness on layer 2 must be in the range [150,300]
//ITS->SetRails(0); // 1 --> rails in ; 0 --> rails out
//ITS->SetCoolingFluid(1); // 1 --> water ; 0 --> freon
//
//
// Coarse geometries (warning: no hits are produced with these coarse geometries and they unuseful
// for reconstruction !):
//
//
//AliITSvPPRcoarseasymm *ITS = new AliITSvPPRcoarseasymm("ITS","New ITS PPR coarse version with asymmetric services");
//ITS->SetRails(0); // 1 --> rails in ; 0 --> rails out
//ITS->SetSupportMaterial(0); // 0 --> Copper ; 1 --> Aluminum ; 2 --> Carbon
//
//AliITS *ITS = new AliITSvPPRcoarsesymm("ITS","New ITS PPR coarse version with symmetric services");
//ITS->SetRails(0); // 1 --> rails in ; 0 --> rails out
//ITS->SetSupportMaterial(0); // 0 --> Copper ; 1 --> Aluminum ; 2 --> Carbon
//
//
//
// Geant3 <-> EUCLID conversion
// ============================
//
// SetEUCLID is a flag to output (=1) or not to output (=0) both geometry and
// media to two ASCII files (called by default ITSgeometry.euc and
// ITSgeometry.tme) in a format understandable to the CAD system EUCLID.
// The default (=0) means that you dont want to use this facility.
//
ITS->SetEUCLID(0);
}
if (iTPC)
{
//============================ TPC parameters ================================
// --- This allows the user to specify sectors for the SLOW (TPC geometry 2)
// --- Simulator. SecAL (SecAU) <0 means that ALL lower (upper)
// --- sectors are specified, any value other than that requires at least one
// --- sector (lower or upper)to be specified!
// --- Reminder: sectors 1-24 are lower sectors (1-12 -> z>0, 13-24 -> z<0)
// --- sectors 25-72 are the upper ones (25-48 -> z>0, 49-72 -> z<0)
// --- SecLows - number of lower sectors specified (up to 6)
// --- SecUps - number of upper sectors specified (up to 12)
// --- Sens - sensitive strips for the Slow Simulator !!!
// --- This does NOT work if all S or L-sectors are specified, i.e.
// --- if SecAL or SecAU < 0
//
//
//-----------------------------------------------------------------------------
// gROOT->LoadMacro("SetTPCParam.C");
// AliTPCParam *param = SetTPCParam();
AliTPC *TPC = new AliTPCv2("TPC", "Default");
// All sectors included
TPC->SetSecAU(-1);
TPC->SetSecAL(-1);
}
if (iTOF) {
if (geo == kHoles) {
//=================== TOF parameters ============================
AliTOF *TOF = new AliTOFv2FHoles("TOF", "TOF with Holes");
} else {
AliTOF *TOF = new AliTOFv4T0("TOF", "normal TOF");
}
}
if (iHMPID)
{
//=================== HMPID parameters ===========================
AliHMPID *HMPID = new AliHMPIDv3("HMPID", "normal HMPID");
}
if (iZDC)
{
//=================== ZDC parameters ============================
AliZDC *ZDC = new AliZDCv2("ZDC", "normal ZDC");
}
if (iTRD)
{
//=================== TRD parameters ============================
AliTRD *TRD = new AliTRDv1("TRD", "TRD slow simulator");
// Select the gas mixture (0: 97% Xe + 3% isobutane, 1: 90% Xe + 10% CO2)
TRD->SetGasMix(1);
if (geo == kHoles) {
// With hole in front of PHOS
TRD->SetPHOShole();
// With hole in front of HMPID
TRD->SetHMPIDhole();
}
// Switch on TR
AliTRDsim *TRDsim = TRD->CreateTR();
}
if (iFMD)
{
//=================== FMD parameters ============================
AliFMD *FMD = new AliFMDv1("FMD", "normal FMD");
FMD->SetRingsSi1(256);
FMD->SetRingsSi2(128);
FMD->SetSectorsSi1(20);
FMD->SetSectorsSi2(40);
}
if (iMUON)
{
//=================== MUON parameters ===========================
AliMUON *MUON = new AliMUONv1("MUON", "default");
}
//=================== PHOS parameters ===========================
if (iPHOS)
{
AliPHOS *PHOS = new AliPHOSv1("PHOS", "IHEP");
}
if (iPMD)
{
//=================== PMD parameters ============================
AliPMD *PMD = new AliPMDv1("PMD", "normal PMD");
}
if (iT0)
{
//=================== T0 parameters ============================
AliT0 *T0 = new AliT0v1("T0", "T0 Detector");
}
if (iEMCAL)
{
//=================== EMCAL parameters ============================
AliEMCAL *EMCAL = new AliEMCALv1("EMCAL", "EMCALArch1a");
}
if (iACORDE)
{
//=================== ACORDE parameters ============================
AliACORDE *ACORDE = new AliACORDEv1("ACORDE", "normal ACORDE");
}
if (iVZERO)
{
//=================== ACORDE parameters ============================
AliVZERO *VZERO = new AliVZEROv2("VZERO", "normal VZERO");
}
}