Analysis Software
Documentation for sPHENIX simulation software
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Fun4All_TestBeam.C
Go to the documentation of this file. Or view the newest version in sPHENIX GitHub for file Fun4All_TestBeam.C
1 #if ROOT_VERSION_CODE >= ROOT_VERSION(6,00,0)
5 
7 
8 #include <phool/recoConsts.h>
9 
10 #include <prototype4/CaloCalibration.h>
11 #include <prototype4/CaloUnpackPRDF.h>
12 #include <prototype4/EventInfoSummary.h>
13 #include <prototype4/GenericUnpackPRDF.h>
14 #include <prototype4/PROTOTYPE4_FEM.h>
15 #include <prototype4/Prototype4DSTReader.h>
16 #include <prototype4/RunInfoUnpackPRDF.h>
17 #include <prototype4/TempInfoUnpackPRDF.h>
18 
19 R__LOAD_LIBRARY(libfun4allraw.so)
20 R__LOAD_LIBRARY(libPrototype4.so)
21 #endif
22 
23 void Fun4All_TestBeam(int nEvents = 100,
24  const char *input_file = "/sphenix/data/data02/sphenix/t1044/fnal/beam/beam_00000406-0000.prdf",
25  const char *output_file = "beam_00000406.root")
26 {
27  gSystem->Load("libfun4all");
28  gSystem->Load("libPrototype4.so");
29 
30  const bool do_cemc = true;
31  const bool do_hcal = true;
32  // const bool do_cemc = false;
33  // const bool do_hcal = false;
34 
37 
39  //rc->set_IntFlag("RUNNUMBER",0);
40 
41  // ------------------- Run info -> RUN node -------------------
42  RunInfoUnpackPRDF *unpack_run = new RunInfoUnpackPRDF();
43  // unpack_run->Verbosity(RunInfoUnpackPRDF::VERBOSITY_SOME);
44 
45  int i_offset = 0;
46 
47  // rcdaq_client create_device device_filenumbers_delete 9 911 "$HOME/beam_values.txt"
48  // S:MTNRG = 120 GeV
49  // F:MT6SC1 = 11127 Cnts
50  // F:MT6SC2 = 10585 Cnts
51  // F:MT6SC3 = 10442 Cnts
52  // F:MT6SC4 = 0 Cnts
53  // F:MT6SC5 = 20251 Cnts
54  // E:2CH = 981.9 mm
55  // E:2CV = 93.17 mm
56  // E:2CMT6T = 76.11 F
57  // E:2CMT6H = 18.09 %Hum
58  // F:MT5CP2 = .0301 Psia
59  // F:MT6CP2 = .6905 Psia
60  i_offset = 0;
61  unpack_run->add_channel("beam_MTNRG_GeV", 911, i_offset++, 1e-4);
62  unpack_run->add_channel("beam_MT6SC1_Cnts", 911, i_offset++, 1e-4);
63  unpack_run->add_channel("beam_MT6SC2_Cnts", 911, i_offset++, 1e-4);
64  unpack_run->add_channel("beam_MT6SC3_Cnts", 911, i_offset++, 1e-4);
65  unpack_run->add_channel("beam_MT6SC4_Cnts", 911, i_offset++, 1e-4);
66  unpack_run->add_channel("beam_MT6SC5_Cnts", 911, i_offset++, 1e-4);
67  unpack_run->add_channel("beam_2CH_mm", 911, i_offset++, 1e-4);
68  unpack_run->add_channel("beam_2CV_mm", 911, i_offset++, 1e-4);
69  unpack_run->add_channel("beam_2CMT6T_F", 911, i_offset++, 1e-4);
70  unpack_run->add_channel("beam_2CMT6H_RH", 911, i_offset++, 1e-4);
71  unpack_run->add_channel("beam_MT5CP2_Psia", 911, i_offset++, 1e-4);
72  unpack_run->add_channel("beam_MT6CP2_Psia", 911, i_offset++, 1e-4);
73 
74  // rcdaq_client create_device device_filenumbers_delete 9 984 "$HOME/DB_LOGGER_EMCAL_A0_values.txt"
75  unpack_run->add_channel("EMCAL_A0_HighGain", 984, 0, 1); // 1: pre-amp high gain, 0: nominal gain
76 
77  // rcdaq_client create_device device_filenumbers_delete 9 983 "$HOME/DB_LOGGER_EMCAL_GR0.txt"
78  unpack_run->add_channel("EMCAL_GR0_BiasOffset_Tower21", 983, 21 - 1, 1); // bias offset in mV for tower 21
79 
80  // rcdaq_client create_device device_filenumbers_delete 9 982 "$HOME/DB_LOGGER_EMCAL_T0_values.txt"
81  unpack_run->add_channel("EMCAL_T0_Tower21", 982, 21 - 1, 1e-3); // temperature reading in C for tower 21
82  //
83  se->registerSubsystem(unpack_run);
84  //
85  // ------------------- Temperature output -------------------
86  // TempInfoUnpackPRDF *unpack_temp = new TempInfoUnpackPRDF();
87  // unpack_temp->Verbosity(RunInfoUnpackPRDF::VERBOSITY_SOME);
88  // se->registerSubsystem(unpack_temp);
89 
90  // ------------------- HCal and EMcal -------------------
91 
92  CaloCalibration *calib = NULL;
93 
94  if (do_cemc)
95  {
96  SubsysReco *unpack = new CaloUnpackPRDF();
97  // unpack->Verbosity(1);
98  se->registerSubsystem(unpack);
99 
100  calib = new CaloCalibration("CEMC");
101  // calib->Verbosity(4);
102  // calib->GetCalibrationParameters().set_double_param("calib_const_scale", 8. / 3000);
103  // calib->GetCalibrationParameters().set_int_param("use_chan_calibration", 0);
104  calib->GetCalibrationParameters().ReadFromFile("CEMC", "xml", 0, 0,
105  string(getenv("CALIBRATIONROOT")) + string("/Prototype4/Calibration/")); // calibration database
106  se->registerSubsystem(calib);
107  }
108 
109  if (do_hcal)
110  {
111  // leading order energy scale from Xu Sun
112  const double cin_cali = 0.00270145;
113  const double cout_cali = 0.0065718;
114 
115  calib = new CaloCalibration("HCALIN");
116  calib->set_calib_tower_node_prefix("CALIB_LG");
117  calib->set_raw_tower_node_prefix("RAW_LG");
118  calib->GetCalibrationParameters().set_name("hcalin_lg");
119 // calib->GetCalibrationParameters().set_double_param("calib_const_scale", cin_cali);
120 // calib->GetCalibrationParameters().set_int_param("use_chan_calibration", 0);
121  calib->GetCalibrationParameters().ReadFromFile("hcalin_lg", "xml", 0, 0,
122  string(getenv("CALIBRATIONROOT")) + string("/Prototype4/Calibration/")); // calibration database
123  se->registerSubsystem(calib);
124 
125  // calib = new CaloCalibration("HCALIN");
126  // calib->set_calib_tower_node_prefix("CALIB_HG");
127  // calib->set_raw_tower_node_prefix("RAW_HG");
128  // calib->GetCalibrationParameters().set_name("hcalin_hg");
129  // calib->GetCalibrationParameters().ReadFromFile("hcalin_hg", "xml", 0, 0,
130  // string(getenv("CALIBRATIONROOT")) + string("/Prototype4/Calibration/")); // calibration database
131  // se->registerSubsystem(calib);
132 
133  calib = new CaloCalibration("HCALOUT");
134  calib->set_calib_tower_node_prefix("CALIB_LG");
135  calib->set_raw_tower_node_prefix("RAW_LG");
136  calib->GetCalibrationParameters().set_name("hcalout_lg");
137 // calib->GetCalibrationParameters().set_double_param("calib_const_scale", cout_cali);
138 // calib->GetCalibrationParameters().set_int_param("use_chan_calibration", 0);
139  calib->GetCalibrationParameters().ReadFromFile("hcalout_lg", "xml", 0, 0,
140  string(getenv("CALIBRATIONROOT")) + string("/Prototype4/Calibration/")); // calibration database
141  se->registerSubsystem(calib);
142 
143  calib = new CaloCalibration("HCALOUT");
144  calib->set_calib_tower_node_prefix("CALIB_HG");
145  calib->set_raw_tower_node_prefix("RAW_HG");
146  calib->GetCalibrationParameters().set_name("hcalout_hg");
147 // calib->GetCalibrationParameters().set_double_param("calib_const_scale", cout_cali / 32);
148 // calib->GetCalibrationParameters().set_int_param("use_chan_calibration", 0);
149  calib->GetCalibrationParameters().ReadFromFile("hcalout_hg", "xml", 0, 0,
150  string(getenv("CALIBRATIONROOT")) + string("/Prototype4/Calibration/")); // calibration database
151  se->registerSubsystem(calib);
152  }
153  //
154  // // ------------------- Hodoscpes -------------------
155  //
156  const int first_packet_id = PROTOTYPE4_FEM::PACKET_ID;
157  // const int second_packet_id = 21102;
158  //
159  GenericUnpackPRDF *gunpack = NULL;
160 
161  const int N_hodo = 8;
162  // mapping based on SPHENIX-doc-121-v6
163  // 1 2 3 4 5 6 7 8
164  // 101 100 103 102 97 96 99 98
165  //
166  //9 109
167  //10 108
168  //11 111
169  //12 110
170  //13 105
171  //14 104
172  //15 107
173  //16 106
174 
175  gunpack = new GenericUnpackPRDF("HODO_VERTICAL");
176  gunpack->add_channel(first_packet_id, 101, 0);
177  gunpack->add_channel(first_packet_id, 100, 1);
178  gunpack->add_channel(first_packet_id, 103, 2);
179  gunpack->add_channel(first_packet_id, 102, 3);
180  gunpack->add_channel(first_packet_id, 97, 4);
181  gunpack->add_channel(first_packet_id, 96, 5);
182  gunpack->add_channel(first_packet_id, 99, 6);
183  gunpack->add_channel(first_packet_id, 98, 7);
184  se->registerSubsystem(gunpack);
185  //
186  gunpack = new GenericUnpackPRDF("HODO_HORIZONTAL");
187  gunpack->add_channel(first_packet_id, 109, 0);
188  gunpack->add_channel(first_packet_id, 108, 1);
189  gunpack->add_channel(first_packet_id, 111, 2);
190  gunpack->add_channel(first_packet_id, 110, 3);
191  gunpack->add_channel(first_packet_id, 105, 4);
192  gunpack->add_channel(first_packet_id, 104, 5);
193  gunpack->add_channel(first_packet_id, 107, 6);
194  gunpack->add_channel(first_packet_id, 106, 7);
195  se->registerSubsystem(gunpack);
196  //
197 
198  // Nicole Lewis [7:12 PM]
199  // added and commented on this Plain Text snippet: Run 545 MPV and Other Values
200  // Collumns: Height, MPV, Sigma, chi2, NDF
201  // Run 545
202  // HODO_HORIZONTAL[0] 18.0525 319.879 83.4359 139.487 199
203  // HODO_HORIZONTAL[1] 26.6811 262.209 65.1704 159.059 171
204  // HODO_HORIZONTAL[2] 27.5885 296.343 61.0538 171.291 205
205  // HODO_HORIZONTAL[3] 24.4132 299.135 72.4796 205.008 214
206  // HODO_HORIZONTAL[4] 28.6331 290.498 66.9209 177.386 205
207  // HODO_HORIZONTAL[5] 29.3528 263.781 61.5052 202.933 195
208  // HODO_HORIZONTAL[6] 21.5175 336.446 78.8985 170.031 206
209  // HODO_HORIZONTAL[7] 17.7948 336.247 91.8477 146.352 201
210  // HODO_VERTICAL[0] 15.3648 238.473 94.6679 111.272 166
211  // HODO_VERTICAL[1] 23.2368 225.202 54.8611 117.209 145
212  // HODO_VERTICAL[2] 25.3442 209.827 66.168 134.383 171
213  // HODO_VERTICAL[3] 36.8254 217.544 44.1445 122.811 167
214  // HODO_VERTICAL[4] 38.0982 210.6 44.9922 160.269 165
215  // HODO_VERTICAL[5] 38.1045 252.022 49.4073 165.239 200
216  // HODO_VERTICAL[6] 42.1052 223.528 44.5291 113.343 171
217  // HODO_VERTICAL[7] 31.1721 244.299 55.974 160.476 186
218 
219  calib = new CaloCalibration("HODO_VERTICAL");
220  calib->GetCalibrationParameters().set_int_param("use_chan_calibration", 1);
221  calib->GetCalibrationParameters().set_double_param(Form("calib_const_column0_row%d", 0), 1 / 238.473); // normalize to 1.0
222  calib->GetCalibrationParameters().set_double_param(Form("calib_const_column0_row%d", 1), 1 / 225.202); // normalize to 1.0
223  calib->GetCalibrationParameters().set_double_param(Form("calib_const_column0_row%d", 2), 1 / 209.827); // normalize to 1.0
224  calib->GetCalibrationParameters().set_double_param(Form("calib_const_column0_row%d", 3), 1 / 217.544); // normalize to 1.0
225  calib->GetCalibrationParameters().set_double_param(Form("calib_const_column0_row%d", 4), 1 / 210.6); // normalize to 1.0
226  calib->GetCalibrationParameters().set_double_param(Form("calib_const_column0_row%d", 5), 1 / 252.022); // normalize to 1.0
227  calib->GetCalibrationParameters().set_double_param(Form("calib_const_column0_row%d", 6), 1 / 223.528); // normalize to 1.0
228  calib->GetCalibrationParameters().set_double_param(Form("calib_const_column0_row%d", 7), 1 / 244.299); // normalize to 1.0
229  se->registerSubsystem(calib);
230 
231  calib = new CaloCalibration("HODO_HORIZONTAL");
232  calib->GetCalibrationParameters().set_int_param("use_chan_calibration", 1);
233  calib->GetCalibrationParameters().set_double_param(Form("calib_const_column0_row%d", 0), 1 / 319.879); // normalize to 1.0
234  calib->GetCalibrationParameters().set_double_param(Form("calib_const_column0_row%d", 1), 1 / 262.209); // normalize to 1.0
235  calib->GetCalibrationParameters().set_double_param(Form("calib_const_column0_row%d", 2), 1 / 296.343); // normalize to 1.0
236  calib->GetCalibrationParameters().set_double_param(Form("calib_const_column0_row%d", 3), 1 / 299.135); // normalize to 1.0
237  calib->GetCalibrationParameters().set_double_param(Form("calib_const_column0_row%d", 4), 1 / 290.498); // normalize to 1.0
238  calib->GetCalibrationParameters().set_double_param(Form("calib_const_column0_row%d", 5), 1 / 263.781); // normalize to 1.0
239  calib->GetCalibrationParameters().set_double_param(Form("calib_const_column0_row%d", 6), 1 / 336.446); // normalize to 1.0
240  calib->GetCalibrationParameters().set_double_param(Form("calib_const_column0_row%d", 7), 1 / 336.247); // normalize to 1.0
241  se->registerSubsystem(calib);
242  //
243  // // ------------------- Other detectors -------------------
244  //
245  // mapping based on SPHENIX-doc-121-v6
246  gunpack = new GenericUnpackPRDF("C1");
247  // unpack->Verbosity(1);
248  gunpack->add_channel(first_packet_id, 165, 0); // 24 Cerenkov 1
249  se->registerSubsystem(gunpack);
250  //
251  calib = new CaloCalibration("C1");
253  se->registerSubsystem(calib);
254  //
255  // mapping based on SPHENIX-doc-121-v6
256  gunpack = new GenericUnpackPRDF("C2");
257  // unpack->Verbosity(1);
258  gunpack->add_channel(first_packet_id, 166, 0); // C2 inner fast
259  gunpack->add_channel(first_packet_id, 160, 1); // C2 outer fast
260  gunpack->add_channel(first_packet_id, 167, 10); // C2 inner slow
261  se->registerSubsystem(gunpack);
262  //
263  calib = new CaloCalibration("C2");
265  calib->GetCalibrationParameters().set_double_param("calib_const_scale", 1);
266  calib->GetCalibrationParameters().set_int_param("use_chan_calibration", 1);
267  calib->GetCalibrationParameters().set_double_param("calib_const_column0_row0", 1);
268  calib->GetCalibrationParameters().set_double_param("calib_const_column0_row1", 1);
269  calib->GetCalibrationParameters().set_double_param("calib_const_column0_row10", 1);
270  calib->GetCalibrationParameters().set_double_param("calib_const_column0_row11", 1);
271  se->registerSubsystem(calib);
272  //
274  // gunpack = new GenericUnpackPRDF("HCAL_SCINT");
276  // gunpack->add_channel(second_packet_id, 19, 1);
277  // gunpack->add_channel(second_packet_id, 20, 2);
278  // gunpack->add_channel(second_packet_id, 21, 3);
279  // se->registerSubsystem(gunpack);
280  //
281  // calib = new CaloCalibration("HCAL_SCINT");
282  // se->registerSubsystem(calib);
283  //
284  // mapping based on SPHENIX-doc-121-v6
285  gunpack = new GenericUnpackPRDF("PbGL");
286  // unpack->Verbosity(1);
287  gunpack->add_channel(first_packet_id, 171, 0); // PbGl (612AM-3)
288  se->registerSubsystem(gunpack);
289 
290  calib = new CaloCalibration("PbGL");
291  calib->GetCalibrationParameters().set_double_param("calib_const_scale", 1);
292  se->registerSubsystem(calib);
293  //
294  // mapping based on SPHENIX-doc-121-v6
295  gunpack = new GenericUnpackPRDF("TRIGGER_VETO");
296  // unpack->Verbosity(1);
297  gunpack->add_channel(first_packet_id, 172, 0); // 172 Counters Bottom veto
298  gunpack->add_channel(first_packet_id, 173, 1); // 173 Counters Top veto
299  gunpack->add_channel(first_packet_id, 174, 2); // 174 Counters Right veto
300  gunpack->add_channel(first_packet_id, 175, 3); // 175 Counters Left Veto
301  se->registerSubsystem(gunpack);
302 
303  // Calibrate the MIP peak to an relative energy of +1.0
304 
305  // Nicole Lewis [7:12 PM]
306  // added and commented on this Plain Text snippet: Run 545 MPV and Other Values
307  // Collumns: Height, MPV, Sigma, chi2, NDF
308  // Run 545
309  // TRIGGER_VETO[0] 501.958 295.811 51.6134 223.972 194
310  // TRIGGER_VETO[1] 262.321 305.247 52.5851 138.403 158
311  // TRIGGER_VETO[2] 238.726 451.48 99.6016 274.339 245
312  // TRIGGER_VETO[3] 135.541 624.076 132.313 284.532 240
313 
314  calib = new CaloCalibration("TRIGGER_VETO");
316  calib->GetCalibrationParameters().set_double_param("calib_const_scale", 1);
317  calib->GetCalibrationParameters().set_int_param("use_chan_calibration", 1);
318  calib->GetCalibrationParameters().set_double_param("calib_const_column0_row0", 1. / 295.811);
319  calib->GetCalibrationParameters().set_double_param("calib_const_column0_row1", 1. / 305.247);
320  calib->GetCalibrationParameters().set_double_param("calib_const_column0_row2", 1. / 451.48);
321  calib->GetCalibrationParameters().set_double_param("calib_const_column0_row3", 1. / 624.076);
322  se->registerSubsystem(calib);
323  //
324  const int N_TileMapper = 16;
325  //
326  gunpack = new GenericUnpackPRDF("TILE_MAPPER");
327  for (int i = 0; i < N_TileMapper; ++i)
328  gunpack->add_channel(first_packet_id, 176 + i, i); // 24 Cerenkov 1
329  se->registerSubsystem(gunpack);
330  //
331  calib = new CaloCalibration("TILE_MAPPER");
332  calib->GetCalibrationParameters().set_double_param("calib_const_scale", 1);
333  se->registerSubsystem(calib);
334  //
335  // mapping based on SPHENIX-doc-121-v6
336  gunpack = new GenericUnpackPRDF("SC3");
337  // unpack->Verbosity(1);
338  gunpack->add_channel(first_packet_id, 169, 0); // MT6SC3 (612AM-2)
339  se->registerSubsystem(gunpack);
340  //
341  calib = new CaloCalibration("SC3");
342  calib->GetCalibrationParameters().set_double_param("calib_const_scale", 1);
343  se->registerSubsystem(calib);
344 
345  gunpack = new GenericUnpackPRDF("FINGER_COUNTER");
346  // unpack->Verbosity(1);
347  gunpack->add_channel(first_packet_id, 168, 0); // 168 Counters Finger counter
348  se->registerSubsystem(gunpack);
349  //
350  calib = new CaloCalibration("FINGER_COUNTER");
351  calib->GetCalibrationParameters().set_double_param("calib_const_scale", 1);
352  se->registerSubsystem(calib);
353  //
354  // gunpack = new GenericUnpackPRDF("SC_MWPC4");
356  // gunpack->add_channel(second_packet_id, 18, 0); // 18 SC behind MWPC4 From channel 4 of adjacent 612AM amplifier
357  // se->registerSubsystem(gunpack);
358  //
359  // calib = new CaloCalibration("SC_MWPC4");
360  // calib->GetCalibrationParameters().set_double_param("calib_const_scale", -1);
361  // se->registerSubsystem(calib);
362  //
363  // gunpack = new GenericUnpackPRDF("SPILL_WARBLER");
365  // gunpack->add_channel(second_packet_id, 16, 0); // Short Meritec cable 0 16 Spill warbler
366  // se->registerSubsystem(gunpack);
367  //
368  // // ------------------- Event summary -------------------
369  //
370  // EventInfoSummary * es = new EventInfoSummary();
371  // es->Verbosity(EventInfoSummary::VERBOSITY_MORE);
372  // se->registerSubsystem(es);
373 
374  // ------------------- Output -------------------
375  //main DST output
376  Fun4AllDstOutputManager *out_Manager = new Fun4AllDstOutputManager("DSTOUT",
377  output_file);
378  se->registerOutputManager(out_Manager);
379 
380  //alternatively, fast check on DST using DST Reader:
382  string(output_file) + string("_DSTReader.root"));
383 
384  reader->AddRunInfo("beam_MTNRG_GeV");
385  reader->AddRunInfo("beam_2CH_mm");
386  reader->AddRunInfo("beam_2CV_mm");
387  reader->AddRunInfo("EMCAL_A0_HighGain");
388  reader->AddRunInfo("EMCAL_GR0_BiasOffset_Tower21");
389  reader->AddRunInfo("EMCAL_T0_Tower21");
390  reader->AddRunInfo("EMCAL_Is_HighEta");
391 
392  // reader->AddEventInfo("beam_Is_In_Spill");
393  // reader->AddEventInfo("beam_SPILL_WARBLER_RMS");
394  // reader->AddEventInfo("CALIB_CEMC_Sum");
395  // reader->AddEventInfo("CALIB_LG_HCALIN_Sum");
396  // reader->AddEventInfo("CALIB_LG_HCALOUT_Sum");
397  //
398  if (do_hcal)
399  {
400  reader->AddTower("RAW_LG_HCALIN");
401  // reader->AddTower("RAW_HG_HCALIN");
402  reader->AddTower("RAW_LG_HCALOUT");
403  reader->AddTower("RAW_HG_HCALOUT");
404 
405  reader->AddTower("CALIB_LG_HCALIN");
406  // reader->AddTower("CALIB_HG_HCALIN");
407  reader->AddTower("CALIB_LG_HCALOUT");
408  reader->AddTower("CALIB_HG_HCALOUT");
409  }
410 
411  if (do_cemc)
412  {
413  reader->AddTower("RAW_CEMC");
414  reader->AddTower("CALIB_CEMC");
415  }
416 
417  //
418  reader->AddTower("RAW_HODO_VERTICAL");
419  reader->AddTower("RAW_HODO_HORIZONTAL");
420  reader->AddTower("CALIB_HODO_VERTICAL");
421  reader->AddTower("CALIB_HODO_HORIZONTAL");
422  //
423  reader->AddTower("RAW_C1");
424  reader->AddTower("CALIB_C1");
425 
426  reader->AddTower("RAW_C2");
427  reader->AddTower("CALIB_C2");
428  //
429  // reader->AddTower("RAW_HCAL_SCINT");
430  // reader->AddTower("CALIB_HCAL_SCINT");
431  //
432  reader->AddTower("RAW_PbGL");
433  reader->AddTower("CALIB_PbGL");
434  //
435  reader->AddTower("RAW_TRIGGER_VETO");
436  reader->AddTower("CALIB_TRIGGER_VETO");
437  //
438  reader->AddTower("RAW_TILE_MAPPER");
439  reader->AddTower("CALIB_TILE_MAPPER");
440  //
441  reader->AddTower("RAW_SC3");
442  reader->AddTower("CALIB_SC3");
443 
444  reader->AddTower("RAW_FINGER_COUNTER");
445  reader->AddTower("CALIB_FINGER_COUNTER");
446 
447  //
448  // reader->AddTower("RAW_SC_MWPC4");
449  // reader->AddTower("CALIB_SC_MWPC4");
450  //
451  // reader->AddTower("RAW_SPILL_WARBLER");
452 
453  // reader->AddTowerTemperature("EMCAL");
454  // reader->AddTowerTemperature("HCALIN");
455  // reader->AddTowerTemperature("HCALOUT");
456 
457  se->registerSubsystem(reader);
458 
460  in->fileopen(input_file);
461  se->registerInputManager(in);
462 
463  se->run(nEvents);
464 
465  se->End();
466 }