ATLAS Offline Software
Classes | Macros | Functions | Variables
runMmGeoComparison.cxx File Reference
#include <GeoPrimitives/GeoPrimitives.h>
#include <GeoPrimitives/GeoPrimitivesHelpers.h>
#include <GeoPrimitives/GeoPrimitivesToStringConverter.h>
#include <GaudiKernel/SystemOfUnits.h>
#include <MuonReadoutGeometryR4/MuonDetectorDefs.h>
#include <string>
#include <set>
#include <vector>
#include <map>
#include <iostream>
#include <cmath>
#include <PathResolver/PathResolver.h>
#include <TFile.h>
#include <TTreeReader.h>

Go to the source code of this file.

Classes

struct  MmChamber
 Helper struct to represent a full MicroMegas chamber. More...
 
struct  MmChamber::MmChannel
 
struct  MmChamber::MmLayer
 Helper struct to assess that the layers are properly oriented. More...
 

Macros

#define TEST_BASICPROP(attribute, propName)
 

Functions

std::ostream & operator<< (std::ostream &ostr, const MmChamber &chamb)
 Translation of the station Index -> station Name. More...
 
std::ostream & operator<< (std::ostream &ostr, const MmChamber::MmChannel &channel)
 
std::ostream & operator<< (std::ostream &ostr, const MmChamber::MmLayer &layer)
 
std::set< MmChamberreadTreeDump (const std::string &inputFile)
 
int main (int argc, char **argv)
 

Variables

constexpr double tolerance = 0.003*Gaudi::Units::millimeter
 

Macro Definition Documentation

◆ TEST_BASICPROP

#define TEST_BASICPROP (   attribute,
  propName 
)
Value:
if (std::abs(1.*test.attribute - 1.*reference.attribute) > tolerance) { \
std::cerr<<"runMmGeoComparison() "<<__LINE__<<": The chamber "<<reference \
<<" differs w.r.t "<<propName<<" "<< reference.attribute \
<<" (ref) vs. " <<test.attribute << " (test)" << std::endl; \
chamberOkay = false; \
}

Definition at line 278 of file runMmGeoComparison.cxx.

Function Documentation

◆ main()

int main ( int  argc,
char **  argv 
)

check whether the files are xroot d -> otherwise call path resovler

Parse the tree dump

Start to loop over the chambers

GasGap Dimensions for debugging

Eta strips have their centres at local Y = 0 --> Their positions must match in absolute terms w.r.t legacy geometry

The centres of the Stereo layers are defined as the bisector of the line between the two frame edges. However, thus far the parameter book deviates from the legacy Run-3 implementation. --> Cannot compare the absolute position of the stereo layers. Instead check that the left edge, right edge and center point in the new geometry are on the same line as defined by the reference system.

Definition at line 285 of file runMmGeoComparison.cxx.

285  {
286  std::string refFile{}, testFile{};
287 
288  for (int arg = 1; arg < argc; ++arg) {
289  std::string the_arg{argv[arg]};
290  if (the_arg == "--refFile" && arg +1 < argc) {
291  refFile = std::string{argv[arg+1]};
292  ++arg;
293  } else if (the_arg == "--testFile" && arg + 1 < argc) {
294  testFile = std::string{argv[arg+1]};
295  ++arg;
296  }
297  }
298  if (refFile.empty()) {
299  std::cerr<<"Please parse the path of the reference file via --refFile "<<std::endl;
300  return EXIT_FAILURE;
301  }
302  if (testFile.empty()) {
303  std::cerr<<"Please parse the path of the test file via --testFile "<<std::endl;
304  return EXIT_FAILURE;
305  }
307  if (!refFile.starts_with ("root://")) refFile = PathResolver::FindCalibFile(refFile);
308  if (!testFile.starts_with ("root://")) testFile = PathResolver::FindCalibFile(testFile);
310  std::set<MmChamber> refChambers = readTreeDump(refFile);
311  if (refChambers.empty()) {
312  std::cerr<<"The file "<<refFile<<" should contain at least one chamber "<<std::endl;
313  return EXIT_FAILURE;
314  }
315  std::set<MmChamber> testChambers = readTreeDump(testFile);
316  if (testChambers.empty()) {
317  std::cerr<<"The file "<<testFile<<" should contain at least one chamber "<<std::endl;
318  return EXIT_FAILURE;
319  }
320  int return_code = EXIT_SUCCESS;
322  for (const MmChamber& reference : refChambers) {
323  std::set<MmChamber>::const_iterator test_itr = testChambers.find(reference);
324 
325  if (test_itr == testChambers.end()) {
326  std::cerr<<"The chamber "<<reference<<" is not part of the testing "<<std::endl;
327  return_code = EXIT_FAILURE;
328  continue;
329  }
330  bool chamberOkay{true};
331  const MmChamber& test = {*test_itr};
332 
334  TEST_BASICPROP(ActiveWidthS, "GasGap length on the short side");
335  TEST_BASICPROP(ActiveWidthL, "GasGap length on the long side");
336  TEST_BASICPROP(ActiveHeightR, "GasGap Height");
337  TEST_BASICPROP(stripPitch, "Strip pitch");
338  // if (!chamberOkay) continue;
339  using MmLayer = MmChamber::MmLayer;
340  for (const MmLayer& refLayer : reference.layers) {
341  break;
342  std::set<MmLayer>::const_iterator lay_itr = test.layers.find(refLayer);
343  if (lay_itr == test.layers.end()) {
344  std::cerr<<"runMmGeoComparison() "<<__LINE__<<": in "<<test<<" "
345  <<refLayer<<" is not found. "<<std::endl;
346  chamberOkay = false;
347  continue;
348  }
349  const MmLayer& testLayer{*lay_itr};
350  if ( (refLayer.firstStripPos- testLayer.firstStripPos).mag() > tolerance) {
351  std::cerr<<"runMmGeoComparison() "<<__LINE__<<": in "<<test<<" "
352  <<testLayer.gasGap<<" has different starting position "
353  <<Amg::toString(refLayer.firstStripPos, 2) <<" vs. "
354  <<Amg::toString(testLayer.firstStripPos, 2)
355  <<"difference: "<<Amg::toString(refLayer.firstStripPos- testLayer.firstStripPos, 2)
356  <<" / "<<(refLayer.firstStripPos- testLayer.firstStripPos).mag()/reference.stripPitch
357  <<std::endl;
358  chamberOkay = false;
359  }
360  if (refLayer.firstStrip != testLayer.firstStrip) {
361  std::cerr<<"runMmGeoComparison() "<<__LINE__<<": in "<<test<<" "
362  <<testLayer.gasGap<<" starts from different strip "<<refLayer.firstStrip<<" vs. "
363  <<testLayer.firstStrip<<std::endl;
364  chamberOkay = false;
365  }
366 
367 
368  if (!Amg::doesNotDeform(refLayer.transform.inverse()* testLayer.transform)){
369  std::cerr<<"runMmGeoComparison() "<<__LINE__<<": in "<<test<<" "
370  <<testLayer<<" differs w.r.t. reference "<<Amg::toString(refLayer.transform)<<". vs. "
371  <<Amg::toString(refLayer.transform.inverse()*testLayer.transform)<<std::endl;
372  chamberOkay = false;
373  }
374  }
375  unsigned int failedEta{0}, failedStereo{0};
376  for (const MmChamber::MmChannel& refStrip : reference.channels) {
377  std::set<MmChamber::MmChannel>::const_iterator strip_itr = test.channels.find(refStrip);
378  if (strip_itr == test.channels.end()) {
379  std::cerr<<"runMmGeoComparison() "<<__LINE__<<": in "<<test<<" "
380  <<refStrip<<" is not found. "<<std::endl;
381  chamberOkay = false;
382  continue;
383  }
384  const MmChamber::MmChannel& testStrip{*strip_itr};
385 
388  if (!refStrip.isStereo && (failedEta <=10)) {
389  const Amg::Vector3D diffStrip{testStrip.globCenter - refStrip.globCenter};
390  if (diffStrip.mag() > tolerance) {
391  std::cerr<<"runMmGeoComparison() "<<__LINE__<<": In "
392  <<test<<" " <<testStrip <<"/local: "<<Amg::toString(testStrip.locCenter, 2)
393  <<" should be located at "<<Amg::toString(refStrip.globCenter, 2)
394  <<"/local: "<<Amg::toString(refStrip.locCenter, 2)
395  <<" displacement: "<<Amg::toString(diffStrip, 2)<<" "<<diffStrip.mag()<<std::endl;
396  chamberOkay = false;
397  }
398  ++failedEta;
399  }
406  else if (failedStereo <= 10) {
408  (refStrip.leftEdge - refStrip.rightEdge).unit()};
410  (testStrip.rightEdge - testStrip.leftEdge).unit()};
411  const double centerDist = stripDir.dot(testStrip.globCenter - refStrip.globCenter);
412  const double leftDist = stripDir.dot(testStrip.leftEdge -refStrip.globCenter);
413  const double rightDist = stripDir.dot(testStrip.rightEdge - refStrip.globCenter);
414  if ( std::abs(centerDist) > tolerance || std::abs(leftDist) > tolerance || std::abs(rightDist) > tolerance) {
415  std::cerr<<"runMmGeoComparison() "<<__LINE__<<": In "
416  <<test<<" " <<testStrip <<" + mu "<<Amg::toString(testDir,2)
417  <<"/local: "<<Amg::toString(testStrip.locCenter, 2)
418  <<" does not describe the same stereo strip as "
419  <<Amg::toString(refStrip.globCenter, 2)<<" + lambda "<<Amg::toString(stripDir,2)
420  <<". Distances to the left-edge/center/right-edge: "
421  <<leftDist<<"/"<<centerDist<<"/"<<rightDist<<", dot: "
422  <<std::acos(std::clamp(stripDir.dot(testDir),- 1., 1.)) / Gaudi::Units::deg<<std::endl;
423  chamberOkay = false;
424  }
425  ++failedStereo;
426  }
427  }
428 
429  if (!chamberOkay) {
430  return_code = EXIT_FAILURE;
431  }
432  }
433  return return_code;
434 
435 }

◆ operator<<() [1/3]

std::ostream& operator<< ( std::ostream &  ostr,
const MmChamber chamb 
)

Translation of the station Index -> station Name.

Dictionary taken from https://gitlab.cern.ch/atlas/athena/-/blob/main/DetectorDescription/IdDictParser/data/IdDictMuonSpectrometer_R.09.03.xml

Definition at line 114 of file runMmGeoComparison.cxx.

114  {
115  static const std::map<int, std::string> stationDict{
116  {55, "MMS"}, {56, "MML"}
117  };
118  ostr<<"MicroMegas chamber "<<stationDict.at(chamb.stationIndex)<<std::abs(chamb.stationEta)<<
119  (chamb.stationEta>0 ? "A" : "C")<<chamb.stationPhi<<"-"<<chamb.multilayer<<" ";
120  return ostr;
121 }

◆ operator<<() [2/3]

std::ostream& operator<< ( std::ostream &  ostr,
const MmChamber::MmChannel channel 
)

Definition at line 123 of file runMmGeoComparison.cxx.

123  {
124  ostr<<"channel (gasGap/number): ";
125  ostr<<channel.gasGap<<"/";
126  ostr<<std::setfill('0')<<std::setw(4)<<channel.channel<<", ";
127  ostr<<"center: "<<Amg::toString(channel.globCenter, 2);
128  return ostr;
129 }

◆ operator<<() [3/3]

std::ostream& operator<< ( std::ostream &  ostr,
const MmChamber::MmLayer layer 
)

Definition at line 132 of file runMmGeoComparison.cxx.

132  {
133  ostr<<"Mmlayer (gasGap): ";
134  ostr<<layer.gasGap<<", ";
135  ostr<<"transform: "<<Amg::toString(layer.transform);
136  return ostr;
137 }

◆ readTreeDump()

std::set<MmChamber> readTreeDump ( const std::string &  inputFile)

Identifier of the readout element

Strip Length and Positions

GasGap Dimensions for debugging

Geo Model transformation

Identifier of the readout element

Gas Gap lengths for debug

Definition at line 139 of file runMmGeoComparison.cxx.

139  {
140  std::set<MmChamber> to_ret{};
141  std::cout<<"Read the MicroMegas geometry tree dump from "<<inputFile<<std::endl;
142  std::unique_ptr<TFile> inFile{TFile::Open(inputFile.c_str())};
143  if (!inFile || !inFile->IsOpen()) {
144  std::cerr<<__FILE__<<":"<<__LINE__<<" Failed to open "<<inputFile<<std::endl;
145  return to_ret;
146  }
147  TTreeReader treeReader("MmGeoModelTree", inFile.get());
148  if (treeReader.IsInvalid()){
149  std::cerr<<__FILE__<<":"<<__LINE__<<" The file "<<inputFile<<" does not contain the 'MmGeoModelTree'"<<std::endl;
150  return to_ret;
151  }
152 
154  TTreeReaderValue<unsigned short> stationIndex{treeReader, "stationIndex"};
155  TTreeReaderValue<short> stationEta{treeReader, "stationEta"};
156  TTreeReaderValue<short> stationPhi{treeReader, "stationPhi"};
157  TTreeReaderValue<short> multilayer{treeReader, "multilayer"};
158 
160  TTreeReaderValue<std::vector<uint>> channel{treeReader, "channel"};
161  TTreeReaderValue<std::vector<short>> gasGap{treeReader, "gasGap"};
162  TTreeReaderValue<std::vector<float>> stripLength{treeReader, "stripLength"};
163 
164  TTreeReaderValue<std::vector<bool>> isStereo{treeReader, "isStereo"};
165  TTreeReaderValue<std::vector<float>> locStripCenterX{treeReader, "locStripCenterX"};
166  TTreeReaderValue<std::vector<float>> locStripCenterY{treeReader, "locStripCenterY"};
167 
168  TTreeReaderValue<std::vector<float>> stripCenterX{treeReader, "stripCenterX"};
169  TTreeReaderValue<std::vector<float>> stripCenterY{treeReader, "stripCenterY"};
170  TTreeReaderValue<std::vector<float>> stripCenterZ{treeReader, "stripCenterZ"};
171  TTreeReaderValue<std::vector<float>> stripLeftEdgeX{treeReader, "stripLeftEdgeX"};
172  TTreeReaderValue<std::vector<float>> stripLeftEdgeY{treeReader, "stripLeftEdgeY"};
173  TTreeReaderValue<std::vector<float>> stripLeftEdgeZ{treeReader, "stripLeftEdgeZ"};
174  TTreeReaderValue<std::vector<float>> stripRightEdgeX{treeReader, "stripRightEdgeX"};
175  TTreeReaderValue<std::vector<float>> stripRightEdgeY{treeReader, "stripRightEdgeY"};
176  TTreeReaderValue<std::vector<float>> stripRightEdgeZ{treeReader, "stripRightEdgeZ"};
177 
179  TTreeReaderValue<float> ActiveHeightR{treeReader, "ActiveHeightR"};
180  TTreeReaderValue<float> ActiveWidthS{treeReader, "ActiveWidthS"};
181  TTreeReaderValue<float> ActiveWidthL{treeReader, "ActiveWidthL"};
182  TTreeReaderValue<float> stripPitch{treeReader, "stripPitch"};
183 
185  TTreeReaderValue<std::vector<float>> geoModelTransformX{treeReader, "GeoModelTransformX"};
186  TTreeReaderValue<std::vector<float>> geoModelTransformY{treeReader, "GeoModelTransformY"};
187  TTreeReaderValue<std::vector<float>> geoModelTransformZ{treeReader, "GeoModelTransformZ"};
188 
189  TTreeReaderValue<std::vector<float>> stripRotCol1X{treeReader, "stripRotLinearCol1X"};
190  TTreeReaderValue<std::vector<float>> stripRotCol1Y{treeReader, "stripRotLinearCol1Y"};
191  TTreeReaderValue<std::vector<float>> stripRotCol1Z{treeReader, "stripRotLinearCol1Z"};
192 
193  TTreeReaderValue<std::vector<float>> stripRotCol2X{treeReader, "stripRotLinearCol2X"};
194  TTreeReaderValue<std::vector<float>> stripRotCol2Y{treeReader, "stripRotLinearCol2Y"};
195  TTreeReaderValue<std::vector<float>> stripRotCol2Z{treeReader, "stripRotLinearCol2Z"};
196 
197  TTreeReaderValue<std::vector<float>> stripRotCol3X{treeReader, "stripRotLinearCol3X"};
198  TTreeReaderValue<std::vector<float>> stripRotCol3Y{treeReader, "stripRotLinearCol3Y"};
199  TTreeReaderValue<std::vector<float>> stripRotCol3Z{treeReader, "stripRotLinearCol3Z"};
200 
201  TTreeReaderValue<std::vector<float>> stripRotTransX{treeReader, "stripRotTranslationX"};
202  TTreeReaderValue<std::vector<float>> stripRotTransY{treeReader, "stripRotTranslationY"};
203  TTreeReaderValue<std::vector<float>> stripRotTransZ{treeReader, "stripRotTranslationZ"};
204 
205  TTreeReaderValue<std::vector<uint8_t>> stripRotGasGap{treeReader, "stripRotGasGap"};
206 
207  TTreeReaderValue<std::vector<float>> firstStripPosX{treeReader, "firstStripPosX"};
208  TTreeReaderValue<std::vector<float>> firstStripPosY{treeReader, "firstStripPosY"};
209 
210  TTreeReaderValue<std::vector<int>> readoutSide{treeReader, "stripReadoutSide"};
211  TTreeReaderValue<std::vector<unsigned int>> firstStripNum{treeReader, "stripFirstStrip"};
212 
213 
214  while (treeReader.Next()) {
215  MmChamber newchamber{};
216 
218  newchamber.stationIndex = (*stationIndex);
219  newchamber.stationEta = (*stationEta);
220  newchamber.stationPhi = (*stationPhi);
221  newchamber.multilayer = (*multilayer);
222 
224  newchamber.ActiveHeightR = (*ActiveHeightR);
225  newchamber.ActiveWidthS = (*ActiveWidthS);
226  newchamber.ActiveWidthL = (*ActiveWidthL);
227  newchamber.stripPitch = (*stripPitch);
228 
229  Amg::Vector3D geoTrans{(*geoModelTransformX)[0], (*geoModelTransformY)[0], (*geoModelTransformZ)[0]};
230  Amg::RotationMatrix3D geoRot{Amg::RotationMatrix3D::Identity()};
231  geoRot.col(0) = Amg::Vector3D((*geoModelTransformX)[1], (*geoModelTransformY)[1], (*geoModelTransformZ)[1]);
232  geoRot.col(1) = Amg::Vector3D((*geoModelTransformX)[2], (*geoModelTransformY)[2], (*geoModelTransformZ)[2]);
233  geoRot.col(2) = Amg::Vector3D((*geoModelTransformX)[3], (*geoModelTransformY)[3], (*geoModelTransformZ)[3]);
234  newchamber.geoModelTransform = Amg::getTransformFromRotTransl(std::move(geoRot), std::move(geoTrans));
235 
236  //Strips
237  for (size_t s = 0; s < stripCenterX->size(); ++s){
238  MmChamber::MmChannel newStrip{};
239  newStrip.globCenter = Amg::Vector3D{(*stripCenterX)[s], (*stripCenterY)[s], (*stripCenterZ)[s]};
240  newStrip.locCenter = Amg::Vector2D{(*locStripCenterX)[s], (*locStripCenterY)[s]};
241  newStrip.leftEdge = Amg::Vector3D{(*stripLeftEdgeX)[s], (*stripLeftEdgeY)[s], (*stripLeftEdgeZ)[s]};
242  newStrip.rightEdge = Amg::Vector3D{(*stripRightEdgeX)[s], (*stripRightEdgeY)[s], (*stripRightEdgeZ)[s]};
243 
244  newStrip.gasGap = (*gasGap)[s];
245  newStrip.channel = (*channel)[s];
246  newStrip.isStereo = (*isStereo)[s];
247  newchamber.channels.insert(std::move(newStrip));
248  }
249 
250  for (size_t l = 0; l < stripRotGasGap->size(); ++l){
251  MmChamber::MmLayer newLayer{};
252  newLayer.gasGap = (*stripRotGasGap)[l];
253  Amg::RotationMatrix3D stripRot{Amg::RotationMatrix3D::Identity()};
254  stripRot.col(0) = Amg::Vector3D((*stripRotCol1X)[l],(*stripRotCol1Y)[l], (*stripRotCol1Z)[l]);
255  stripRot.col(1) = Amg::Vector3D((*stripRotCol2X)[l],(*stripRotCol2Y)[l], (*stripRotCol2Z)[l]);
256  stripRot.col(2) = Amg::Vector3D((*stripRotCol3X)[l],(*stripRotCol3Y)[l], (*stripRotCol3Z)[l]);
257  Amg::Vector3D layTrans{(*stripRotTransX)[l], (*stripRotTransY)[l], (*stripRotTransZ)[l]};
258  newLayer.transform = Amg::getTransformFromRotTransl(std::move(stripRot), std::move(layTrans));
259  newLayer.firstStripPos = Amg::Vector2D{(*firstStripPosX)[l], (*firstStripPosY)[l]};
260  newLayer.readoutSide = (*readoutSide)[l];
261  newLayer.firstStrip = (*firstStripNum)[l];
262  newchamber.layers.insert(std::move(newLayer));
263  }
264 
265  auto insert_itr = to_ret.insert(std::move(newchamber));
266  if (!insert_itr.second) {
267  std::stringstream err{};
268  err<<__FILE__<<":"<<__LINE__<<" The chamber "<<(*insert_itr.first).stationIndex
269  <<" has already been inserted. "<<std::endl;
270  throw std::runtime_error(err.str());
271  }
272  }
273  std::cout<<"File parsing is finished. Found in total "<<to_ret.size()<<" readout element dumps "<<std::endl;
274  return to_ret;
275 }

Variable Documentation

◆ tolerance

constexpr double tolerance = 0.003*Gaudi::Units::millimeter
constexpr

Definition at line 30 of file runMmGeoComparison.cxx.

MmChamber
Helper struct to represent a full MicroMegas chamber.
Definition: runMmGeoComparison.cxx:33
Muon::nsw::STGTPSegments::moduleIDBits::stationPhi
constexpr uint8_t stationPhi
station Phi 1 to 8
Definition: NSWSTGTPDecodeBitmaps.h:129
dumpTgcDigiDeadChambers.gasGap
list gasGap
Definition: dumpTgcDigiDeadChambers.py:33
python.SystemOfUnits.s
int s
Definition: SystemOfUnits.py:131
PathResolver::FindCalibFile
static std::string FindCalibFile(const std::string &logical_file_name)
Definition: PathResolver.h:108
MmChamber::MmChannel::locCenter
Amg::Vector2D locCenter
Local center of the micromega strip.
Definition: runMmGeoComparison.cxx:68
plotting.yearwise_efficiency.channel
channel
Definition: yearwise_efficiency.py:28
Amg::Vector2D
Eigen::Matrix< double, 2, 1 > Vector2D
Definition: GeoPrimitives.h:48
makeTOC.inFile
string inFile
Definition: makeTOC.py:5
deg
#define deg
Definition: SbPolyhedron.cxx:17
plotIsoValidation.treeReader
treeReader
Definition: plotIsoValidation.py:127
UploadAMITag.l
list l
Definition: UploadAMITag.larcaf.py:158
MmChamber::MmChannel
Definition: runMmGeoComparison.cxx:66
reference
Definition: hcg.cxx:437
TrigInDetValidation_Base.test
test
Definition: TrigInDetValidation_Base.py:144
MmChamber::MmChannel::leftEdge
Amg::Vector3D leftEdge
Left edge of the strip.
Definition: runMmGeoComparison.cxx:72
LArCellConditions.argv
argv
Definition: LArCellConditions.py:112
tolerance
constexpr double tolerance
Definition: runMmGeoComparison.cxx:30
Amg::getRotateZ3D
Amg::Transform3D getRotateZ3D(double angle)
get a rotation transformation around Z-axis
Definition: GeoPrimitivesHelpers.h:270
MmChamber::MmLayer
Helper struct to assess that the layers are properly oriented.
Definition: runMmGeoComparison.cxx:90
Amg::getTransformFromRotTransl
Amg::Transform3D getTransformFromRotTransl(Amg::RotationMatrix3D rot, Amg::Vector3D transl_vec)
Definition: GeoPrimitivesHelpers.h:172
MmChamber::multilayer
int multilayer
Definition: runMmGeoComparison.cxx:41
Amg::toString
std::string toString(const Translation3D &translation, int precision=4)
GeoPrimitvesToStringConverter.
Definition: GeoPrimitivesToStringConverter.h:40
dqt_zlumi_pandas.err
err
Definition: dqt_zlumi_pandas.py:193
CaloCondBlobAlgs_fillNoiseFromASCII.inputFile
string inputFile
Definition: CaloCondBlobAlgs_fillNoiseFromASCII.py:17
MmChamber::MmChannel::globCenter
Amg::Vector3D globCenter
Global center of the micromega strip.
Definition: runMmGeoComparison.cxx:70
TRT::Hit::layer
@ layer
Definition: HitInfo.h:79
MmChamber::MmChannel::rightEdge
Amg::Vector3D rightEdge
Right edge of the strip.
Definition: runMmGeoComparison.cxx:74
Amg::doesNotDeform
bool doesNotDeform(const Amg::Transform3D &trans)
Checks whether the linear part of the transformation rotates or stetches any of the basis vectors.
Definition: GeoPrimitivesHelpers.h:338
readTreeDump
std::set< MmChamber > readTreeDump(const std::string &inputFile)
Definition: runMmGeoComparison.cxx:139
DQHistogramMergeRegExp.argc
argc
Definition: DQHistogramMergeRegExp.py:20
MmChamber::MmLayer::gasGap
unsigned int gasGap
Gas gap number of the layer.
Definition: runMmGeoComparison.cxx:92
create_dcsc_inputs_sqlite.arg
list arg
Definition: create_dcsc_inputs_sqlite.py:48
tolerance
Definition: suep_shower.h:17
MmChamber::stationIndex
int stationIndex
Definition: runMmGeoComparison.cxx:38
L1CaloPhase1Monitoring.propName
propName
Definition: L1CaloPhase1Monitoring.py:349
TEST_BASICPROP
#define TEST_BASICPROP(attribute, propName)
Definition: runMmGeoComparison.cxx:277
MmChamber::stationPhi
int stationPhi
Definition: runMmGeoComparison.cxx:40
MmChamber::stationEta
int stationEta
Definition: runMmGeoComparison.cxx:39
Amg::Vector3D
Eigen::Matrix< double, 3, 1 > Vector3D
Definition: GeoPrimitives.h:47
MmChamber::MmChannel::isStereo
bool isStereo
Short flag whether the angle is stereo.
Definition: runMmGeoComparison.cxx:80
Amg::RotationMatrix3D
Eigen::Matrix< double, 3, 3 > RotationMatrix3D
Definition: GeoPrimitives.h:49
unit
const PlainObject unit() const
This is a plugin that makes Eigen look like CLHEP & defines some convenience methods.
Definition: AmgMatrixBasePlugin.h:20
CscCalibQuery.testFile
testFile
Definition: CscCalibQuery.py:274
Muon::nsw::STGTPSegments::moduleIDBits::stationEta
constexpr uint8_t stationEta
1 to 3
Definition: NSWSTGTPDecodeBitmaps.h:127
mag
Scalar mag() const
mag method
Definition: AmgMatrixBasePlugin.h:25