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

#include <RPCHitsTestTool.h>

Inheritance diagram for RPCHitsTestTool:
Collaboration diagram for RPCHitsTestTool:

Public Member Functions

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

Protected Member Functions

Identifier getIdentifier (HitID rpchit)
StatusCode checkIdentifier (Identifier offid)
StatusCode executeCheckEventInfo ()
StatusCode executeFillHistos (const Amg::Vector3D &)
StatusCode executeFillHistosSectors_Wedge1 (const Amg::Vector3D &, std::string)
StatusCode executeFillHistosSectors_Wedge2 (const Amg::Vector3D &, std::string)
StatusCode executeFillHistos_sTGc (const Amg::Vector3D &, std::string)

Protected Attributes

std::string m_detname
const MuonGM::MuonDetectorManagerm_pMuonMgr
SG::ReadHandleKey< xAOD::EventInfom_eventInfoKey {this, "EventInfo", "EventInfo", "EventInfo name"}
 SG key for Event Info.
double m_BarrelEtaCut
 MDT barrel eta cut, applicable to the MDT 2D cross section plot.
TH1 * m_muonevnt
TH1 * m_muonrun
TH1 * m_muoneta
TH1 * m_muontheta
TH1 * m_muonphi
TH1 * m_muonzResid
TH1 * m_muonphiResid
TH2 * m_muondetBarrel
TH2 * m_muonlongView
TH1 * m_eta
TH1 * m_theta
TH1 * m_phi
TH1 * m_zResid
TH1 * m_phiResid
TH2 * m_detBarrel
TH2 * m_longView
Amg::Vector3D m_direction
std::string m_path {"/truth/"}
ServiceHandle< ITHistSvc > m_histSvc {"THistSvc", "SimTestHisto"}

Private Attributes

bool m_DoRPCTest
const RpcIdHelperm_pRpcIdHelper

structors and AlgTool implementation

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

Detailed Description

Definition at line 14 of file RPCHitsTestTool.h.

Constructor & Destructor Documentation

◆ RPCHitsTestTool()

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

Definition at line 19 of file RPCHitsTestTool.h.

20 : MuonHitTestToolBase(type, name, parent),
22 {
23 declareProperty("DoRPCTest", m_DoRPCTest=true);
24 }
MuonHitTestToolBase(const std::string &type, const std::string &name, const IInterface *parent)
const RpcIdHelper * m_pRpcIdHelper

Member Function Documentation

◆ checkIdentifier()

StatusCode RPCHitsTestTool::checkIdentifier ( Identifier offid)
protected

Definition at line 48 of file RPCHitsTestTool.cxx.

48 {
49
50 const MuonGM::RpcReadoutElement* descriptor = m_pMuonMgr->getRpcReadoutElement(offid);
51 if (!descriptor) {
52 ATH_MSG_FATAL("RPC readout element not found for Id = " << m_pRpcIdHelper->show_to_string(offid));
53 return StatusCode::FAILURE;
54 }
55
56 // Testing Sim to Offline ID conversion
57 Amg::Vector3D rpc_gPos = descriptor->stripPos(offid);
58 double rpc_strip_phi = rpc_gPos.phi();
59 if (rpc_strip_phi < 0.) rpc_strip_phi += 2.*M_PI;
60
61 return StatusCode::SUCCESS;
62}
#define M_PI
#define ATH_MSG_FATAL(x)
const MuonGM::MuonDetectorManager * m_pMuonMgr
Eigen::Matrix< double, 3, 1 > Vector3D

◆ executeCheckEventInfo()

StatusCode MuonHitTestToolBase::executeCheckEventInfo ( )
protectedinherited

Definition at line 35 of file MuonHitTestToolBase.cxx.

36{
37 SG::ReadHandle<xAOD::EventInfo> eventInfo (m_eventInfoKey,Gaudi::Hive::currentContext());
38 ATH_CHECK(eventInfo.isValid());
39 uint64_t evt = eventInfo->eventNumber();
40 int numrun = eventInfo->runNumber();
41 ATH_MSG_VERBOSE("Processing EventInfo event #"<< evt<< " run: " << numrun);
42 m_muonevnt->Fill(evt);
43 m_muonrun->Fill(numrun);
44 const McEventCollection* mcEvent;
45 CHECK(evtStore()->retrieve(mcEvent,m_key));
46
47 // *AS* Why only if mcEvent ==1? when would there be more than one event?
48 if (mcEvent->size()!=1) {
49 m_direction=Amg::Vector3D(0.,0.,0.);
50 return StatusCode::SUCCESS;
51 }
52
53 // *AS* Why this (double) loop, if only the last entry is preserved?
54 // changed it to take the gen particle
56 for (e=mcEvent->begin();e!=mcEvent->end(); ++e) {
57 for (auto p: (**e)) {
59 Amg::Vector3D temp_momentum(p->momentum().px(),
60 p->momentum().py(),
61 p->momentum().pz());
62 m_direction = temp_momentum.unit();
63 break;
64 }
65 }
66 }
67 return StatusCode::SUCCESS;
68}
#define ATH_CHECK
Evaluate an expression and check for errors.
#define ATH_MSG_VERBOSE(x)
#define CHECK(...)
Evaluate an expression and check for errors.
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.
size_type size() const noexcept
Returns the number of elements in the collection.
SG::ReadHandleKey< xAOD::EventInfo > m_eventInfoKey
SG key for Event Info.
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

◆ executeFillHistos()

StatusCode MuonHitTestToolBase::executeFillHistos ( const Amg::Vector3D & u)
protectedinherited

for MDTs that have barrel + endcap section, take only the barrel when plotting the xy-2d plot of the detector

Definition at line 70 of file MuonHitTestToolBase.cxx.

70 {
72
73 if (m_direction.perp() > 0 && fabs(m_direction.eta())<m_BarrelEtaCut){
74 //mdtdet->Fill(u.x(),u.y());
75 m_muondetBarrel->Fill(u.x(),u.y());
76 m_detBarrel->Fill(u.x(),u.y());
77 }
78
79 double rad=sqrt(u.x()*u.x()+u.y()*u.y());
80 m_muonlongView->Fill(u.z(),rad);
81 m_longView->Fill(u.z(),rad);
82
83 // //m_direction vector is filled with truth above, so here it is wrong (no eta, theta, phi of the hit!!!)
84 // *AS* why not use "u"?
85 // theta->Fill(m_direction.theta());
86 // theta->Fill(m_direction.theta());
87 // eta->Fill(m_direction.eta());
88 // eta->Fill(m_direction.eta());
89 // phi->Fill(m_direction.phi());
90 // phi->Fill(m_direction.phi());
91
92 if (m_direction.perp() > 0) {
93 m_muonzResid->Fill(u.cross(m_direction).dot(m_direction.cross(Amg::Vector3D(0,0,1)).unit()));
94 m_muonphiResid->Fill(u.cross(m_direction).z());
95
96 m_zResid->Fill(u.cross(m_direction).dot(m_direction.cross(Amg::Vector3D(0,0,1)).unit()));
97 m_phiResid->Fill(u.cross(m_direction).z());
98 }
99 else {
100 m_muonzResid->Fill(0);
101 m_muonphiResid->Fill(0);
102 m_zResid->Fill(0);
103 m_phiResid->Fill(0);
104 }
105
106 return StatusCode::SUCCESS;
107}
double m_BarrelEtaCut
MDT barrel eta cut, applicable to the MDT 2D cross section plot.
@ u
Enums for curvilinear frames.
Definition ParamDefs.h:77

◆ executeFillHistos_sTGc()

StatusCode MuonHitTestToolBase::executeFillHistos_sTGc ( const Amg::Vector3D & ,
std::string  )
protectedinherited

◆ executeFillHistosSectors_Wedge1()

StatusCode MuonHitTestToolBase::executeFillHistosSectors_Wedge1 ( const Amg::Vector3D & ,
std::string  )
protectedinherited

◆ executeFillHistosSectors_Wedge2()

StatusCode MuonHitTestToolBase::executeFillHistosSectors_Wedge2 ( const Amg::Vector3D & ,
std::string  )
protectedinherited

◆ getIdentifier()

Identifier RPCHitsTestTool::getIdentifier ( HitID rpchit)
protected

Definition at line 25 of file RPCHitsTestTool.cxx.

