source: trunk/MagicSoft/Mars/mhist/MHEnergyTime.cc@ 2124

Last change on this file since 2124 was 2043, checked in by tbretz, 22 years ago
*** empty log message ***
File size: 3.9 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 1/2002 <mailto:tbretz@astro.uni-wuerzburg.de>
19!
20! Copyright: MAGIC Software Development, 2000-2002
21!
22!
23\* ======================================================================== */
24
25//////////////////////////////////////////////////////////////////////////////
26// //
27// MHEnergyTime //
28// //
29//////////////////////////////////////////////////////////////////////////////
30
31#include "MHEnergyTime.h"
32
33#include <TCanvas.h>
34
35#include "MMcEvt.hxx"
36#include "MTime.h"
37
38#include "MH.h"
39#include "MBinning.h"
40
41#include "MLog.h"
42#include "MLogManip.h"
43
44#include "MParList.h"
45
46ClassImp(MHEnergyTime);
47
48// --------------------------------------------------------------------------
49//
50// Creates the three necessary histograms:
51// - selected showers (input)
52// - all showers (input)
53// - collection area (result)
54//
55MHEnergyTime::MHEnergyTime(const char *name, const char *title)
56{
57 // initialize the histogram for the distribution r vs E
58 //
59 // we set the energy range from 1 Gev to 10000 GeV (in log 5 orders
60 // of magnitude) and for each order we take 10 subdivision --> 50 xbins
61 //
62 // we set the radius range from 0 m to 500 m with 10 m bin --> 50 ybins
63
64 fName = name ? name : "MHEnergyTime";
65 fTitle = title ? title : "Data to Calculate Collection Area";
66
67 fHist.SetDirectory(NULL);
68
69 fHist.SetXTitle("E [GeV]");
70 fHist.SetYTitle("t [s]");
71 fHist.SetZTitle("N");
72}
73
74Bool_t MHEnergyTime::SetupFill(const MParList *plist)
75{
76 fTime = (MTime*)plist->FindObject("MTime");
77 if (!fTime)
78 {
79 *fLog << err << dbginf << "MTime not found... aborting." << endl;
80 return kFALSE;
81 }
82
83 const MBinning* binsenergy = (MBinning*)plist->FindObject("BinningE");
84 const MBinning* binstime = (MBinning*)plist->FindObject("BinningTime");
85 if (!binsenergy || !binstime)
86 {
87 *fLog << err << dbginf << "At least one MBinning not found... aborting." << endl;
88 return kFALSE;
89 }
90
91 SetBinning(&fHist, binsenergy, binstime);
92
93 return kTRUE;
94}
95
96// --------------------------------------------------------------------------
97//
98// Fill data into the histogram which contains all showers
99//
100Bool_t MHEnergyTime::Fill(const MParContainer *par, const Stat_t w)
101{
102 const MMcEvt &mcevt = *(MMcEvt*)par;
103
104 fHist.Fill(mcevt.GetEnergy(), 0.0001*fTime->GetTimeLo(), w);
105
106 return kTRUE;
107}
108
109// --------------------------------------------------------------------------
110//
111// Draw the histogram with all showers
112//
113void MHEnergyTime::Draw(Option_t* option)
114{
115 TVirtualPad *pad = gPad ? gPad : MakeDefCanvas(this);
116 pad->SetBorderMode(0);
117
118 AppendPad("");
119
120 pad->SetLogy();
121 fHist.DrawCopy(option);
122
123 pad->Modified();
124 pad->Update();
125}
126
127// --------------------------------------------------------------------------
128//
129// Calculate the Efficiency (collection area) and set the 'ReadyToSave'
130// flag
131//
132void MHEnergyTime::Divide(const TH2D *h1, const TH2D *h2)
133{
134 // Description!
135
136 fHist.Sumw2();
137 fHist.Divide((TH2D*)h1, (TH2D*)h2);
138
139 SetReadyToSave();
140}
Note: See TracBrowser for help on using the repository browser.