ATLAS Offline Software
ALFA_SimHitsTestTool.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 #include "ALFA_SimHitsTestTool.h"
6 
8 
9 
10 #include <TH2D.h>
11 #include <TH1.h>
12 #include <TProfile.h>
13 
14 #include <iostream>
15 #include <fstream>
16 #include <sstream>
17 #include <string>
18 
19 
20 ALFA_SimHitsTestTool::ALFA_SimHitsTestTool(const std::string& type, const std::string& name, const IInterface* parent)
22 {
23  for (int i(0); i<8; ++i) {
24  m_E_full_sum_h[i]=nullptr;
25  m_E_layer_sum_h[i]=nullptr;
26  m_hit_map_h[i]=nullptr;
27  }
28 }
29 
31 {
32  m_path+="ALFA/";
33 
34  _TH1D(m_E_gvs,"edep_full_in_gvs", 8, -0.5, 7.5);
35  _SET_TITLE(m_E_gvs, "Energy deposit in GVS","Station","E (MeV)");
36 
37  std::stringstream s;
38  for (unsigned int j=0; j<8; j++) {
39  s.str("");
40  s << j+1;
41 
42  _TH1D(m_E_full_sum_h[j],("edep_full_in_det_no."+s.str()).c_str(), 100, 0., 5.);
43  _SET_TITLE(m_E_full_sum_h[j], "Energy deposit in full detector","E (MeV)","N");
44 
45  _TH2D(m_E_layer_sum_h[j],("edep_per_layer_detector_no."+s.str()).c_str(), 100, 0., 0.5, 22, 0., 21.);
46  _SET_TITLE(m_E_layer_sum_h[j], "Energy deposit in layers","E (MeV)","layer");
47 
48  _TH2D(m_hit_map_h[j],("hitmap_det_no."+s.str()).c_str(), 22, 0., 21., 66, 0., 65.);
49  _SET_TITLE(m_hit_map_h[j], "hit map - layer vs fiber","layer","fiber");
50  }
51 
52  return StatusCode::SUCCESS;
53 }
54 
56 
57  int fiber, plate, sign, station;
58 
59  double E_fiber_sum[8][10][64][2];
60  double E_full_sum[8];
61  double E_layer_sum[8][20];
62 
63  // cleaning
64  const int station_max{8};
65  const int plate_max{10};
66  const int fiber_max{64};
67 
68  for ( int l = 0; l < station_max; l++ ) {
69  E_full_sum[l] = 0.;
70  for ( int i = 0; i < plate_max; i++ ) {
71  E_layer_sum[l][i] = 0.;
72  E_layer_sum[l][i+plate_max] = 0.;
73  for ( int j = 0; j < fiber_max; j++ ) {
74  for ( int k = 0; k < 2; k++ ) {
75  E_fiber_sum[l][i][j][k] = 0.;
76  }
77  }
78  }
79  }
80 
81 
82  const ALFA_HitCollection* coll_handle = nullptr;
83  CHECK( evtStore()->retrieve(coll_handle,"ALFA_HitCollection") );
84 
85 
86  for (const ALFA_Hit& hit : *coll_handle) {
87 
88  station = hit.GetStationNumber();
89  plate = hit.GetPlateNumber();
90  fiber = hit.GetFiberNumber();
91  sign = hit.GetSignFiber();
92  if (plate==100) {
93  // Treat hits in GVS separately.
94  m_E_gvs->Fill(station,(hit.GetEnergyDeposit()));
95  continue;
96  }
97  E_fiber_sum[station-1][plate-1][fiber-1][(1-sign)/2] += (hit.GetEnergyDeposit());
98  }
99 
100  for ( int l = 0; l < station_max; l++ ) {
101  for ( int i = 0; i < plate_max; i++ ){
102  for ( int j = 0; j < fiber_max; j++ ) {
103  for ( int k = 0; k < 2; k++ ) {
104  E_full_sum[l] += E_fiber_sum[l][i][j][k];
105  E_layer_sum[l][2*i+k] += E_fiber_sum[l][i][j][k];
106  if (E_fiber_sum[l][i][j][k] > 0.) {
107  m_hit_map_h[l]->Fill(2*i+k+1,j+1);
108  }
109  }
110  }
111  }
112  }
113 
114  for ( int l = 0; l < station_max; l++ ) {
115  m_E_full_sum_h[l]->Fill(E_full_sum[l]);
116  for ( int i = 0; i < 2*plate_max; i++ ) {
117  m_E_layer_sum_h[l]->Fill(E_layer_sum[l][i],i+1);
118  }
119  }
120 
121  return StatusCode::SUCCESS;
122 }
python.PyKernel.retrieve
def retrieve(aClass, aKey=None)
Definition: PyKernel.py:110
TH2::Fill
int Fill(double, double)
Definition: rootspy.cxx:382
ALFA_SimHitsTestTool.h
python.SystemOfUnits.s
int s
Definition: SystemOfUnits.py:131
AtlasHitsVector
Definition: AtlasHitsVector.h:33
ALFA_SimHitsTestTool::ALFA_SimHitsTestTool
ALFA_SimHitsTestTool(const std::string &type, const std::string &name, const IInterface *parent)
Definition: ALFA_SimHitsTestTool.cxx:20
ALFA_SimHitsTestTool::m_E_layer_sum_h
TH2 * m_E_layer_sum_h[8]
Definition: ALFA_SimHitsTestTool.h:25
UploadAMITag.l
list l
Definition: UploadAMITag.larcaf.py:158
_SET_TITLE
#define _SET_TITLE(var, title, xaxis, yaxis)
Definition: SimTestHisto.h:93
_TH1D
#define _TH1D(var, name, nbin, xmin, xmax)
Definition: SimTestHisto.h:47
ALFA_SimHitsTestTool::m_E_gvs
TH1 * m_E_gvs
Definition: ALFA_SimHitsTestTool.h:27
SimTestToolBase
Definition: SimTestToolBase.h:20
lumiFormat.i
int i
Definition: lumiFormat.py:92
ALFA_SimHitsTestTool::processEvent
StatusCode processEvent()
Definition: ALFA_SimHitsTestTool.cxx:55
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
test_pyathena.parent
parent
Definition: test_pyathena.py:15
sign
int sign(int a)
Definition: TRT_StrawNeighbourSvc.h:127
_TH2D
#define _TH2D(var, name, nbinx, xmin, xmax, nbiny, ymin, ymax)
Definition: SimTestHisto.h:81
CHECK
#define CHECK(...)
Evaluate an expression and check for errors.
Definition: Control/AthenaKernel/AthenaKernel/errorcheck.h:422
TH1::Fill
int Fill(double)
Definition: rootspy.cxx:285
ALFA_SimHitsTestTool::m_hit_map_h
TH2 * m_hit_map_h[8]
Definition: ALFA_SimHitsTestTool.h:24
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:195
ALFA_SimHitsTestTool::m_E_full_sum_h
TH1 * m_E_full_sum_h[8]
Definition: ALFA_SimHitsTestTool.h:26
ALFA_HitCollection.h
ALFA_Hit
Definition: ALFA_Hit.h:11
python.CaloScaleNoiseConfig.type
type
Definition: CaloScaleNoiseConfig.py:78
SimTestHisto::m_path
std::string m_path
Definition: SimTestHisto.h:34
fitman.k
k
Definition: fitman.py:528
ALFA_SimHitsTestTool::initialize
StatusCode initialize()
Definition: ALFA_SimHitsTestTool.cxx:30