25 {
26 const RpcHitIdHelper* rpchelper = RpcHitIdHelper::GetHelper(m_pRpcIdHelper->gasGapMax());
27 std::string rpc_stname = rpchelper->GetStationName(rpchit);
28 int rpc_steta = rpchelper->GetZSector(rpchit);
29 int rpc_stphi = rpchelper->GetPhiSector(rpchit);
30 int rpc_dbr = rpchelper->GetDoubletR(rpchit);
31 int rpc_dbz = rpchelper->GetDoubletZ(rpchit);
32 int rpc_dbp = rpchelper->GetDoubletPhi(rpchit);
33 int rpc_gg = rpchelper->GetGasGapLayer(rpchit);
34 int rpc_mfi = rpchelper->GetMeasuresPhi(rpchit);
35 int rpc_strip = 1;//rpchelper->GetStrip(rpchit);
36
37 // Create the offline identifiers, fill them with hit info. Ready to be
38 // accessed and retrieve info. Currently not used in this code except for
39 // some checks.
40 Identifier offid = m_pRpcIdHelper->channelID(rpc_stname, rpc_steta, rpc_stphi, rpc_dbr, rpc_dbz, rpc_dbp, rpc_gg, rpc_mfi, rpc_strip);
41 if (offid == 0) {
42 ATH_MSG_FATAL("RPC : Cannot build a valid Identifier; skip ");
43 }
44
45 return offid;
46}
int GetDoubletPhi(const int &hid) const
static const RpcHitIdHelper * GetHelper(unsigned int nGasGaps=2)
int GetPhiSector(const int &hid) const
int GetDoubletR(const int &hid) const
int GetGasGapLayer(const int &hid) const
int GetMeasuresPhi(const int &hid) const
std::string GetStationName(const int &hid) const
int GetDoubletZ(const int &hid) const
int GetZSector(const int &hid) const

◆ 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}

◆ initialize()

StatusCode RPCHitsTestTool::initialize ( )
virtual

Reimplemented from MuonHitTestToolBase.

Definition at line 104 of file RPCHitsTestTool.cxx.

104 {
106 m_pRpcIdHelper = m_pMuonMgr->rpcIdHelper();
107 return StatusCode::SUCCESS;
108}
virtual StatusCode initialize() override

◆ processEvent()

StatusCode RPCHitsTestTool::processEvent ( )

Definition at line 65 of file RPCHitsTestTool.cxx.

65 {
67
68 // MuonSpectrometer
69 // Get the generic MuonSpectrometer (MDT,RPC,CSC,TGC) histograms
70 // Short description:
71 // MuonSpectrometer cross section
72 // MuonSpectrometer longitudinal
73 // Number of events processed from truth
74 // Event specific run number
75 // Eta, Theta, Phi, z residual (...), phi residual (...) of hits in MuonSpectrometer
76
77 if (m_DoRPCTest) {
78
79 const RPCSimHitCollection* p_collection = nullptr;
80 if (evtStore()->retrieve(p_collection,"RPC_Hits") == StatusCode::SUCCESS) {
81 for (const RPCSimHit& hit : *p_collection) {
82 // Check the Hits identifiers, access the functions that give:
83 // Station name, station eta, station phi, doublet Z, doublet phi, doublet R, GasGap, Measures Phi.
84 HitID rpchit= (hit).RPCid();
85 Identifier offid= getIdentifier(rpchit);
86 CHECK(checkIdentifier(offid));
87
88 // Check Hits
89 // For every hit within the event, get the global position Amg::Vector3D u and then retrieve all releveant info
90 // either from the Amg::Vector3D or from the MC vector (direction)
91 GeoRPCHit ghit(hit);
92
93 if (!ghit) continue;
94 Amg::Vector3D u = ghit.getGlobalPosition();
96 }
97 }
98 }
99
100 return StatusCode::SUCCESS;
101}
int HitID
AtlasHitsVector< RPCSimHit > RPCSimHitCollection
StatusCode executeFillHistos(const Amg::Vector3D &)
Identifier getIdentifier(HitID rpchit)
StatusCode checkIdentifier(Identifier offid)

Member Data Documentation

◆ m_BarrelEtaCut

double MuonHitTestToolBase::m_BarrelEtaCut
protectedinherited

MDT barrel eta cut, applicable to the MDT 2D cross section plot.

Definition at line 44 of file MuonHitTestToolBase.h.

◆ m_detBarrel

