source: trunk/MagicSoft/include-Classes/MMcFormat/MMcRunHeader.cxx@ 2345

Last change on this file since 2345 was 2283, checked in by blanch, 22 years ago
*** empty log message ***
  • Property svn:executable set to *
File size: 7.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/////////////////////////////////////////////////////////////////////////////
26//
27// MMcRunHeader
28//
29// Root storage container for the RUN MONTE CARLO HEADER information
30//
31// This the second version of this output class. Old root files, which have
32// a previous version of this class, are still compatibles and can be used.
33// But of course, you can no try to get infromatino in these old files about
34// the new data members.
35//
36// The following data member have been introduced in this second version
37// and they do not exist in the previous one:
38//
39// Float_t fMcRunNumber; Run Number
40// UInt_t fProductionSite; code to know where the run was generated
41// Float_t fDateRunMMCs; Date of the MMCs production
42// Float_t fDateRunCamera; Date, when the Camera program is run.
43// Byte_t fRawEvt; RawEvt[Data,Hedaer] stored or not
44// Byte_t fElecNoise; Electronic Noise simulated or not
45// Byte_t fStarFieldRotate; Is the starfield rotation switched on (1) or
46// off (0)
47// Float_t fCWaveLower; Wavelength limits for the Cerenkov photons
48// Float_t fCWaveUpper;
49// UInt_t fNumObsLev; Observation levels
50// Float_t fHeightLev[10];
51// Float_t fSlopeSpec; Spectral index
52//
53// Third version:
54//
55// Byte_t fOpticLinksNoise; Flag to state if the optic noise is simualted or not
56//
57//
58// Note: All the azimuth Phi angles in this and other MC classes follow
59// the convention in the Corsika program (see Corsika manual). There, phi
60// is the azimuth of the momentum vector of particles, and is measured
61// from the north direction, anticlockwise (i.e, west is phi=90 degrees).
62// When it refers to the telescope orientation, it is the azimuth of a
63// vector along the telescope axis, going from the camera to the mirror.
64// So, fTelesTheta=90, fTelesPhi = 0 means the telescope is pointing
65// horizontally towards South. For an explanation, see also TDAS 02-11.
66//
67////////////////////////////////////////////////////////////////////////////
68
69#include "MMcRunHeader.hxx"
70
71#include <fstream>
72#include <iomanip>
73
74#include "MLog.h"
75
76ClassImp(MMcRunHeader);
77
78using namespace std;
79
80// --------------------------------------------------------------------------
81//
82// Default constructor.
83//
84//
85MMcRunHeader::MMcRunHeader(const char *name, const char *title)
86{
87 fName = name ? name : "MMcRunHeader";
88 fTitle = title ? title : "Raw Run Header Information";
89
90 fMcRunNumber =0;
91 fProductionSite = 0;
92 fDateRunMMCs = 0;
93 fDateRunCamera = 0;
94 fNumTrigCond = 0;
95 fAllEvtsTriggered = 0 ;
96 fMcEvt = 0;
97 fMcTrig = 0;
98 fMcFadc = 0;
99 fRawEvt = 0;
100 fElecNoise = 0;
101 fStarFieldRotate = 0;
102 fNumAnalisedPixels = 0;
103 fNumSimulatedShowers = 0;
104 fNumStoredShowers = 0;
105
106 fStarFieldRaH = 0;
107 fStarFieldRaM = 0;
108 fStarFieldRaS = 0;
109 fStarFieldDeD = 0;
110 fStarFieldDeM = 0;
111 fStarFieldDeS = 0;
112
113 fNumPheFromDNSB = 0.0;
114 fTelesTheta = 0.0;
115 fTelesPhi = 0.0;
116 fSourceOffsetTheta = 0.0;
117 fSourceOffsetPhi = 0.0;
118 fShowerThetaMax = 0.0;
119 fShowerThetaMin = 0.0;
120 fShowerPhiMax = 0.0;
121 fShowerPhiMin = 0.0;
122
123 fCWaveLower = 0.0;
124 fCWaveUpper = 0.0;
125
126 fNumObsLev = 0;
127 for (int i=0; i<10; i++){
128 fHeightLev[i]=0.0;
129 }
130 fSlopeSpec = 0.0;
131
132 fCorsikaVersion = 0;
133 fReflVersion = 0;
134 fCamVersion = 0;
135 fOpticLinksNoise= 0;
136
137}
138
139// --------------------------------------------------------------------------
140//
141// Destructor.
142//
143MMcRunHeader::~MMcRunHeader()
144{
145
146}
147
148// -------------------------------------------------------------------------
149//
150// Fill. Put data in the container
151//
152void MMcRunHeader::Fill(const Float_t runnumber,
153 const UInt_t productionsite,
154 const Float_t daterunMMCs,
155 const Float_t daterunCamera,
156 const UInt_t numtrigcond,
157 const Byte_t allevts,
158 const Byte_t mcevt,
159 const Byte_t mctrig,
160 const Byte_t mcfadc,
161 const Byte_t rawevt,
162 const Byte_t elecnoise,
163 const Int_t numanalpixels,
164 const UInt_t numsim,
165 const UInt_t numsto,
166 const Byte_t starfieldrotate,
167 const Int_t sfRaH,
168 const Int_t sfRaM,
169 const Int_t sfRaS,
170 const Int_t sfDeD,
171 const Int_t sfDeM,
172 const Int_t sfDeS,
173 const Float_t numdnsb,
174 const Float_t telestheta,
175 const Float_t telesphi,
176 const Float_t sofftheta,
177 const Float_t soffphi,
178 const Float_t shthetamax,
179 const Float_t shthetamin,
180 const Float_t shphimax,
181 const Float_t shphimin,
182 const Float_t impactmax,
183 const Float_t cwavelower,
184 const Float_t cwaveupper,
185 const Float_t slopespec,
186 const UInt_t numObslev,
187 const Float_t heightlev[10],
188 const UInt_t corsika,
189 const UInt_t refl,
190 const UInt_t cam,
191 const Byte_t opticnoise)
192{
193 fMcRunNumber =runnumber;
194 fProductionSite = productionsite;
195 fDateRunMMCs = daterunMMCs;
196 fDateRunCamera = daterunCamera;
197 fNumTrigCond = numtrigcond;
198 fAllEvtsTriggered = allevts;
199 fMcEvt = mcevt;
200 fMcTrig = mctrig;
201 fMcFadc = mcfadc;
202 fRawEvt = rawevt;
203 fElecNoise = elecnoise;
204 fStarFieldRotate = starfieldrotate;
205 fNumAnalisedPixels = numanalpixels;
206 fNumSimulatedShowers = numsim;
207 fNumStoredShowers = numsto;
208
209 fStarFieldRaH = sfRaH;
210 fStarFieldRaM = sfRaM;
211 fStarFieldRaS = sfRaS;
212 fStarFieldDeD = sfDeD;
213 fStarFieldDeM = sfDeM;
214 fStarFieldDeS = sfDeS;
215
216 fNumPheFromDNSB = numdnsb;
217 fTelesTheta = telestheta;
218 fTelesPhi = telesphi;
219 fSourceOffsetTheta = sofftheta;
220 fSourceOffsetPhi = soffphi;
221 fShowerThetaMax = shthetamax;
222 fShowerThetaMin = shthetamin;
223 fShowerPhiMax = shphimax;
224 fShowerPhiMin = shphimin;
225
226 fImpactMax=impactmax;
227
228 fCWaveLower = cwavelower;
229 fCWaveUpper = cwaveupper;
230
231 fNumObsLev = numObslev;
232 for (UInt_t i=0; i<numObslev; i++){
233 fHeightLev[i]=heightlev[i];
234 }
235 fSlopeSpec = slopespec;
236
237 fCorsikaVersion = corsika;
238 fReflVersion = refl;
239 fCamVersion = cam;
240 fOpticLinksNoise= opticnoise;
241}
242
243// -------------------------------------------------------------------------
244//
245// GetStarFieldRa. Get RA coordinates of the starfield
246//
247void MMcRunHeader::GetStarFieldRa(Int_t *hour, Int_t *minute, Int_t *second) const
248{
249 *hour = fStarFieldRaH;
250 *minute = fStarFieldRaM;
251 *second = fStarFieldRaS;
252}
253// -------------------------------------------------------------------------
254//
255// GetStarFieldDec. Get DE coordinates of the starfield
256//
257void MMcRunHeader::GetStarFieldDec(Int_t *degree, Int_t *minute, Int_t *second) const
258{
259 *degree = fStarFieldDeD;
260 *minute = fStarFieldDeM;
261 *second = fStarFieldDeS;
262}
Note: See TracBrowser for help on using the repository browser.