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