TH2* MuonHitTestToolBase::m_detBarrel
protectedinherited

Definition at line 54 of file MuonHitTestToolBase.h.

◆ m_detname

std::string MuonHitTestToolBase::m_detname
protectedinherited

Definition at line 37 of file MuonHitTestToolBase.h.

◆ m_direction

Amg::Vector3D MuonHitTestToolBase::m_direction
protectedinherited

Definition at line 58 of file MuonHitTestToolBase.h.

◆ m_DoRPCTest

bool RPCHitsTestTool::m_DoRPCTest
private

Definition at line 36 of file RPCHitsTestTool.h.

◆ m_eta

TH1* MuonHitTestToolBase::m_eta
protectedinherited

Definition at line 52 of file MuonHitTestToolBase.h.

◆ m_eventInfoKey

SG::ReadHandleKey<xAOD::EventInfo> MuonHitTestToolBase::m_eventInfoKey {this, "EventInfo", "EventInfo", "EventInfo name"}
protectedinherited

SG key for Event Info.

Definition at line 41 of file MuonHitTestToolBase.h.

41{this, "EventInfo", "EventInfo", "EventInfo name"};

◆ m_histSvc

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

Definition at line 35 of file SimTestHisto.h.

35{"THistSvc", "SimTestHisto"};

◆ m_key

std::string SimTestToolBase::m_key
protectedinherited

The MC truth key.

Definition at line 34 of file SimTestToolBase.h.

◆ m_longView

TH2 * MuonHitTestToolBase::m_longView
protectedinherited

Definition at line 54 of file MuonHitTestToolBase.h.

◆ m_muondetBarrel

TH2* MuonHitTestToolBase::m_muondetBarrel
protectedinherited

Definition at line 50 of file MuonHitTestToolBase.h.

◆ m_muoneta

TH1* MuonHitTestToolBase::m_muoneta
protectedinherited

Definition at line 48 of file MuonHitTestToolBase.h.

◆ m_muonevnt

TH1* MuonHitTestToolBase::m_muonevnt
protectedinherited

Definition at line 47 of file MuonHitTestToolBase.h.

◆ m_muonlongView

TH2 * MuonHitTestToolBase::m_muonlongView
protectedinherited

Definition at line 50 of file MuonHitTestToolBase.h.

◆ m_muonphi

TH1 * MuonHitTestToolBase::m_muonphi
protectedinherited

Definition at line 48 of file MuonHitTestToolBase.h.

◆ m_muonphiResid

TH1 * MuonHitTestToolBase::m_muonphiResid
protectedinherited

Definition at line 49 of file MuonHitTestToolBase.h.

◆ m_muonrun

TH1 * MuonHitTestToolBase::m_muonrun
protectedinherited

Definition at line 47 of file MuonHitTestToolBase.h.

◆ m_muontheta

TH1 * MuonHitTestToolBase::m_muontheta
protectedinherited

Definition at line 48 of file MuonHitTestToolBase.h.

◆ m_muonzResid

TH1* MuonHitTestToolBase::m_muonzResid
protectedinherited

Definition at line 49 of file MuonHitTestToolBase.h.

◆ m_path

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

Definition at line 34 of file SimTestHisto.h.

34{"/truth/"};

◆ m_phi

TH1 * MuonHitTestToolBase::m_phi
protectedinherited

Definition at line 52 of file MuonHitTestToolBase.h.

◆ m_phiResid

TH1 * MuonHitTestToolBase::m_phiResid
protectedinherited

Definition at line 53 of file MuonHitTestToolBase.h.

◆ m_pMuonMgr

const MuonGM::MuonDetectorManager* MuonHitTestToolBase::m_pMuonMgr
protectedinherited

Definition at line 38 of file MuonHitTestToolBase.h.

◆ m_pRpcIdHelper

const RpcIdHelper* RPCHitsTestTool::m_pRpcIdHelper
private

Definition at line 38 of file RPCHitsTestTool.h.

◆ m_theta

TH1 * MuonHitTestToolBase::m_theta
protectedinherited

Definition at line 52 of file MuonHitTestToolBase.h.

◆ m_zResid

TH1* MuonHitTestToolBase::m_zResid
protectedinherited

Definition at line 53 of file MuonHitTestToolBase.h.


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