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

#include <TGCHitsTestTool.h>

Inheritance diagram for TGCHitsTestTool:
Collaboration diagram for TGCHitsTestTool:

Public Member Functions

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

Protected Member Functions

Identifier getIdentifier (HitID)
StatusCode checkIdentifier (Identifier)
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_DoTGCTest
const TgcIdHelperm_pTgcIdHelper

structors and AlgTool implementation

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

Detailed Description

Definition at line 15 of file TGCHitsTestTool.h.

Constructor & Destructor Documentation

◆ TGCHitsTestTool()

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

Definition at line 20 of file TGCHitsTestTool.h.

21 : MuonHitTestToolBase(type, name, parent),
23 {
24 declareProperty("DoTGCTest", m_DoTGCTest=true);
25 }
MuonHitTestToolBase(const std::string &type, const std::string &name, const IInterface *parent)
const TgcIdHelper * m_pTgcIdHelper

Member Function Documentation

◆ checkIdentifier()

StatusCode TGCHitsTestTool::checkIdentifier ( Identifier offid)
protected

Definition at line 45 of file TGCHitsTestTool.cxx.

45 {
46 const MuonGM::TgcReadoutElement* descriptor = m_pMuonMgr->getTgcReadoutElement(offid);
47 if (!descriptor) {
48 ATH_MSG_FATAL("TGC readout element not found for Id = " << m_pTgcIdHelper->show_to_string(offid));
49 return StatusCode::FAILURE;
50 }
51
52 // -------- Testing Sim to Offline ID conversion ---------
53 Amg::Vector3D tgc_gPos = descriptor->channelPos(offid);
54 double tgc_strip_phi = tgc_gPos.phi();
55 if (tgc_strip_phi < 0.) tgc_strip_phi += 2.*M_PI;
56 /*
57 double tgc_strip_perp = tgc_gPos.perp();
58 double tgc_strip_z = tgc_gPos.z();
59 double tgc_strip_cot = 1./tan(tgc_gPos.theta());
60 */
61
62 return StatusCode::SUCCESS;
63}
#define M_PI
#define ATH_MSG_FATAL(x)
Amg::Vector3D channelPos(const Identifier &id) const
Returns the position of the active channel (wireGang or strip)
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 TGCHitsTestTool::getIdentifier ( HitID tgchit)
protected

Create the offline identifiers, fill them with hit info.Ready to be accessed and retrieve info. Currently not used in this code except for some checks.

Definition at line 23 of file TGCHitsTestTool.cxx.

23 {
24 const TgcHitIdHelper* tgchelper = TgcHitIdHelper::GetHelper();
25 std::string tgc_stname = tgchelper->GetStationName(tgchit);
26 int tgc_steta = tgchelper->GetStationEta(tgchit);
27 int tgc_stphi = tgchelper->GetStationPhi(tgchit);
28 int tgc_gg = tgchelper->GetGasGap(tgchit);
29 int tgc_strip = 1;//tgchelper->GetIsStrip(tgchit);
30 int tgc_channel = 1;//tgchelper->GetChannel(tgchit);
31
35
36 Identifier offid = m_pTgcIdHelper->channelID(tgc_stname, tgc_steta, tgc_stphi, tgc_gg, tgc_strip, tgc_channel);
37 if (offid == 0) {
38 ATH_MSG_FATAL("TGC: Cannot build a valid Identifier; skip ");
39 }
40 ATH_MSG_VERBOSE(" TGC: Offline Id "<<m_pTgcIdHelper->show_to_string(offid));
41
42 return offid;
43}
int GetStationPhi(const int &hid) const
std::string GetStationName(const int &hid) const
int GetStationEta(const int &hid) const
int GetGasGap(const int &hid) const
static const TgcHitIdHelper * GetHelper()

◆ 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 TGCHitsTestTool::initialize ( )
virtual

Reimplemented from MuonHitTestToolBase.

Definition at line 116 of file TGCHitsTestTool.cxx.

116 {
118 m_pTgcIdHelper = m_pMuonMgr->tgcIdHelper();
119 return StatusCode::SUCCESS;
120}
virtual StatusCode initialize() override

◆ processEvent()

StatusCode TGCHitsTestTool::processEvent ( )

Get the generic MuonSpectrometer (MDT,RPC,CSC,TGC) histograms Short description: MuonSpectrometer cross section MuonSpectrometer longitudinal Number of events processed from truth Event specific run number Eta, Theta, Phi, z residual (...), phi residual (...) of hits in MuonSpectrometer

Check the Hits identifiers, access the functions that give: Station name, station eta, station phi, doublet Z, doublet phi, doublet R, GasGap, Measures Phi. The values of these variables are written out to the AANtuple (variable content and range explained in the code section where AANTuple variables are registered)

For every hit within the event, get the global position Amg::Vector3D u and then retrieve all releveant info either from the Amg::Vector3D or from the MC vector (direction)

Definition at line 66 of file TGCHitsTestTool.cxx.

66 {
68
69 //MuonSpectrometer
78
79 // TGC
80 // Get the TGC histograms
81 // Short description:
82 // MuonSpectrometer TGC cross section
83 // MuonSpectrometer TGC longitudinal
84 // Eta, Theta, Phi, z residual (...), phi residual (...) of hits in TGCs
85
86 // Enter the main algorithm loop
87 if (m_DoTGCTest) {
88
89 const TGCSimHitCollection* p_collection = nullptr;
90 if (evtStore()->retrieve(p_collection,"TGC_Hits") == StatusCode::SUCCESS) {
91 for (const TGCSimHit& hit : *p_collection) {
97 HitID tgchit= hit.TGCid();
98 Identifier offid= getIdentifier(tgchit);
99 CHECK(checkIdentifier(offid));
100
101 //Check Hits
105 GeoTGCHit ghit(hit);
106 if (!ghit) continue;
107 Amg::Vector3D u = ghit.getGlobalPosition();
109 }
110 }
111 }
112
113 return StatusCode::SUCCESS;
114}
int HitID
AtlasHitsVector< TGCSimHit > TGCSimHitCollection
StatusCode executeFillHistos(const Amg::Vector3D &)
Identifier getIdentifier(HitID)
StatusCode checkIdentifier(Identifier)

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_DoTGCTest

bool TGCHitsTestTool::m_DoTGCTest
private

Definition at line 38 of file TGCHitsTestTool.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_pTgcIdHelper

const TgcIdHelper* TGCHitsTestTool::m_pTgcIdHelper
private

Definition at line 40 of file TGCHitsTestTool.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: