FairRoot/PandaRoot
PndDiscPhotodetector.cxx
Go to the documentation of this file.
1 //-------------------------------------------------------------------------
2 // Author: Oliver Merle (Oliver.Merle@exp2.physik.uni-giessen.de)
3 // Changes: Mustafa Schmidt (Mustafa.A.Schmidt@physik.uni-giessen.de)
4 // Date: 30.11.2015
5 // Description: Definition of photo sensors
6 //-------------------------------------------------------------------------
7 
8 
9 #include "PndDiscPhotodetector.h"
10 #include "PndDiscSensorGrid.h"
11 
12 #include "FairLogger.h"
13 
14 
15 
18 }
19 
20 
22  Init(design_id);
23 }
24 
25 
27  using namespace SensorGrid;
28 
29  if(design_id == DESIGN_SIPM) {
30  // 210 stripes SiPM sensor (acceptance gap due to bonding is covered with stripes !).
31  MultipleGrids * new_sensor_grid = new MultipleGrids();
32  if(new_sensor_grid == 0) LOG(FATAL) << "Allocation of sensor failed.";
33 
34  BasicGrid * grid = NULL;
35 
36  grid = new BasicGrid( -1.5900/2.0, 1.5900/2.0, 1.0, 1 ,
37  -0.672, 0.0064, 0.0064, 105 );
38  if(grid == 0) LOG(FATAL) << "Allocation of sensor failed.";
39 
40  new_sensor_grid->AddGrid(grid);
41 
42 
43  grid = new BasicGrid( 0.0, 1.5900/2.0, 1.0, 1 ,
44  -0.672, 0.0064, 0.0064, 105 );
45  if(grid == 0) LOG(FATAL) << "Allocation of sensor failed.";
46 
47  grid->SetUserColumnOffset(1);
48  new_sensor_grid->AddGrid(grid);
49 
50 
51  grid = new BasicGrid( -1.5900/2.0, 1.5900/2.0, 1.0, 1 ,
52  0.0, 0.0064, 0.0064, 105 );
53  if(grid == 0) LOG(FATAL) << "Allocation of sensor failed.";
54 
55  grid->SetUserRowOffset(105);
56  new_sensor_grid->AddGrid(grid);
57 
58 
59  grid = new BasicGrid( 0.0, 1.5900/2.0, 1.0, 1 ,
60  0.0, 0.0064, 0.0064, 105 );
61  if(grid == 0) LOG(FATAL) << "Allocation of sensor failed.";
62 
63  grid->SetUserColumnOffset(1);
64  grid->SetUserRowOffset(105);
65  new_sensor_grid->AddGrid(grid);
66 
67  double active_cell_fraction = 0.9;
68  double SPAD_DCR = 25.0; // Hz
69  SensorGrid::SensorGridPhotodetector::Init(new_sensor_grid, false, active_cell_fraction, 256. * SPAD_DCR, 0.060);
70  }
71  else if(design_id == DESIGN_LRD) {
72  // Implement Low Rate Design ...
73  BasicGrid * grid = NULL;
74 
75  // digitization grid 3 x 100 for 50 x 50 mm^2 active area (Planacon)
76  grid = new BasicGrid( -2.55, 1.6, 1.7, 3 , // X: 1 mm gap between the 16 mm wide stripes
77  -2.5, 0.05, 0.05, 100 ); // Y: 100 stripes without gap
78  if(grid == 0) LOG(FATAL) << "Allocation of sensor failed.";
79 
80  SensorGrid::SensorGridPhotodetector::Init(grid, false, 0.7, 1.0, 0.050);
81  }
82 }
83 
84 
85 
A generic regular pixel grid with dead space between cells.
A grid to group other grids or to create nested grids.
void Init(SensorGridBase *sensor_grid_, bool per_pixel_traits_, double const &efficiency_init, double const &noise_rate_init, double const &time_res_init)
Initialization - can also be used in derived class ctors (avoid code duplication).
void AddGrid(SensorGridBase *grid)