43 return StatusCode::SUCCESS;
49 ATH_MSG_DEBUG(
"NSWDataMonAlg::MM RawData Monitoring Histograms being filled" );
53 return StatusCode::FAILURE;
56 std::string NSWMonGroup =
"NSWMonGroup";
63 if(mu -> pt() <
m_cutPt)
continue;
66 if(!(mu -> author() == xAOD::Muon::Author::MuidCo || (mu -> author() == xAOD::Muon::Author::MuidSA && std::abs(mu->eta()) > 2.5) ) )
continue;
68 if(saTP ==
nullptr)
continue;
70 if(!saTrack)
continue;
72 float eta_mu=saTP->
eta();
76 float theta_mu=saTP->
theta();
77 float phi_mu=saTP->
phi();
79 std::string side =
"sideA";
88 std::vector<int> layers_mm; std::vector<int> layers_stg;
93 if(!(trkState))
continue;
105 int channelType =
m_idHelperSvc->stgcIdHelper().channelType(rot_id);
112 if (!cluster)
continue;
116 if(fabs(pos.z())<min_z_nsw){
118 min_z_nsw=fabs(z_nsw);
128 auto layer_mm=gap_mm+(multi_mm-1)*4;
130 if (std::find(layers_mm.begin(), layers_mm.end(), layer_mm) == layers_mm.end()) layers_mm.push_back(layer_mm);
131 if(layer_mm>layer_max){
138 multi_stg =
m_idHelperSvc -> stgcIdHelper().multilayer(rot_id);
140 auto layer_stg=gap_stg+(multi_stg-1)*4;
142 if (std::find(layers_stg.begin(), layers_stg.end(), layer_stg) == layers_stg.end()) layers_stg.push_back(layer_stg);
143 if(layer_stg>layer_max) {
152 float x_mu=z_nsw*tan(theta_mu)*cos(phi_mu);
153 float y_mu=z_nsw*tan(theta_mu)*sin(phi_mu);
157 int isEff= (layers_mm.size()>3 || layers_stg.size()>3);
161 if (ref_sector > 0)
fill(NSWMonGroup, hitcut, mu_phi,
lb, lb_side, sector_phi, x_trk, y_trk);
165 return StatusCode::SUCCESS;
#define ATH_CHECK
Evaluate an expression and check for errors.
xAOD::MuonContainer * muonContainer
virtual StatusCode initialize() override
initialize
SG::ReadHandle< xAOD::EventInfo > GetEventInfo(const EventContext &) const
Return a ReadHandle for an EventInfo object (get run/event numbers, etc.)
AthMonitorAlgorithm(const std::string &name, ISvcLocator *pSvcLocator)
Constructor.
Declare a monitored scalar variable.
Base class for Muon cluster RIO_OnTracks.
virtual const MuonCluster * prepRawData() const override=0
Returns the Trk::PrepRawData - is a MuonCluster in this scope.
Class representing clusters in the muon system.
virtual const Amg::Vector3D & globalPosition() const =0
Returns the global position of the measurement (calculated on the fly)
virtual StatusCode initialize() override
initialize
NSWDataMonAlg(const std::string &name, ISvcLocator *pSvcLocator)
virtual StatusCode fillHistograms(const EventContext &ctx) const override
adds event to the monitoring histograms
ServiceHandle< Muon::IMuonIdHelperSvc > m_idHelperSvc
SG::ReadHandleKey< xAOD::MuonContainer > m_muonKey
This class is the pure abstract base class for all fittable tracking measurements.
Class to handle RIO On Tracks ROT) for InDet and Muons, it inherits from the common MeasurementBase.
Identifier identify() const
return the identifier -extends MeasurementBase
represents the track state (measurement, material, fit parameters and quality) at a surface.
@ Measurement
This is a measurement, and will at least contain a Trk::MeasurementBase.
const Trk::TrackStates * trackStateOnSurfaces() const
return a pointer to a const DataVector of const TrackStateOnSurfaces.
float theta() const
Returns the parameter, which has range 0 to .
const Trk::Track * track() const
Returns a pointer (which can be NULL) to the Trk::Track which was used to make this TrackParticle.
virtual double phi() const override final
The azimuthal angle ( ) of the particle (has range to .)
virtual double eta() const override final
The pseudorapidity ( ) of the particle.
void fill(const ToolHandle< GenericMonitoringTool > &groupHandle, std::vector< std::reference_wrapper< Monitored::IMonitoredVariable > > &&variables) const
Fills a vector of variables to a group by reference.
Eigen::Matrix< double, 3, 1 > Vector3D
TrackParticle_v1 TrackParticle
Reference the current persistent version:
Muon_v1 Muon
Reference the current persistent version: