CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
SurveyDataReader.cc
Go to the documentation of this file.
1 // System
2 #include <fstream>
3 #include <iostream>
4 
6 
9 // #include "DataFormats/SiStripDetId/interface/StripSubdetector.h"
10 
12 
13 using namespace std;
14 using namespace edm;
15 
16 //__________________________________________________________________________________________________
17 void SurveyDataReader::readFile( const std::string& textFileName ,const std::string& fileType )
18 {
19 
20  std::ifstream myfile( textFileName.c_str() );
21  if ( !myfile.is_open() )
22  throw cms::Exception("FileAccess") << "Unable to open input text file for " << fileType.c_str();
23 
24  int nErrors = 0;
25  align::ID m_detId = 0;
26  int NINPUTS_align = 30;
27  int NINPUTS_detId = 6;
28  if (fileType == "TID") NINPUTS_detId++;
29 
30  std::vector<int> d_inputs;
31  align::Scalars a_inputs;
32  align::Scalars a_outputs;
33  int itmpInput;
34  float tmpInput;
35 
36  while ( !myfile.eof() && myfile.good() )
37  {
38  d_inputs.clear();
39  a_inputs.clear();
40  a_outputs.clear();
41 
42  if (fileType == "TIB") {
43  itmpInput = int(StripSubdetector::TIB) ;
44  } else {
45  itmpInput = int(StripSubdetector::TID) ;
46  }
47 
48  d_inputs.push_back( itmpInput );
49 
50  for ( int i=0; i<NINPUTS_detId; i++ )
51  {
52  myfile >> itmpInput;
53  d_inputs.push_back( itmpInput );
54  }
55 
56  // Calculate DetId(s)
57  int ster = 0; // if module is single-sided, take the module
58  // if double-sided get the glued module
59 
60  if (fileType == "TID") {
61  TIDDetId myTDI(d_inputs[2], d_inputs[3], d_inputs[4], d_inputs[5], d_inputs[6], ster);
62  m_detId = myTDI.rawId();
63  }
64  else if (fileType == "TIB") {
65  TIBDetId myTBI(d_inputs[2], d_inputs[3], d_inputs[4], d_inputs[5], d_inputs[6], ster);
66  m_detId = myTBI.rawId();
67  }
68 
69  if (abs(int(m_detId) - int(d_inputs[1])) > 2) { // Check DetId calculation ...
70  std::cout << "ERROR : DetId - detector position mismatch! Found " << nErrors << std::endl;
71  nErrors++;
72  }
73 
74  // std::cout << m_detId << " " << d_inputs[1] << std::endl;
75  // m_detId = d_inputs[1];
76  for ( int j=0; j<NINPUTS_align; j++ )
77  {
78  myfile >> tmpInput;
79  a_inputs.push_back( tmpInput );
80  }
81 
82  // Check if read succeeded (otherwise, we are at eof)
83  if ( myfile.fail() ) break;
84 
85  a_outputs = convertToAlignableCoord( a_inputs );
86 
87  theOriginalMap.insert( PairTypeOr( d_inputs, a_inputs ));
88  theMap.insert( PairType( m_detId, a_outputs ));
89 
90  }
91 
92 }
93 //__________________________________________________________________________________________________
96 {
97  align::Scalars align_outputs;
98 
99  // Convert to coordinates that TrackerAlignment can read in
100 
101  // Center of sensor
102  AlgebraicVector geomCent(3);
103  AlgebraicVector surCent(3);
104  for (int ii = 0; ii < 3; ii++) {
105  geomCent[ii] = align_params[ii];
106  surCent[ii] = align_params[ii+15];
107  }
108  surCent -= geomCent;
109 
110  align_outputs.push_back( surCent[0] );
111  align_outputs.push_back( surCent[1] );
112  align_outputs.push_back( surCent[2] );
113 
114  // Rotation matrices
115  for (int ii = 3; ii < 12; ii++) {
116  align_outputs.push_back( align_params[ii] );
117  }
118  for (int ii = 18; ii < 27; ii++) {
119  align_outputs.push_back( align_params[ii] );
120  }
121 
122  return align_outputs;
123 }
int i
Definition: DBlmapReader.cc:9
uint32_t ID
Definition: Definitions.h:26
#define abs(x)
Definition: mlp_lapack.h:159
std::pair< align::ID, align::Scalars > PairType
void readFile(const std::string &textFileName, const std::string &fileType)
Read given text file.
uint32_t rawId() const
get the raw id
Definition: DetId.h:45
std::vector< Scalar > Scalars
Definition: Utilities.h:22
std::pair< std::vector< int >, align::Scalars > PairTypeOr
int j
Definition: DBlmapReader.cc:9
CLHEP::HepVector AlgebraicVector
align::Scalars convertToAlignableCoord(const align::Scalars &align_params)
tuple cout
Definition: gather_cfg.py:121