44 return StatusCode::SUCCESS;
50 ATH_MSG_DEBUG(
"NSWDataMonAlg::MM RawData Monitoring Histograms being filled" );
54 return StatusCode::FAILURE;
57 std::string NSWMonGroup =
"NSWMonGroup";
64 if(mu -> pt() <
m_cutPt)
continue;
67 if(!(mu -> author() == xAOD::Muon::Author::MuidCo || (mu -> author() == xAOD::Muon::Author::MuidSA && std::abs(mu->eta()) > 2.5) ) )
continue;
69 if(saTP ==
nullptr)
continue;
71 if(!saTrack)
continue;
73 float eta_mu=saTP->
eta();
77 float theta_mu=saTP->
theta();
78 float phi_mu=saTP->
phi();
82 std::string side =
"sideA";
93 std::vector<int> layers_mm; std::vector<int> layers_stg;
98 if(!(trkState))
continue;
110 int channelType =
m_idHelperSvc->stgcIdHelper().channelType(rot_id);
117 if (!cluster)
continue;
121 if(fabs(pos.z())<min_z_nsw){
123 min_z_nsw=fabs(z_nsw);
133 auto layer_mm=gap_mm+(multi_mm-1)*4;
135 if (std::find(layers_mm.begin(), layers_mm.end(), layer_mm) == layers_mm.end()) layers_mm.push_back(layer_mm);
136 if(layer_mm>layer_max){
143 multi_stg =
m_idHelperSvc -> stgcIdHelper().multilayer(rot_id);
145 auto layer_stg=gap_stg+(multi_stg-1)*4;
147 if (std::find(layers_stg.begin(), layers_stg.end(), layer_stg) == layers_stg.end()) layers_stg.push_back(layer_stg);
148 if(layer_stg>layer_max) {
158 if (ref_sector < 0 && std::fabs(eta_mu) > 1.25) {
163 float x_mu=z_nsw*tan(theta_mu)*cos(phi_mu);
164 float y_mu=z_nsw*tan(theta_mu)*sin(phi_mu);
168 int isEff= (layers_mm.size()>3 || layers_stg.size()>3);
172 if (ref_sector > 0)
fill(NSWMonGroup, hitcut, mu_phi,
lb, lb_side, sector_phi, x_trk, y_trk);
176 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)
int getSector(double phi) const
returns the sector corresponding to the phi position
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: