SatAndLight  2.2.2-hubble
Simulation toolkit for space telescopes
Loading...
Searching...
No Matches
Camera.h
Go to the documentation of this file.
1#ifndef __Camera__
2#define __Camera__
3
10#include "CameraConfig.h"
11#include "Rotation.h"
12#include <TRandom3.h>
13#include <TF1.h>
14#include <TH2.h>
15#include <TTree.h>
16#include <TFile.h>
17#include <TMath.h>
18
97class Camera: public Rotation {
98
99 public:
100
106
129 Camera(const int aNbits=14, const int aNy=256, const int aNz=256);
130
132
135 virtual ~Camera(void);
141
147 void WriteMap(const string aOutFileName="./mymaps.root");
148
150
156 inline void SetSize(const double aXsize=1.0, const double aYsize=1.0, const double aZsize=1.0){
157 cam_xsize=aXsize;
158 cam_ysize=aYsize;
159 cam_zsize=aZsize;
160 };
161
163
166 inline double GetXsize(void){ return cam_xsize; };
167
169
172 inline double GetYsize(void){ return cam_ysize; };
173
175
178 inline double GetZsize(void){ return cam_zsize; };
179
181
188 inline void AddPixelAmplitudeValue(const int aPixIndexY, const int aPixIndexZ, const int aValue){
189 cam_map[pixamplitude]->SetBinContent(aPixIndexY+1,aPixIndexZ+1,TMath::Min(cam_ampmax,(int)cam_map[pixamplitude]->GetBinContent(aPixIndexY+1,aPixIndexZ+1)+aValue));
190 };
191
193
202 inline void SetPixelValue(const CAMERA_MAPTYPE aMapType, const int aPixIndexY, const int aPixIndexZ, const int aValue, const double aValueErr=0.0){
203 cam_map[aMapType]->SetBinError(aPixIndexY+1,aPixIndexZ+1,aValueErr);
204 cam_map[aMapType]->SetBinContent(aPixIndexY+1,aPixIndexZ+1,aValue);
205 };
206
208
216 inline int GetPixelValue(const CAMERA_MAPTYPE aMapType, const int aPixIndexY, const int aPixIndexZ){
217 return cam_map[aMapType]->GetBinContent(aPixIndexY+1,aPixIndexZ+1);
218 };
219
221
229 inline double GetPixelError(const CAMERA_MAPTYPE aMapType, const int aPixIndexY, const int aPixIndexZ){
230 return cam_map[aMapType]->GetBinError(aPixIndexY+1,aPixIndexZ+1);
231 };
232
234
237 inline int GetMapNy(void){
238 return cam_map[pixamplitude]->GetNbinsX();
239 };
240
242
245 inline int GetMapNz(void){
246 return cam_map[pixamplitude]->GetNbinsY();
247 };
248
250
255 inline void ResetMap(const CAMERA_MAPTYPE aMapType){
256 cam_map[aMapType]->Reset();
257 };
258
260
267 void GenAmplitudeNoiseMap(void);
268
270
275 void SetFrozenBrightY(const int aPixIndexY);
276
278
283 void SetFrozenBrightZ(const int aPixIndexZ);
284
286
290 void SetRandomPixelBright(const int aN);
291
293
297 void SetRandomPixelDead(const int aN);
298
300
305 void SetName(const string aName);
306
308
311 inline string GetName(void){ return cam_name; };
312
314
318 inline void SetTimeResolution(const UInt_t aTimeResolution=100){
319 cam_dt=aTimeResolution;
320 };
321
323
326 inline UInt_t GetTimeResolution(void){ return cam_dt; };
327
329
333 inline void SetTime(const ULong64_t aTime=0){
334 cam_time=aTime;
335 };
336
338
341 inline ULong64_t GetTime(void){ return cam_time; };
342
344
350 inline void SetPhotonResolution(const double aPixelResY=1.0, const double aPixelResZ=1.0){
351 cam_photon_gaus[0]->SetParameters(1.0/sqrt(2*TMath::Pi())/aPixelResY*(double)GetMapNy(),
352 0.0,
353 aPixelResY/(double)GetMapNy());
354 cam_photon_gaus[1]->SetParameters(1.0/sqrt(2*TMath::Pi())/aPixelResZ*(double)GetMapNz(),
355 0.0,
356 aPixelResZ/(double)GetMapNz());
357 };
358
360
365 inline void SetCosmicRayEnergyLoss(const double aEnergyLoss=1.0){
366 cam_cosmic_pixenergy = aEnergyLoss;
367 };
368
370
391 void AddPhoton(const double aEnergy, const double aY, const double aZ,
392 const int aSourceIndex=0, const int aParticleIndex=0);
393
395
413 void AddCosmicRay(const double aEnergy, const double aY, const double aZ,
414 const double aCosTheta, const double aSinTheta,
415 const double aCosPhi, const double aSinPhi,
416 const int aSourceIndex=0, const int aParticleIndex=0);
417
419
428 void SetMap(const CAMERA_MAPTYPE aMapType, TH2S *aMap);
429
431
448 void SetPixelDistributions(const CAMERA_MAPTYPE aMapType,
449 double aPar1=-1.0, double aPar2=-1.0,
450 double aPar3=-1.0, double aPar4=-1.0);
451
453
458 void SetGainUniform(const double aGain);
459
461
466 void SetGain(TH2F* aGainMap);
467
469
489 void TreeInit(void);
490
492
497 int TreeFill(void);
498
500
504 inline void TreeReset(void){
505 if(cam_tree!=NULL) return cam_tree->Reset();
506 return;
507 };
508
510
515 inline int TreeWrite(void){
516 if(cam_tree!=NULL) return cam_tree->Write();
517 return 0;
518 };
519
521
524 inline void TreeDelete(void){
525 if(cam_tree!=NULL) delete cam_tree;
526 cam_tree=NULL;
527 return;
528 };
529
531
536 inline TH2S* GetMap(const CAMERA_MAPTYPE aMapType){ return cam_map[aMapType]; };
537
538 protected:
539 TTree *cam_tree;
540 TRandom3 *randgen;
541
542 private:
543
544 string cam_name;
547 double cam_xsize;
548 double cam_ysize;
549 double cam_zsize;
550 ULong64_t cam_time;
551 UInt_t cam_dt;
557
559 TH2F *cam_gain;
560
565
566 ClassDef(Camera,0)
567};
568
569#endif
570
571
This module is used to configure a CCD camera.
CAMERA_MAPTYPE
Enumerator to describe the different types of maps.
Definition CameraConfig.h:25
@ pixntype
number of map types.
Definition CameraConfig.h:29
@ pixamplitude
raw amplitude map.
Definition CameraConfig.h:26
const int CAMERA_NHITMAX
Maximum number of hits per picture.
Definition CameraConfig.h:19
This module is used to perform three-dimensional rotations.
CCD camera.
Definition Camera.h:97
void SetTime(const ULong64_t aTime=0)
Sets the camera time [ms].
Definition Camera.h:333
virtual ~Camera(void)
Camera class destructor.
Definition Camera.cc:83
void ResetMap(const CAMERA_MAPTYPE aMapType)
Resets a given map.
Definition Camera.h:255
TH2F * cam_gain
gain map.
Definition Camera.h:559
UInt_t cam_dt
electronic integration time [ms].
Definition Camera.h:551
double cam_photon_resy
Gaussian width for photons (Y): only used for the TTree!!! See TreeFill().
Definition Camera.h:562
int TreeFill(void)
Fills all the TTree branches with current parameters.
Definition Camera.cc:155
void TreeInit(void)
Initializes a camera TTree.
Definition Camera.cc:125
double GetYsize(void)
Returns the camera physical size in the Y direction [mm].
Definition Camera.h:172
double GetXsize(void)
Returns the camera physical size in the X direction [mm].
Definition Camera.h:166
void SetMap(const CAMERA_MAPTYPE aMapType, TH2S *aMap)
Sets an external camera map.
Definition Camera.cc:398
int cam_nbits
number of bits to encode the raw amplitude.
Definition Camera.h:545
double cam_hitz[CAMERA_NHITMAX]
hit position in the Z direction.
Definition Camera.h:556
double GetZsize(void)
Returns the camera physical size in the Z direction [mm].
Definition Camera.h:178
void SetGainUniform(const double aGain)
Sets a uniform gain map.
Definition Camera.cc:449
void SetSize(const double aXsize=1.0, const double aYsize=1.0, const double aZsize=1.0)
Sets the physical size of the camera CCD.
Definition Camera.h:156
int GetMapNz(void)
Returns the number of pixels in the Z direction.
Definition Camera.h:245
void GenAmplitudeNoiseMap(void)
Fills the raw amplitude map with intrinsic pixel noise.
Definition Camera.cc:324
void SetName(const string aName)
Sets the camera name.
Definition Camera.cc:108
void SetPixelValue(const CAMERA_MAPTYPE aMapType, const int aPixIndexY, const int aPixIndexZ, const int aValue, const double aValueErr=0.0)
Assigns a value to a given pixel of a given map.
Definition Camera.h:202
double cam_zsize
physical size in the Z direction [mm].
Definition Camera.h:549
void SetFrozenBrightY(const int aPixIndexY)
Sets an entire line of pixels (Y) at amplitude saturation.
Definition Camera.cc:352
void SetFrozenBrightZ(const int aPixIndexZ)
Sets an entire line of pixels (Z) at amplitude saturation.
Definition Camera.cc:362
void SetRandomPixelBright(const int aN)
Sets a given number of pixels, randomly chosen, at amplitude saturation (dark and read noise maps).
Definition Camera.cc:372
string cam_name
camera name.
Definition Camera.h:544
double cam_ysize
physical size in the Y direction [mm].
Definition Camera.h:548
TRandom3 * randgen
random generator.
Definition Camera.h:540
double GetPixelError(const CAMERA_MAPTYPE aMapType, const int aPixIndexY, const int aPixIndexZ)
Returns the error value of a given pixel.
Definition Camera.h:229
double cam_photon_resz
Gaussian width for photons (Z): only used for the TTree!!! See TreeFill().
Definition Camera.h:563
UInt_t GetTimeResolution(void)
Returns the camera electronic integration time [ms].
Definition Camera.h:326
int TreeWrite(void)
Writes the TTree to the current directory.
Definition Camera.h:515
double cam_xsize
physical size in the X direction [mm].
Definition Camera.h:547
void SetPhotonResolution(const double aPixelResY=1.0, const double aPixelResZ=1.0)
Sets the spatial resolution to inject photons in the camera frame.
Definition Camera.h:350
int cam_ampmax
maximum raw amplitude.
Definition Camera.h:546
void SetPixelDistributions(const CAMERA_MAPTYPE aMapType, double aPar1=-1.0, double aPar2=-1.0, double aPar3=-1.0, double aPar4=-1.0)
Sets a Gaussian distribution for a given pixel map.
Definition Camera.cc:427
void SetRandomPixelDead(const int aN)
Sets a given number of pixels, randomly chosen, at 0 amplitude (dark and read noise maps).
Definition Camera.cc:385
Camera(const int aNbits=14, const int aNy=256, const int aNz=256)
Camera class constuctor.
TF1 * cam_photon_gaus[2]
Gaussian energy distribution for photons.
Definition Camera.h:561
int cam_hitn
number of hits.
Definition Camera.h:552
void AddPhoton(const double aEnergy, const double aY, const double aZ, const int aSourceIndex=0, const int aParticleIndex=0)
Adds one photon to the current amplitude map.
Definition Camera.cc:172
ULong64_t cam_time
camera time [ms]
Definition Camera.h:550
double cam_cosmic_pixenergy
Energy loss per pixel (comic ray).
Definition Camera.h:564
void WriteMap(const string aOutFileName="./mymaps.root")
Write the current camera maps in a ROOT file.
Definition Camera.cc:94
TH2S * cam_map[pixntype]
pixel amplitude map, pixel intrinsic noise maps.
Definition Camera.h:558
void TreeReset(void)
Resets baskets, buffers and entries count in all branches and leaves.
Definition Camera.h:504
void AddCosmicRay(const double aEnergy, const double aY, const double aZ, const double aCosTheta, const double aSinTheta, const double aCosPhi, const double aSinPhi, const int aSourceIndex=0, const int aParticleIndex=0)
Adds one cosmic ray to the current amplitude map.
Definition Camera.cc:230
void SetTimeResolution(const UInt_t aTimeResolution=100)
Sets the camera electronic integration time [ms].
Definition Camera.h:318
int cam_hitastro[CAMERA_NHITMAX]
hit astro-particle index.
Definition Camera.h:554
int GetMapNy(void)
Returns the number of pixels in the Y direction.
Definition Camera.h:237
void TreeDelete(void)
Deletes the TTree.
Definition Camera.h:524
void SetCosmicRayEnergyLoss(const double aEnergyLoss=1.0)
Sets the energy loss per pixel for cosmic rays.
Definition Camera.h:365
int GetPixelValue(const CAMERA_MAPTYPE aMapType, const int aPixIndexY, const int aPixIndexZ)
Returns the value of a given pixel and a given map.
Definition Camera.h:216
string GetName(void)
Returns the camera name.
Definition Camera.h:311
ULong64_t GetTime(void)
Returns the camera time [ms].
Definition Camera.h:341
void SetGain(TH2F *aGainMap)
Sets a gain map.
Definition Camera.cc:461
TH2S * GetMap(const CAMERA_MAPTYPE aMapType)
Returns a camera map.
Definition Camera.h:536
int cam_hitsrc[CAMERA_NHITMAX]
hit source index.
Definition Camera.h:553
TTree * cam_tree
camera tree.
Definition Camera.h:539
void AddPixelAmplitudeValue(const int aPixIndexY, const int aPixIndexZ, const int aValue)
Increments the amplitude value of a given pixel.
Definition Camera.h:188
double cam_hity[CAMERA_NHITMAX]
hit position in the Y direction.
Definition Camera.h:555
Three-dimensional rotations.
Definition Rotation.h:139