ATLAS Offline Software
Loading...
Searching...
No Matches
ALFA_SimHitsTestTool Class Reference

#include <ALFA_SimHitsTestTool.h>

Inheritance diagram for ALFA_SimHitsTestTool:
Collaboration diagram for ALFA_SimHitsTestTool:

Public Member Functions

 ALFA_SimHitsTestTool (const std::string &type, const std::string &name, const IInterface *parent)
StatusCode initialize ()
StatusCode processEvent ()

Protected Attributes

std::string m_path {"/truth/"}
ServiceHandle< ITHistSvc > m_histSvc {"THistSvc", "SimTestHisto"}

Private Attributes

TH2 * m_hit_map_h [8]
TH2 * m_E_layer_sum_h [8]
TH1 * m_E_full_sum_h [8]
TH1 * m_E_gvs {}

structors and AlgTool implementation

std::string m_key
 The MC truth key.
HepMC::ConstGenParticlePtr getPrimary ()

Detailed Description

Definition at line 11 of file ALFA_SimHitsTestTool.h.

Constructor & Destructor Documentation

◆ ALFA_SimHitsTestTool()

ALFA_SimHitsTestTool::ALFA_SimHitsTestTool ( const std::string & type,
const std::string & name,
const IInterface * parent )

Definition at line 26 of file ALFA_SimHitsTestTool.cxx.

27 : SimTestToolBase(type, name, parent)
28{
29 for (int i(0); i<8; ++i) {
30 m_E_full_sum_h[i]=nullptr;
31 m_E_layer_sum_h[i]=nullptr;
32 m_hit_map_h[i]=nullptr;
33 }
34}
SimTestToolBase(const std::string &type, const std::string &name, const IInterface *parent)

Member Function Documentation

◆ getPrimary()

HepMC::ConstGenParticlePtr SimTestToolBase::getPrimary ( )
protectedinherited

Definition at line 20 of file SimTestToolBase.cxx.

