ATLAS Offline Software
Loading...
Searching...
No Matches
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
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
20ALFA_SimHitsTestTool::ALFA_SimHitsTestTool(const std::string& type, const std::string& name, const IInterface* parent)
21 : SimTestToolBase(type, name, 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}
AtlasHitsVector< ALFA_Hit > ALFA_HitCollection
#define CHECK(...)
Evaluate an expression and check for errors.
#define _TH2D(var, name, nbinx, xmin, xmax, nbiny, ymin, ymax)
#define _TH1D(var, name, nbin, xmin, xmax)
#define _SET_TITLE(var, title, xaxis, yaxis)
int sign(int a)
ALFA_SimHitsTestTool(const std::string &type, const std::string &name, const IInterface *parent)
std::string m_path
SimTestToolBase(const std::string &type, const std::string &name, const IInterface *parent)