source: trunk/MagicSoft/Mars/macros/trigrate.C@ 1354

Last change on this file since 1354 was 1163, checked in by blanch, 23 years ago
The list of MHMcRate is created usinf from and to instead of only dimension. Otherwise the case of a single trigger option is not well treated.
File size: 3.5 KB
Line 
1/* ======================================================================== *\
2!
3! *
4! * This file is part of MARS, the MAGIC Analysis and Reconstruction
5! * Software. It is distributed to you in the hope that it can be a useful
6! * and timesaving tool in analysing Data of imaging Cerenkov telescopes.
7! * It is distributed WITHOUT ANY WARRANTY.
8! *
9! * Permission to use, copy, modify and distribute this software and its
10! * documentation for any purpose is hereby granted without fee,
11! * provided that the above copyright notice appear in all copies and
12! * that both that copyright notice and this permission notice appear
13! * in supporting documentation. It is provided "as is" without express
14! * or implied warranty.
15! *
16!
17!
18! Author(s): Thomas Bretz 12/2000 (tbretz@uni-sw.gwdg.de)
19!
20! Copyright: MAGIC Software Development, 2000-2001
21!
22!
23\* ======================================================================== */
24
25
26void trigrate(int dim=0, char *filename = "data/camera.root" )
27{
28 // This macro has two input parameter:
29 // dim : = 0 -> root file with 1 trigger condition.
30 // > 0 -> number of trigger condition to be analised
31 // in multi conditon file.
32 // < 0 -> selects the -dim trigger condition.
33 //
34 // first we have to create our empty lists
35 //
36 MParList parlist;
37 MTaskList tasklist;
38
39 //
40 // Setup the parameter list.
41 // - we do not need to create any other container. All of them
42 // are created automatically without loss - we don't have to
43 // access them-
44 //
45 // - we need to create MHMcRate only. The other containers
46 // are created automatically without loss - we don't have to
47 // access them-
48 // - MHMcRate must be created by us because we need the pointer
49 // to it and if it would get created automatically it would also be
50 // deleted automatically
51 // - Actually, depending on using a single trigger option MonteCarlo
52 // file or a multyple trigger option, a MHMcRate or an array of
53 // MHMcRate are needed.
54 //
55 parlist.AddToList(&tasklist);
56
57 //
58 // You don't have to add the MHMcRate container here by hand.
59 // But if you want to print or display these containers later on
60 // it is necessary (Rem: No printing or displaying is done in this
61 // macro yet)
62 //
63 UInt_t from = dim>0 ? 1 : -dim;
64 UInt_t to = dim>0 ? dim : -dim;
65
66 Int_t num = to-from+1;
67
68 TObjArray hists(MParList::CreateObjList("MHMcRate", from, to));
69 hists.SetOwner();
70
71 //
72 // Check if the list really contains the right number of histograms
73 //
74 if (hists.GetEntriesFast() != num)
75 return;
76
77 //
78 // Add the histograms to the paramater list.
79 //
80 parlist.AddToList(&hists);
81
82 //
83 // Setup out tasks:
84 // - First we have to read the events
85 // - Then we can calculate rates, for what the number of
86 // triggered showers from a empty reflector file for the
87 // analised trigger conditions should be set (BgR[])
88 //
89 MReadTree reader("Events", filename);
90 tasklist.AddToList(&reader);
91
92 Float_t BgR[10]={0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
93 cout << "Number of Trigger conditions: " << num << endl;
94
95 MMcTriggerRateCalc rate(dim, 14, BgR, 100000);
96 tasklist.AddToList(&rate);
97
98 //
99 // set up the loop for the processing
100 //
101 MEvtLoop magic;
102 magic.SetParList(&parlist);
103
104 //
105 // Start to loop over all events
106 //
107 if (!magic.Eventloop())
108 return;
109
110 hists.Print();
111}
Note: See TracBrowser for help on using the repository browser.