21{
22 const McEventCollection* mcCollection;
23 if (evtStore()->retrieve(mcCollection,m_key).isSuccess()) {
25 for (e=mcCollection->begin();e!=mcCollection->end(); ++e) {
26 for (auto p : (**e)) {
28 return p;
29 }
30 }
31 }
32 }
33 return 0;
34}
DataModel_detail::const_iterator< DataVector > const_iterator
Standard const_iterator.
Definition DataVector.h:838
const_iterator end() const noexcept
Return a const_iterator pointing past the end of the collection.
const_iterator begin() const noexcept
Return a const_iterator pointing at the beginning of the collection.
std::string m_key
The MC truth key.
bool is_simulation_particle(const T &p)
Method to establish if a particle (or barcode) was created during the simulation (TODO update to be s...
retrieve(aClass, aKey=None)
Definition PyKernel.py:110

◆ initialize()

StatusCode ALFA_SimHitsTestTool::initialize ( )
virtual

Reimplemented from SimTestToolBase.

Definition at line 36 of file ALFA_SimHitsTestTool.cxx.

37{
38 m_path+="ALFA/";
39
40 _TH1D(m_E_gvs,"edep_full_in_gvs", 8, -0.5, 7.5);
41 _SET_TITLE(m_E_gvs, "Energy deposit in GVS","Station","E (MeV)");
42
43 std::stringstream s;
44 for (unsigned int j=0; j<8; j++) {
45 s.str("");
46 s << j+1;
47
48 _TH1D(m_E_full_sum_h[j],("edep_full_in_det_no."+s.str()).c_str(), 100, 0., 5.);
49 _SET_TITLE(m_E_full_sum_h[j], "Energy deposit in full detector","E (MeV)","N");
50
51 _TH2D(m_E_layer_sum_h[j],("edep_per_layer_detector_no."+s.str()).c_str(), 100, 0., 0.5, 22, 0., 21.);
52 _SET_TITLE(m_E_layer_sum_h[j], "Energy deposit in layers","E (MeV)","layer");
53
54 _TH2D(m_hit_map_h[j],("hitmap_det_no."+s.str()).c_str(), 22, 0., 21., 66, 0., 65.);
55 _SET_TITLE(m_hit_map_h[j], "hit map - layer vs fiber","layer","fiber");
56 }
57
58 return StatusCode::SUCCESS;
59}
#define _TH2D(var, name, nbinx, xmin, xmax, nbiny, ymin, ymax)
#define _TH1D(var, name, nbin, xmin, xmax)
#define _SET_TITLE(var, title, xaxis, yaxis)
std::string m_path

◆ processEvent()

StatusCode ALFA_SimHitsTestTool::processEvent ( )

Definition at line 61 of file ALFA_SimHitsTestTool.cxx.

61 {
62
63 int fiber{}, plate{}, sign{}, station{};
64 //
65 // cleaning
66 constexpr int station_max{8};
67 constexpr int plate_max{10};
68 constexpr int fiber_max{64};
69
70 //avoid large stack use; E_fiber_sum would use 81920 bytes
71 using FiberArr = A<A<A<A<double,2>, fiber_max>, plate_max>,station_max>;
72 auto pE_fiber_sum = std::make_unique<FiberArr>();
73 auto & E_fiber_sum = *pE_fiber_sum;
74 double E_full_sum[station_max]{};
75 double E_layer_sum[station_max][20]{};
76
77
78 const ALFA_HitCollection* coll_handle = nullptr;
79 CHECK( evtStore()->retrieve(coll_handle,"ALFA_HitCollection") );
80
81
82 for (const ALFA_Hit& hit : *coll_handle) {
83
84 station = hit.GetStationNumber();
85 plate = hit.GetPlateNumber();
86 fiber = hit.GetFiberNumber();
87 sign = hit.GetSignFiber();
88 if (plate==100) {
89 // Treat hits in GVS separately.
90 m_E_gvs->Fill(station,(hit.GetEnergyDeposit()));
91 continue;
92 }
93 E_fiber_sum[station-1][plate-1][fiber-1][(1-sign)/2] += (hit.GetEnergyDeposit());
94 }
95
96 for ( int l = 0; l < station_max; l++ ) {
97 for ( int i = 0; i < plate_max; i++ ){
98 for ( int j = 0; j < fiber_max; j++ ) {
99 for ( int k = 0; k < 2; k++ ) {
100 E_full_sum[l] += E_fiber_sum[l][i][j][k];
101 E_layer_sum[l][2*i+k] += E_fiber_sum[l][i][j][k];
102 if (E_fiber_sum[l][i][j][k] > 0.) {
103 m_hit_map_h[l]->Fill(2*i+k+1,j+1);
104 }
105 }
106 }
107 }
108 }
109
110 for ( int l = 0; l < station_max; l++ ) {
111 m_E_full_sum_h[l]->Fill(E_full_sum[l]);
112 for ( int i = 0; i < 2*plate_max; i++ ) {
113 m_E_layer_sum_h[l]->Fill(E_layer_sum[l][i],i+1);
114 }
115 }
116
117 return StatusCode::SUCCESS;
118}
AtlasHitsVector< ALFA_Hit > ALFA_HitCollection
#define CHECK(...)
Evaluate an expression and check for errors.
int sign(int a)
l
Printing final latex table to .tex output file.

Member Data Documentation

◆ m_E_full_sum_h

TH1* ALFA_SimHitsTestTool::m_E_full_sum_h[8]
private

Definition at line 26 of file ALFA_SimHitsTestTool.h.

◆ m_E_gvs

TH1* ALFA_SimHitsTestTool::m_E_gvs {}
private

Definition at line 27 of file ALFA_SimHitsTestTool.h.

27{};

◆ m_E_layer_sum_h

TH2* ALFA_SimHitsTestTool::m_E_layer_sum_h[8]
private

Definition at line 25 of file ALFA_SimHitsTestTool.h.

◆ m_histSvc

ServiceHandle<ITHistSvc> SimTestHisto::m_histSvc {"THistSvc", "SimTestHisto"}
protectedinherited

Definition at line 35 of file SimTestHisto.h.

35{"THistSvc", "SimTestHisto"};

◆ m_hit_map_h

TH2* ALFA_SimHitsTestTool::m_hit_map_h[8]
private

Definition at line 24 of file ALFA_SimHitsTestTool.h.

◆ m_key

std::string SimTestToolBase::m_key
protectedinherited

The MC truth key.

Definition at line 34 of file SimTestToolBase.h.

◆ m_path

std::string SimTestHisto::m_path {"/truth/"}
protectedinherited

Definition at line 34 of file SimTestHisto.h.

34{"/truth/"};

The documentation for this class was generated from the following files: