source: trunk/MagicSoft/Mars/mhist/MHCerPhotEvt.cc@ 2177

Last change on this file since 2177 was 2173, checked in by tbretz, 21 years ago
*** empty log message ***
File size: 4.8 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/2002 <mailto:tbretz@astro.uni-wuerzburg.de>
19!
20! Copyright: MAGIC Software Development, 2000-2003
21!
22!
23\* ======================================================================== */
24
25/////////////////////////////////////////////////////////////////////////////
26//
27// MHCerPhotEvt
28//
29/////////////////////////////////////////////////////////////////////////////
30#include "MHCerPhotEvt.h"
31
32#include <TCanvas.h>
33
34#include "MLog.h"
35#include "MLogManip.h"
36
37#include "MParList.h"
38#include "MCerPhotEvt.h"
39#include "MCamDisplay.h"
40
41#include "MGeomCam.h"
42#include "MGeomPix.h"
43
44ClassImp(MHCerPhotEvt);
45
46using namespace std;
47
48// --------------------------------------------------------------------------
49//
50// Reset all pixels to 0 and reset fEntries to 0.
51//
52void MHCerPhotEvt::Clear(const Option_t *)
53{
54 fSum.Reset();
55// fSum.InitSize(577);
56 for (int i=0; i<577; i++)
57 {
58 fSum.AddPixel(i, 0, 0);
59 fSum[i].SetPixelUnused();
60 }
61 fSum.FixSize();
62 fEntries = 0;
63}
64
65// --------------------------------------------------------------------------
66//
67// Initialize the name and title of the task.
68// Resets the sum histogram
69//
70MHCerPhotEvt::MHCerPhotEvt(const char *name, const char *title)
71 : fCam(NULL), fEvt(NULL), fDispl(NULL)
72{
73 //
74 // set the name and title of this object
75 //
76 fName = name ? name : "MHCerPhotEvt";
77 fTitle = title ? title : "Average of MCerPhotEvts";
78
79 Clear();
80}
81
82// --------------------------------------------------------------------------
83//
84// Delete the corresponding camera display if available
85//
86MHCerPhotEvt::~MHCerPhotEvt()
87{
88 if (fDispl)
89 delete fDispl;
90}
91
92// --------------------------------------------------------------------------
93//
94// Get the event (MCerPhotEvt) the histogram might be filled with. If
95// it is not given, it is assumed, that it is filled with the argument
96// of the Fill function.
97// Looks for the camera geometry MGeomCam and resets the sum histogram.
98//
99Bool_t MHCerPhotEvt::SetupFill(const MParList *plist)
100{
101 fEvt = (MCerPhotEvt*)plist->FindObject("MCerPhotEvt");
102 if (!fEvt)
103 *fLog << warn << GetDescriptor() << ": No MCerPhotEvt available..." << endl;
104
105 fCam = (MGeomCam*)plist->FindObject("MGeomCam");
106 if (!fCam)
107 *fLog << warn << GetDescriptor() << ": No MGeomCam found." << endl;
108
109 Clear();
110
111 return kTRUE;
112}
113
114// --------------------------------------------------------------------------
115//
116// Fill the histograms with data from a MCerPhotEvt-Container.
117//
118Bool_t MHCerPhotEvt::Fill(const MParContainer *par, const Stat_t w)
119{
120 const MCerPhotEvt *evt = par ? (MCerPhotEvt*)par : fEvt;
121 if (!evt)
122 {
123 *fLog << err << dbginf << "No MCerPhotEvt found..." << endl;
124 return kFALSE;
125 }
126
127 const UInt_t n = evt->GetNumPixels();
128
129 for (UInt_t i=0; i<n; i++)
130 {
131 const MCerPhotPix &pix = (*evt)[i];
132
133 const Int_t id = pix.GetPixId();
134
135 fSum[id].SetPixelUsed();
136 fSum[id].AddNumPhotons(pix.GetNumPhotons());
137 }
138
139 fEntries++;
140
141 return kTRUE;
142}
143
144// --------------------------------------------------------------------------
145//
146// Scale the sum container with the number of entries
147//
148Bool_t MHCerPhotEvt::Finalize()
149{
150 fSum.Scale(fEntries);
151 return kTRUE;
152}
153
154// --------------------------------------------------------------------------
155//
156// Draw the present 'fill status'
157//
158void MHCerPhotEvt::Draw(Option_t *)
159{
160 if (!fCam)
161 {
162 *fLog << warn << "WARNING - Cannot draw " << GetDescriptor() << ": No Camera Geometry available." << endl;
163 return;
164 }
165
166 TVirtualPad *pad = gPad ? gPad : MakeDefCanvas(this, 750, 600);
167 pad->SetBorderMode(0);
168
169 AppendPad("");
170}
171
172// --------------------------------------------------------------------------
173//
174// If a camera display is not yet assigned, assign a new one.
175//
176void MHCerPhotEvt::Paint(Option_t *option)
177{
178 if (!fCam)
179 {
180 *fLog << warn << "WARNING - Cannot paint " << GetDescriptor() << ": No Camera Geometry available." << endl;
181 return;
182 }
183
184 if (!fDispl)
185 fDispl = new MCamDisplay(fCam);
186
187 fDispl->FillPhotNum(fSum);
188 fDispl->Paint();
189}
Note: See TracBrowser for help on using the repository browser.