ATLAS Offline Software
MMT_Diamond.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
3 */
4 
6 
8  m_detManager = detManager;
9 }
10 
12  if (!m_diamonds.empty()) {
13  for (auto &diam : m_diamonds) {
14  if (!diam.ev_roads.empty()) diam.ev_roads.clear();
15  if (!diam.ev_hits.empty()) diam.ev_hits.clear();
16  diam.slopes.clear();
17  }
18  m_diamonds.clear();
19  }
20 }
21 
22 void MMT_Diamond::createRoads_fillHits(const unsigned int iterator, std::vector<hitData_entry> &hitDatas, const MuonGM::MuonDetectorManager* detManager, std::shared_ptr<MMT_Parameters> par, const int phi) {
23  ATH_MSG_DEBUG("createRoads_fillHits: Feeding hitDatas Start");
24 
26  entry.wedgeCounter = iterator;
27  entry.sector = par->getSector();
28  entry.stationPhi = (par->getSector() == 'S') ? phi*2-1 : phi*2-2;
29 
30  std::string sector = (par->getSector() == 'L') ? "MML" : "MMS";
31 
32  /*
33  * The following for-loop merges all plane global coordinates in one single shot:
34  * X & Y are constant in all layers, for a given phi (Not used at the moment)
35  * Z (layer coordinates) changes only for Small and Large sectors --> USED and working!
36  */
37  std::vector<ROOT::Math::XYZVector> planeCoordinates{};
38  planeCoordinates.reserve(8);
39  for (unsigned int iphi = 0; iphi < 8; iphi++) {
40  Amg::Vector3D globalPos(0.0, 0.0, 0.0);
41  int multilayer = (iphi < 4) ? 1 : 2;
42  int gasgap = ((iphi+1)%4 == 0) ? 4 : (iphi+1)%4;
43  /*
44  * Strip 100 (or 200) chosen as good compromise, considering offline strips.
45  * channelMin() function (https://acode-browser1.usatlas.bnl.gov/lxr/source/athena/MuonSpectrometer/MuonIdHelpers/MuonIdHelpers/MmIdHelper.h?v=21.3#0123)
46  * could be used, instead of hardcoding the strip id, but it returns (always?) as initialized in level ranges
47  */
48  int strip = (iphi > 1 && iphi < 6) ? par->getMissedBottomStereoStrips()+1 : par->getMissedBottomEtaStrips()+1;
49  Identifier strip_id = detManager->mmIdHelper()->channelID(sector, 1, iphi+1, multilayer, gasgap, strip);
50  const MuonGM::MMReadoutElement* readout = detManager->getMMReadoutElement(strip_id);
51 
52  ROOT::Math::XYZVector coord(0.,0.,0.);
53  if (readout->stripGlobalPosition(strip_id, globalPos)) coord.SetXYZ(globalPos.x(), globalPos.y(), globalPos.z());
54  else ATH_MSG_WARNING("Wedge " << sector << " phi: " << iphi << " mult. " << multilayer << " gas " << gasgap << " | Unable to retrieve global positions");
55  planeCoordinates.push_back(coord);
56  }
57 
58  int nroad = 8192/this->getRoadSize();
59  static const double B = (1./std::tan(1.5/180.*M_PI));
60  int uvfactor = std::round( par->getlWidth() / (B * 0.4 * 2.)/this->getRoadSize() ); // full wedge has to be considered, i.e. S(L/M)2
61  this->setUVfactor(uvfactor);
62 
63  for (const auto &hit_entry : hitDatas) {
64  auto myhit = std::make_shared<MMT_Hit>(hit_entry, detManager, par, planeCoordinates);
65  if (myhit->verifyHit()) {
66  m_hitslopes.push_back(myhit->getRZSlope());
67  entry.ev_hits.push_back(myhit);
68  }
69  }
70  entry.side = (std::all_of(entry.ev_hits.begin(), entry.ev_hits.end(), [] (const auto &hit) { return hit->getStationEta() < 0; })) ? 'C' : 'A';
71 
72  for (int i = 0; i < nroad; i++) {
73  auto myroad = std::make_shared<MMT_Road>(sector[2], m_roadSize, m_roadSizeUpX, m_roadSizeDownX, m_roadSizeUpUV, m_roadSizeDownUV,
74  m_xthr, m_uvthr, i);
75  entry.ev_roads.push_back(myroad);
76 
77  int nuv = (this->getUV()) ? this->getUVfactor() : 0;
78  for (int uv = 1; uv <= nuv; uv++) {
79  if (i-uv < 0) continue;
80 
81  auto myroad_0 = std::make_shared<MMT_Road>(sector[2], m_roadSize, m_roadSizeUpX, m_roadSizeDownX, m_roadSizeUpUV, m_roadSizeDownUV,
82  m_xthr, m_uvthr, i, i+uv, i-uv);
83  entry.ev_roads.push_back(myroad_0);
84 
85  auto myroad_1 = std::make_shared<MMT_Road>(sector[2], m_roadSize, m_roadSizeUpX, m_roadSizeDownX, m_roadSizeUpUV, m_roadSizeDownUV,
86  m_xthr, m_uvthr, i, i-uv, i+uv);
87  entry.ev_roads.push_back(myroad_1);
88 
89  auto myroad_2 = std::make_shared<MMT_Road>(sector[2], m_roadSize, m_roadSizeUpX, m_roadSizeDownX, m_roadSizeUpUV, m_roadSizeDownUV,
90  m_xthr, m_uvthr, i, i+uv-1, i-uv);
91  entry.ev_roads.push_back(myroad_2);
92 
93  auto myroad_3 = std::make_shared<MMT_Road>(sector[2], m_roadSize, m_roadSizeUpX, m_roadSizeDownX, m_roadSizeUpUV, m_roadSizeDownUV,
94  m_xthr, m_uvthr, i, i-uv, i+uv-1);
95  entry.ev_roads.push_back(myroad_3);
96 
97  auto myroad_4 = std::make_shared<MMT_Road>(sector[2], m_roadSize, m_roadSizeUpX, m_roadSizeDownX, m_roadSizeUpUV, m_roadSizeDownUV,
98  m_xthr, m_uvthr, i, i-uv+1, i+uv);
99  entry.ev_roads.push_back(myroad_4);
100 
101  auto myroad_5 = std::make_shared<MMT_Road>(sector[2], m_roadSize, m_roadSizeUpX, m_roadSizeDownX, m_roadSizeUpUV, m_roadSizeDownUV,
102  m_xthr, m_uvthr, i, i+uv, i-uv+1);
103  entry.ev_roads.push_back(myroad_5);
104  }
105  }
106  m_diamonds.push_back(entry);
107  ATH_MSG_DEBUG("CreateRoadsAndFillHits: Feeding hitDatas Ended");
108 }
109 
110 void MMT_Diamond::findDiamonds(const unsigned int iterator, const int event) {
111  if (m_diamonds[iterator].ev_hits.empty()) return;
112 
114  int bc_start = 999999;
115  int bc_end = -1;
116  int bc_wind = 4; // fixed time window (in bunch crossings) during which the algorithm collects ART hits
117  unsigned int ibc = 0;
118 
119  m_diamonds[iterator].slopes.clear();
120 
121  // Comparison with lambda function (easier to implement)
122  std::sort(m_diamonds[iterator].ev_hits.begin(), m_diamonds[iterator].ev_hits.end(), [](const auto &h1, const auto &h2){ return h1->getBC() < h2->getBC(); });
123  bc_start = m_diamonds[iterator].ev_hits.front()->getBC();
124  bc_end = m_diamonds[iterator].ev_hits.front()->getBC() + 16;
125  ATH_MSG_DEBUG("Window Start: " << bc_start << " - Window End: " << bc_end);
126 
127  for (const auto &road : m_diamonds[iterator].ev_roads) road->reset();
128 
129  std::vector<std::shared_ptr<MMT_Hit> > hits_now = {};
130  std::vector< std::pair<int, float> > vmm_same = {};
131  std::vector< std::pair<int, int> > addc_same = {};
132  std::vector<int> to_erase = {};
133  int n_addc = 4;
134  int n_vmm = 128;
135 
136  // each road makes independent triggers, evaluated on each BC
137  for (int bc = m_diamonds[iterator].ev_hits.front()->getBC(); bc < bc_end; bc++) {
138  // Cleaning stuff
139  hits_now.clear();
140 
141  for (unsigned int j = ibc; j < m_diamonds[iterator].ev_hits.size(); j++) {
142  if (m_diamonds[iterator].ev_hits[j]->getBC() == bc) hits_now.push_back(m_diamonds[iterator].ev_hits[j]);
143  else if (m_diamonds[iterator].ev_hits[j]->getBC() > bc) {
144  ibc = j;
145  break;
146  }
147  }
148 
149  // Simulate harware filters: ART hits + ADDC filter
150  for (unsigned int ib = 0; ib < 8; ib++) { //loop on plane from 0 to 7
151  // VMM-ART-hit filter
152  for (int j = 0; j < n_vmm; j++) {
153  vmm_same.clear();
154  unsigned int k = 0;
155  for (auto hit_pointer: hits_now) {
156  if (static_cast<unsigned int>(hit_pointer->getPlane()) != ib) continue;
157  if (hit_pointer->getVMM() == j){
158  vmm_same.push_back( std::make_pair(k, hit_pointer->getTime()) );
159  }
160  k++;
161  }
162  if (vmm_same.size() > 1) {
163  to_erase.clear();
164  std::sort(vmm_same.begin(), vmm_same.end(), [](const std::pair<int, float>& p1, const std::pair<int, float>& p2) { return p1.second < p2.second; });
165  for (auto pair: vmm_same) to_erase.push_back(pair.first);
166  // reverse and erase
167  std::sort(to_erase.rbegin(), to_erase.rend());
168  to_erase.pop_back(); //removes the hit with the earliest time
169  for (auto l : to_erase) {
170  hits_now.erase(hits_now.begin() + l);
171  }
172  }
173  }
174  // ADDC-like filter
175  for (int ia = 0; ia < n_addc; ia++) { // From 0 to 3 (local index of the ART ASIC in the layer)
176  addc_same.clear();
177  for (unsigned int k = 0; k < hits_now.size(); k++) {
178  if ((unsigned int)(hits_now[k]->getPlane()) != ib) continue;
179  int istrip = (std::abs(hits_now[k]->getStationEta())-1) * (64*8*10) + hits_now[k]->getChannel(); //needed the global strip index on the sector layer (getChannel returns chamber's local strip index)
180  if (hits_now[k]->getART() == ia) addc_same.emplace_back(k, istrip);
181  }
182 
183  if (addc_same.size() > 8) {
184  // priority encode the hits by channel number; remember hits 8+
185  to_erase.clear();
186 
187  std::sort(addc_same.begin(), addc_same.end(), [](const std::pair<int, int>& p1, const std::pair<int, int>& p2) { return p1.second < p2.second; });
188  for (unsigned int it = 8; it < addc_same.size(); it++) to_erase.push_back(addc_same[it].first);
189 
190  // reverse and erase
191  std::sort(to_erase.rbegin(), to_erase.rend());
192  for (auto l : to_erase) {
193  hits_now.erase(hits_now.begin() + l);
194  }
195  }
196  }
197  } // loop on plane for VMM and ART ASIC filter
198 
199  for (auto &road : m_diamonds[iterator].ev_roads) {
200  road->incrementAge(bc_wind);
201  if (!hits_now.empty()) road->addHits(hits_now);
202 
203  if (road->checkCoincidences(bc_wind) && bc >= (bc_start - 1)) {
204 
205  ATH_MSG_DEBUG("------------------------------------------------------------------");
206  ATH_MSG_DEBUG("Coincidence FOUND @BC: " << bc);
207  ATH_MSG_DEBUG("Road (x, u, v, count): (" << road->iRoadx() << ", " << road->iRoadu() << ", " << road->iRoadv() << ", " << road->countHits() << ")");
208  ATH_MSG_DEBUG("------------------------------------------------------------------");
209 
210  std::vector<int> bcidVec;
211  for (const auto &hit: road->getHitVector()) {
212  bcidVec.push_back(hit->getBC());
213  }
214  std::sort(bcidVec.begin(), bcidVec.end());
215 
216  // evaluating mode of the BCID of the hits in the diamond
217  // default setting in the firmware is the mode of the hits's bcid in the diamond
218  int bcidVal=bcidVec.at(0), bcidCount=1, modeCount=1, bcidMode=bcidVec.at(0);
219  for (unsigned int i=1; i<bcidVec.size(); i++){
220  if (bcidVec.at(i) == bcidVal){
221  bcidCount++;
222  } else {
223  bcidCount = 1;
224  bcidVal = bcidVec.at(i);
225  }
226  if (bcidCount > modeCount) {
227  modeCount = bcidCount;
228  bcidMode = bcidVal;
229  }
230  }
231 
232  slope_t slope;
233  slope.event = event;
234  slope.BC = bcidMode;
235  slope.totalCount = road->countHits();
236  slope.realCount = road->countRealHits();
237  slope.iRoad = road->iRoadx();
238  slope.iRoadu = road->iRoadu();
239  slope.iRoadv = road->iRoadv();
240  slope.uvbkg = road->countUVHits(true); // the bool in the following 4 functions refers to background/noise hits
241  slope.xbkg = road->countXHits(true);
242  slope.uvmuon = road->countUVHits(false);
243  slope.xmuon = road->countXHits(false);
244  slope.age = slope.BC - bc_start;
245  slope.mxl = road->mxl();
246  slope.my = road->avgSofX(); // defined as my in ATL-COM-UPGRADE-2015-033
247  slope.uavg = road->avgSofUV(2,4);
248  slope.vavg = road->avgSofUV(3,5);
249  static const double tan_stereo_angle = std::tan(0.02618); // The stereo angle is fixed and can be hardcoded
250  slope.mx = (slope.uavg-slope.vavg)/(2.*tan_stereo_angle);
251  double theta = std::atan(std::sqrt(std::pow(slope.mx,2) + std::pow(slope.my,2)));
252  slope.theta = (slope.my > 0.) ? theta : M_PI - theta;
253  slope.eta = -1.*std::log(std::tan(slope.theta/2.));
254  slope.dtheta = (slope.mxl - slope.my)/(1. + slope.mxl*slope.my);
255  slope.side = (slope.my > 0.) ? 'A' : 'C';
256  double phi = std::atan(slope.mx/slope.my);
257  double phiShifted = this->phiShift(this->getDiamond(iterator).stationPhi, phi, slope.side);
258  slope.phi = phi;
259  slope.phiShf = phiShifted;
260  slope.lowRes = road->evaluateLowRes();
261 
262  m_diamonds[iterator].slopes.push_back(slope);
263  }
264  }
265  }
267  ATH_MSG_DEBUG("Processing roads took " << std::chrono::duration_cast<std::chrono::milliseconds>(t1 - t0).count() << " ms");
268 }
269 
270 double MMT_Diamond::phiShift(const int n, const double phi, const char side) const {
271  double Phi = (side == 'A') ? -phi : phi;
272  double shift = (n > 8) ? (16-n)*M_PI/8. : n*M_PI/8.;
273  if (n < 8) return (Phi + shift);
274  else if (n == 8) return (Phi + ((Phi > 0.) ? -1. : 1.)*shift);
275  else return (Phi - shift);
276 }
277 
279  if (!m_hitslopes.empty()) m_hitslopes.clear();
280 }
281 
282 slope_t::slope_t(int ev, int bc, unsigned int tC, unsigned int rC, int iX, int iU, int iV, unsigned int uvb, unsigned int xb, unsigned int uvm, unsigned int xm,
283  int age, double mxl, double my, double uavg, double vavg, double mx, double th, double eta, double dth, char side, double phi, double phiS,
284  bool lowRes) :
285  event(ev), BC(bc), totalCount(tC), realCount(rC), iRoad(iX), iRoadu(iU), iRoadv(iV), uvbkg(uvb), xbkg(xb), uvmuon(uvm), xmuon(xm),
286  age(age), mxl(mxl), my(my), uavg(uavg), vavg(vavg), mx(mx), theta(th), eta(eta), dtheta(dth), side(side), phi(phi), phiShf(phiS), lowRes(lowRes) {}
xAOD::iterator
JetConstituentVector::iterator iterator
Definition: JetConstituentVector.cxx:68
slope_t::eta
double eta
Definition: MMT_Diamond.h:35
Muon::nsw::STGTPSegments::moduleIDBits::stationPhi
constexpr uint8_t stationPhi
station Phi 1 to 8
Definition: NSWSTGTPDecodeBitmaps.h:161
MMT_Diamond::MMT_Diamond
MMT_Diamond(const MuonGM::MuonDetectorManager *detManager)
Definition: MMT_Diamond.cxx:7
SiliconTech::strip
@ strip
MMT_Diamond::resetSlopes
void resetSlopes()
Definition: MMT_Diamond.cxx:278
slope_t::BC
int BC
Definition: MMT_Diamond.h:18
MMT_Diamond::getRoadSize
int getRoadSize() const
Definition: MMT_Diamond.h:74
phi
Scalar phi() const
phi method
Definition: AmgMatrixBasePlugin.h:67
fitman.my
my
Definition: fitman.py:523
slope_t::uavg
double uavg
Definition: MMT_Diamond.h:31
slope_t::my
double my
Definition: MMT_Diamond.h:30
eta
Scalar eta() const
pseudorapidity method
Definition: AmgMatrixBasePlugin.h:83
slope_t::xmuon
unsigned int xmuon
Definition: MMT_Diamond.h:27
theta
Scalar theta() const
theta method
Definition: AmgMatrixBasePlugin.h:75
MuonGM::round
float round(const float toRound, const unsigned int decimals)
Definition: Mdt.cxx:27
ALFA_EventTPCnv_Dict::t0
std::vector< ALFA_RawData_p1 > t0
Definition: ALFA_EventTPCnvDict.h:42
TRTCalib_cfilter.p1
p1
Definition: TRTCalib_cfilter.py:130
ALFA_EventTPCnv_Dict::t1
std::vector< ALFA_RawDataCollection_p1 > t1
Definition: ALFA_EventTPCnvDict.h:43
skel.it
it
Definition: skel.GENtoEVGEN.py:396
M_PI
#define M_PI
Definition: ActiveFraction.h:11
PlotCalibFromCool.ib
ib
Definition: PlotCalibFromCool.py:419
fitman.mx
mx
Definition: fitman.py:520
UploadAMITag.l
list l
Definition: UploadAMITag.larcaf.py:158
slope_t::iRoadu
int iRoadu
Definition: MMT_Diamond.h:22
Phi
@ Phi
Definition: RPCdef.h:8
MMT_Diamond::m_uvthr
int m_uvthr
Definition: MMT_Diamond.h:98
MuonGM::MuonDetectorManager::mmIdHelper
const MmIdHelper * mmIdHelper() const
Definition: MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/MuonDetectorManager.h:244
slope_t::totalCount
unsigned int totalCount
Definition: MMT_Diamond.h:19
MMT_Diamond::getDiamond
diamond_t getDiamond(const unsigned int iterator) const
Definition: MMT_Diamond.h:62
read_hist_ntuple.h1
h1
Definition: read_hist_ntuple.py:21
slope_t::vavg
double vavg
Definition: MMT_Diamond.h:32
Athena::getMessageSvc
IMessageSvc * getMessageSvc(bool quiet=false)
Definition: getMessageSvc.cxx:20
XMLtoHeader.count
count
Definition: XMLtoHeader.py:85
MMT_Diamond::getUV
bool getUV() const
Definition: MMT_Diamond.h:87
drawFromPickle.atan
atan
Definition: drawFromPickle.py:36
MMT_Diamond::phiShift
double phiShift(const int n, const double phi, const char side) const
Definition: MMT_Diamond.cxx:270
TRT::Hit::side
@ side
Definition: HitInfo.h:83
MMT_Diamond::createRoads_fillHits
void createRoads_fillHits(const unsigned int iterator, std::vector< hitData_entry > &hitDatas, const MuonGM::MuonDetectorManager *detManager, std::shared_ptr< MMT_Parameters > par, const int phi)
Definition: MMT_Diamond.cxx:22
slope_t::side
char side
Definition: MMT_Diamond.h:37
TRTCalib_cfilter.p2
p2
Definition: TRTCalib_cfilter.py:131
python.handimod.now
now
Definition: handimod.py:675
MMT_Diamond::m_roadSizeDownX
int m_roadSizeDownX
Definition: MMT_Diamond.h:97
python.TriggerHandler.th
th
Definition: TriggerHandler.py:296
ev
int ev
Definition: globals.cxx:25
event
POOL::TEvent event(POOL::TEvent::kClassAccess)
slope_t::dtheta
double dtheta
Definition: MMT_Diamond.h:36
lumiFormat.i
int i
Definition: lumiFormat.py:85
MMT_Diamond::m_roadSizeUpUV
int m_roadSizeUpUV
Definition: MMT_Diamond.h:97
Athena
Some weak symbol referencing magic...
Definition: AthLegacySequence.h:21
grepfile.age
age
Definition: grepfile.py:26
beamspotman.n
n
Definition: beamspotman.py:731
slope_t::phiShf
double phiShf
Definition: MMT_Diamond.h:39
ATH_MSG_DEBUG
#define ATH_MSG_DEBUG(x)
Definition: AthMsgStreamMacros.h:29
MuonGM::MMReadoutElement::stripGlobalPosition
bool stripGlobalPosition(const Identifier &id, Amg::Vector3D &gpos) const
Definition: MMReadoutElement.h:280
slope_t::theta
double theta
Definition: MMT_Diamond.h:34
slope_t::mx
double mx
Definition: MMT_Diamond.h:33
AthMessaging
Class to provide easy MsgStream access and capabilities.
Definition: AthMessaging.h:55
MMT_Diamond::m_roadSize
int m_roadSize
Definition: MMT_Diamond.h:97
drawFromPickle.tan
tan
Definition: drawFromPickle.py:36
slope_t::iRoad
int iRoad
Definition: MMT_Diamond.h:21
GetAllXsec.entry
list entry
Definition: GetAllXsec.py:132
MMT_Diamond::findDiamonds
void findDiamonds(const unsigned int iterator, const int event)
Definition: MMT_Diamond.cxx:110
slope_t::iRoadv
int iRoadv
Definition: MMT_Diamond.h:23
MMT_Diamond::clearEvent
void clearEvent()
Definition: MMT_Diamond.cxx:11
MMT_Diamond::m_roadSizeUpX
int m_roadSizeUpX
Definition: MMT_Diamond.h:97
createCoolChannelIdFile.par
par
Definition: createCoolChannelIdFile.py:29
diamond_t
Definition: MMT_Diamond.h:43
MMT_Diamond::m_xthr
int m_xthr
Definition: MMT_Diamond.h:98
dqt_zlumi_alleff_HIST.B
B
Definition: dqt_zlumi_alleff_HIST.py:110
MMT_Diamond::m_hitslopes
std::vector< double > m_hitslopes
Definition: MMT_Diamond.h:103
slope_t::age
int age
Definition: MMT_Diamond.h:28
slope_t::realCount
unsigned int realCount
Definition: MMT_Diamond.h:20
Amg::Vector3D
Eigen::Matrix< double, 3, 1 > Vector3D
Definition: GeoPrimitives.h:47
DataModelTestDataCommonDict::xb
DMTest::CView::Pers_t xb
Definition: DataModelTestDataCommonDict.h:55
JetVoronoiDiagramHelpers::coord
double coord
Definition: JetVoronoiDiagramHelpers.h:45
Muon::EnumDefs::BC
@ BC
Definition: MuonEnumDefs.h:13
checkCorrelInHIST.iX
int iX
Definition: checkCorrelInHIST.py:491
MMT_Diamond::m_diamonds
std::vector< diamond_t > m_diamonds
Definition: MMT_Diamond.h:102
MMT_Diamond::m_roadSizeDownUV
int m_roadSizeDownUV
Definition: MMT_Diamond.h:97
MuonGM::MuonDetectorManager
The MuonDetectorManager stores the transient representation of the Muon Spectrometer geometry and pro...
Definition: MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/MuonDetectorManager.h:50
ATH_MSG_WARNING
#define ATH_MSG_WARNING(x)
Definition: AthMsgStreamMacros.h:32
MMT_Diamond::getUVfactor
int getUVfactor() const
Definition: MMT_Diamond.h:67
slope_t::slope_t
slope_t(int ev=-1, int bc=-1, unsigned int tC=999, unsigned int rC=999, int iX=-1, int iU=-1, int iV=-1, unsigned int uvb=999, unsigned int xb=999, unsigned int uvm=999, unsigned int xm=999, int age=-1, double mxl=999., double my=999., double uavg=999., double vavg=999., double mx=999., double th=999., double eta=999., double dth=999., char side='-', double phi=999., double phiS=999., bool lowRes=false)
Definition: MMT_Diamond.cxx:282
slope_t::lowRes
bool lowRes
Definition: MMT_Diamond.h:40
MuonGM::MuonDetectorManager::getMMReadoutElement
const MMReadoutElement * getMMReadoutElement(const Identifier &id) const
access via extended identifier (requires unpacking)
Definition: MuonDetDescr/MuonReadoutGeometry/src/MuonDetectorManager.cxx:255
slope_t::phi
double phi
Definition: MMT_Diamond.h:38
python.CaloCondTools.log
log
Definition: CaloCondTools.py:20
slope_t::mxl
double mxl
Definition: MMT_Diamond.h:29
MuonGM::MMReadoutElement
An MMReadoutElement corresponds to a single STGC module; therefore typicaly a barrel muon station con...
Definition: MMReadoutElement.h:25
slope_t::xbkg
unsigned int xbkg
Definition: MMT_Diamond.h:25
slope_t
Definition: MMT_Diamond.h:13
pow
constexpr int pow(int base, int exp) noexcept
Definition: ap_fixedTest.cxx:15
MmIdHelper::channelID
Identifier channelID(int stationName, int stationEta, int stationPhi, int multilayer, int gasGap, int channel) const
Definition: MmIdHelper.cxx:736
MMT_Diamond.h
slope_t::event
unsigned int event
Definition: MMT_Diamond.h:17
MMT_Diamond::setUVfactor
void setUVfactor(int factor)
Definition: MMT_Diamond.h:70
slope_t::uvbkg
unsigned int uvbkg
Definition: MMT_Diamond.h:24
MMT_Diamond::m_detManager
const MuonGM::MuonDetectorManager * m_detManager
MuonDetectorManager.
Definition: MMT_Diamond.h:93
fitman.k
k
Definition: fitman.py:528
slope_t::uvmuon
unsigned int uvmuon
Definition: MMT_Diamond.h:26
Identifier
Definition: IdentifierFieldParser.cxx:14