source: tags/Mars-V0.8.7pre/mmc/MMcConfigRunHeader.h

Last change on this file was 5599, checked in by MAGIC, 20 years ago
*** empty log message ***
File size: 5.2 KB
Line 
1#ifndef MARS_MMcConfigRunHeader
2#define MARS_MMcConfigRunHeader
3
4#ifndef ROOT_TClonesArray
5#include <TClonesArray.h>
6#endif
7
8#ifndef MARS_MGeomMirror
9#include "MGeomMirror.h"
10#endif
11#ifndef MARS_MGeomPMT
12#include "MGeomPMT.h"
13#endif
14
15class MGeomMirror;
16class MGeomPMT;
17
18//////////////////////////////////////////////////////////////////////////////////
19//
20// class MMcConfigRunHeader
21//
22// Authors: O. Blanch, A. Moralejo
23//
24// Container to keep some data on the used MC simulation parameters
25//
26// Version 3: Added member fLightCollectionFactorOuter so that we can store
27// the data on the simulatedlight collection efficiency (light
28// guides + plexiglas +...) as a function of incidence angle for
29// outer and inner pixels independently.
30//
31// Version 4: Added member fMirrorFraction, the "active" fraction of the
32// mirror dish, to account for reflectivity losses, missing
33// mirrors, etc.
34//
35// Version 5: Added member fPmtTimeJitter, the time jitter of the PMTs
36// (sigma of gaussian) for each photoelectron.
37//
38/////////////////////////////////////////////////////////////////////////////////
39
40class MMcConfigRunHeader : public MParContainer
41{
42private:
43 // Mirror Information
44 UShort_t fNumMirrors;
45 Float_t fRadiusMirror;// [cm] Radius of a single mirror
46 TClonesArray *fMirrors; // FIXME: Change TClonesArray away from a pointer?
47
48 Float_t fMirrorFraction; // (adimensional, between 0 and 1) Fraction of mirror dish
49 // which is really working.
50
51 // Magic Def Parameters
52 Float_t fFocalDist; // [cm] Focal distance
53 Float_t fPointSpread; // [cm] Point spread function, sigma in x and y on the camera as simualted in the Reflector
54 Float_t fPointSpreadX; // [cm] Point spread function, sigma in x on the camera adding gaussian in the Camera
55 Float_t fPointSpreadY; // [cm] Point spread function, sigma in y on the camera adding gaussian in the Camera
56 Float_t fBlackSpot; // [cm] Radius of black spot in the mirror center
57 Float_t fCameraWidth; // [cm] Radius on the camera plain
58 // inside which the phe are kept.
59
60 Float_t fMissPointingX; // [deg] Misspointing in deg added in he Camera
61 Float_t fMissPointingY; // [deg] simulation at rho (rotation FoV) = 0.
62
63 Float_t fPmtTimeJitter; // [ns] PMT time jitter (sigma of gaussian), per phe-
64
65 // QE Information
66 UInt_t fNumPMTs;
67 TClonesArray *fPMTs;
68
69 // Light Collection Information (guides , plexiglas, 1st dynode)
70
71 TArrayF fIncidentTheta; // [deg] Angle (0-180 deg) between light
72 // direction and camera plane.
73 TArrayF fLightCollectionFactor;// Inner pixels
74 TArrayF fLightCollectionFactorOuter;// Outer pixels
75
76public:
77 MMcConfigRunHeader(const char *name=NULL, const char *title=NULL);
78 ~MMcConfigRunHeader() { delete fMirrors; delete fPMTs; }
79
80 void SetMagicDef(Float_t radius, Float_t focal, Float_t point,
81 Float_t spot, Float_t camwidth);
82 void SetLightCollection(const TArrayF &theta, const TArrayF &factor,
83 const TArrayF &factor_outer);
84
85 UInt_t GetNumMirror() const { return fNumMirrors; }
86 void InitSizeMirror(UInt_t num) { fMirrors->Expand(num); }
87
88 void SetMirrorFraction(Float_t x) { fMirrorFraction = x; }
89
90 UInt_t GetNumPMTs() const { return fNumPMTs; }
91 void InitSizePMTs(UInt_t num) { fPMTs->Expand(num); }
92
93 Float_t GetPointSpread() const { return fPointSpread; }
94 void SetPointSpread(Float_t x) { fPointSpread = x; }
95
96 Float_t GetPointSpreadX() const { return fPointSpreadX; }
97 void SetPointSpreadX(Float_t x) { fPointSpreadX = x; }
98 Float_t GetPointSpreadY() const { return fPointSpreadY; }
99 void SetPointSpreadY(Float_t x) { fPointSpreadY = x; }
100
101 Float_t GetMissPointingX() const {return fMissPointingX;}
102 void SetMissPointingX(Float_t x) {fMissPointingX=x;}
103
104 Float_t GetMissPointingY() const {return fMissPointingY;}
105 void SetMissPointingY(Float_t x) {fMissPointingY=x;}
106
107 TArrayF GetLightCollectionFactor() const {return fLightCollectionFactor; }
108 TArrayF GetLightCollectionFactorOuter() const
109 {return fLightCollectionFactorOuter; }
110
111 Float_t GetMirrorFraction() const { return fMirrorFraction; }
112
113 TArrayF GetIncidentTheta() const {return fIncidentTheta;}
114
115 void AddMirror(Int_t id)
116 {
117 new ((*fMirrors)[fNumMirrors++]) MGeomMirror(id);
118 }
119
120 void AddPMT(Int_t id)
121 {
122 new ((*fPMTs)[fNumPMTs++]) MGeomPMT(id);
123 }
124
125 MGeomMirror &GetMirror(int i) { return *(MGeomMirror*)(fMirrors->UncheckedAt(i)); }
126 MGeomMirror &GetMirror(int i) const { return *(MGeomMirror*)(fMirrors->UncheckedAt(i)); }
127
128 TClonesArray *GetMirrors() { return fMirrors; }
129
130 MGeomPMT &GetPMT(int i) { return *(MGeomPMT*)(fPMTs->UncheckedAt(i)); }
131 MGeomPMT &GetPMT(int i) const { return *(MGeomPMT*)(fPMTs->UncheckedAt(i)); }
132 void SetPmtTimeJitter(Float_t x) { fPmtTimeJitter = x; }
133 Float_t GetPmtTimeJitter() const { return fPmtTimeJitter; }
134
135 ClassDef(MMcConfigRunHeader, 5) // class for monte carlo configuration information
136};
137
138#endif
139
Note: See TracBrowser for help on using the repository browser.