CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
CocoaDBMgr.cc
Go to the documentation of this file.
11 
21 
30 
34 
36 
37 //----------------------------------------------------------------------
39 {
40  if(!instance) {
41  instance = new CocoaDBMgr;
42  }
43  return instance;
44 }
45 
46 //----------------------------------------------------------------------
48 {
49 }
50 
51 //-----------------------------------------------------------------------
53 {
55 
57  int nrcd;
58 
59  cond::Time_t appendTime = Fit::nEvent+1;
60  if(gomgr->GlobalOptions()["writeDBOptAlign"] > 0 ) {
61 
62  //----- Build OpticalAlignments
64 
65  //--- Dump OpticalAlignments
66  nrcd = optalign->opticalAlignments_.size();
67  if( !myDbService.isAvailable() ){
68  throw cms::Exception("CocoaDBMgr::DumpCocoaResults DB not available");
69  }
70  // try{
71  if ( myDbService->isNewTagRequest( "OpticalAlignmentsRcd" ) ) {
72  std::cout << " new OA to DB " << "begin " << myDbService->beginOfTime() << " current " << myDbService->currentTime() << " end " << myDbService->endOfTime() << std::endl;
73  myDbService->createNewIOV<OpticalAlignments>(optalign,
74  myDbService->beginOfTime(),
75  myDbService->endOfTime(),
76  // myDbService->endOfTime(),
77  "OpticalAlignmentsRcd");
78  } else {
79  std::cout << " old OA to DB " << " current " << myDbService->currentTime() << " end " << myDbService->endOfTime() << std::endl;
80  myDbService->appendSinceTime<OpticalAlignments>( optalign,
81  // myDbService->endOfTime(),
82  appendTime,
83  // myDbService->currentTime(),
84  "OpticalAlignmentsRcd");
85  }
86 
87 
88  /* }catch(const cond::Exception& er) {
89  std::cout<<er.what()<<std::endl;
90  }catch(const std::exception& er){
91  std::cout<<"caught std::exception "<<er.what()<<std::endl;
92  }catch(...){
93  std::cout<<"Funny error"<<std::endl;
94  } */
95 
96  if(ALIUtils::debug >= 2) std::cout << "OpticalAlignmentsRcd WRITTEN TO DB : "<< nrcd << std::endl;
97  }
98 
99  if( gomgr->GlobalOptions()["writeDBAlign"] > 0) {
100 
101  // Build DT alignments and errors
102  std::pair< Alignments*,AlignmentErrors*> dtali = BuildAlignments(1);
103  Alignments* dt_Alignments = dtali.first;
104  AlignmentErrors* dt_AlignmentErrors = dtali.second;
105 
106  // Dump DT alignments and errors
107  nrcd = dt_Alignments->m_align.size();
108  if ( myDbService->isNewTagRequest( "DTAlignmentRcd" ) ) {
109  myDbService->createNewIOV<Alignments>(&(*dt_Alignments),
110  myDbService->beginOfTime(),
111  myDbService->endOfTime(),
112  "DTAlignmentRcd");
113  } else {
114  myDbService->appendSinceTime<Alignments>( &(*dt_Alignments),
115  appendTime,
116  // myDbService->currentTime(),
117  "DTAlignmentRcd");
118  }
119  if(ALIUtils::debug >= 2) std::cout << "DTAlignmentRcd WRITTEN TO DB : "<< nrcd << std::endl;
120 
121  nrcd = dt_AlignmentErrors->m_alignError.size();
122  if ( myDbService->isNewTagRequest( "DTAlignmentErrorRcd" ) ) {
123  myDbService->createNewIOV<AlignmentErrors>(&(*dt_AlignmentErrors),
124  myDbService->beginOfTime(),
125  myDbService->endOfTime(),
126  "DTAlignmentErrorRcd");
127  } else {
128  myDbService->appendSinceTime<AlignmentErrors>( &(*dt_AlignmentErrors),
129  appendTime,
130  "DTAlignmentErrorRcd");
131  }
132  if(ALIUtils::debug >= 2) std::cout << "DTAlignmentErrorRcd WRITTEN TO DB : "<< nrcd << std::endl;
133 
134  // Build CSC alignments and errors
135  std::pair< Alignments*,AlignmentErrors*> cscali = BuildAlignments(0);
136  Alignments* csc_Alignments = cscali.first;
137  AlignmentErrors* csc_AlignmentErrors = cscali.second;
138 
139  // Dump CSC alignments and errors
140  nrcd = csc_Alignments->m_align.size();
141  if ( myDbService->isNewTagRequest( "CSCAlignmentRcd" ) ) {
142  myDbService->createNewIOV<Alignments>(&(*csc_Alignments),
143  myDbService->beginOfTime(),
144  myDbService->endOfTime(),
145  "CSCAlignmentRcd");
146  } else {
147  myDbService->appendSinceTime<Alignments>( &(*csc_Alignments),
148  appendTime,
149  "CSCAlignmentRcd");
150  }
151  if(ALIUtils::debug >= 2) std::cout << "CSCAlignmentRcd WRITTEN TO DB : "<< nrcd << std::endl;
152 
153  nrcd = csc_AlignmentErrors->m_alignError.size();
154  if ( myDbService->isNewTagRequest( "CSCAlignmentErrorRcd" ) ) {
155  myDbService->createNewIOV<AlignmentErrors>(&(*csc_AlignmentErrors),
156  myDbService->beginOfTime(),
157  myDbService->endOfTime(),
158  "CSCAlignmentErrorRcd");
159  } else {
160  myDbService->appendSinceTime<AlignmentErrors>( &(*csc_AlignmentErrors),
161  appendTime,
162  "CSCAlignmentErrorRcd");
163  }
164  if(ALIUtils::debug >= 2) std::cout << "CSCAlignmentErrorRcd WRITTEN TO DB : "<< nrcd << std::endl;
165 
166  //? gives unreadable error??? std::cout << "@@@@ OPTICALALIGNMENTS WRITTEN TO DB " << *optalign << std::endl;
167 
168  return TRUE;
169  }
170 
171  return TRUE;
172 }
173 
174 
175 //@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
177 {
178  std::cout << " CocoaDBMgr::GetOptAlignInfoFromOptO " << opto->name() << std::endl;
180  data.ID_=opto->getCmsswID();
181  data.type_=opto->type();
182  data.name_=opto->name();
183 
184  //----- Centre in local coordinates
185  CLHEP::Hep3Vector centreLocal = opto->centreGlob() - opto->parent()->centreGlob();
186  CLHEP::HepRotation parentRmGlobInv = inverseOf( opto->parent()->rmGlob() );
187  centreLocal = parentRmGlobInv * centreLocal;
188 
189  const std::vector< Entry* > theCoordinateEntryVector = opto->CoordinateEntryList();
190  std::cout << " CocoaDBMgr::GetOptAlignInfoFromOptO starting coord " <<std::endl;
191 
192  data.x_.value_= centreLocal.x() / 100.; // in cm
193  std::cout << " matrix " << Fit::GetAtWAMatrix() << std::endl;
194  std::cout << " matrix " << Fit::GetAtWAMatrix()->Mat() << " " << theCoordinateEntryVector[0]->fitPos() << std::endl;
195  data.x_.error_= GetEntryError( theCoordinateEntryVector[0] ) / 100.; // in cm
196 
197  data.y_.value_= centreLocal.y() / 100.; // in cm
198  std::cout << " matrix " << Fit::GetAtWAMatrix()->Mat() << " " << theCoordinateEntryVector[1]->fitPos() << std::endl;
199  data.y_.error_= GetEntryError( theCoordinateEntryVector[1] ) / 100.; // in cm
200 
201  data.z_.value_= centreLocal.z() / 100.; // in cm
202  std::cout << " matrix " << Fit::GetAtWAMatrix()->Mat() << " " << theCoordinateEntryVector[2]->fitPos() << std::endl;
203  data.z_.error_= GetEntryError( theCoordinateEntryVector[2] ) / 100.; // in cm
204 
205  //----- angles in local coordinates
206  std::vector<double> anglocal = opto->getLocalRotationAngles( theCoordinateEntryVector );
207 
208  data.angx_.value_= anglocal[0] *180./M_PI; // in deg
209  std::cout << " matrix " << Fit::GetAtWAMatrix()->Mat() << theCoordinateEntryVector[3]->fitPos() << std::endl;
210  data.angx_.error_= GetEntryError( theCoordinateEntryVector[3] ) * 180./M_PI; // in deg;
211 
212  data.angy_.value_= anglocal[1] * 180./M_PI; // in deg
213  std::cout << " matrix " << Fit::GetAtWAMatrix()->Mat() << theCoordinateEntryVector[4]->fitPos() << std::endl;
214  data.angy_.error_= GetEntryError( theCoordinateEntryVector[4] ) * 180./M_PI; // in deg;;
215 
216  data.angz_.value_= anglocal[2] *180./M_PI; // in deg
217  std::cout << " matrix " << Fit::GetAtWAMatrix()->Mat() << theCoordinateEntryVector[5]->fitPos() << std::endl;
218  data.angz_.error_= GetEntryError( theCoordinateEntryVector[5] ) * 180./M_PI; // in deg;
219 
220 
221  const std::vector< Entry* > theExtraEntryVector = opto->ExtraEntryList(); std::cout << " CocoaDBMgr::GetOptAlignInfoFromOptO starting entry " << std::endl;
222 
223  std::vector< Entry* >::const_iterator ite;
224  for( ite = theExtraEntryVector.begin(); ite != theExtraEntryVector.end(); ite++ ) {
225  OpticalAlignParam extraEntry;
226  extraEntry.name_ = (*ite)->name();
227  extraEntry.dim_type_ = (*ite)->type();
228  extraEntry.value_ = (*ite)->value();
229  extraEntry.error_ = (*ite)->sigma();
230  extraEntry.quality_ = (*ite)->quality();
231  data.extraEntries_.push_back( extraEntry );
232  std::cout << " CocoaDBMgr::GetOptAlignInfoFromOptO done extra entry " << extraEntry.name_ << std::endl;
233 
234  }
235 
236  return data;
237 }
238 
239 
240 //-----------------------------------------------------------------------
241 double CocoaDBMgr::GetEntryError( const Entry* entry )
242 {
243  if( entry->quality() > 0 ) {
244  return sqrt(Fit::GetAtWAMatrix()->Mat()->me[entry->fitPos()][entry->fitPos()]);
245  } else { //entry not fitted, return original error
246  return entry->sigma();
247  }
248 }
249 
250 
251 //-----------------------------------------------------------------------
252 double CocoaDBMgr::GetEntryError( const Entry* entry1, const Entry* entry2 )
253 {
254  if( entry1 == entry2 ) return GetEntryError( entry1 );
255 
256  if( entry1->quality() > 0 && entry2->quality() > 0 ) {
257  return sqrt(Fit::GetAtWAMatrix()->Mat()->me[entry1->fitPos()][entry2->fitPos()]);
258  } else { //entries not fitted, correlation is 0
259  return 0.;
260  }
261 }
262 
263 
264 //-----------------------------------------------------------------------
266 {
267  OpticalAlignments* optalign= new OpticalAlignments;
268 
269  static std::vector< OpticalObject* > optolist = Model::OptOList();
270  static std::vector< OpticalObject* >::const_iterator ite;
271  for(ite = optolist.begin(); ite != optolist.end(); ite++ ){
272  if( (*ite)->type() == "system" ) continue;
274  optalign->opticalAlignments_.push_back(data);
275  if(ALIUtils::debug >= 5) {
276  std::cout << "@@@@ OPTALIGNINFO TO BE WRITTEN TO DB "
277  << data
278  << std::endl;
279  }
280  }
281  return optalign;
282 }
283 
284 
285 //-----------------------------------------------------------------------
286 std::pair< Alignments*,AlignmentErrors*> CocoaDBMgr::BuildAlignments(bool bDT)
287 {
288  Alignments* alignments = new Alignments;
289  AlignmentErrors* alignmentErrors = new AlignmentErrors;
290 
291  //read
292  static std::vector< OpticalObject* > optolist = Model::OptOList();
293  static std::vector< OpticalObject* >::const_iterator ite;
294  for(ite = optolist.begin(); ite != optolist.end(); ite++ ){
295  if( (*ite)->type() == "system" ) continue;
296  std::cout << "CocoaDBMgr::BuildAlignments getCmsswID " << (*ite) << std::endl;
297  std::cout << "CocoaDBMgr::BuildAlignments getCmsswID " << (*ite)->getCmsswID() << std::endl;
298  //check CMSSW ID
299  if( (*ite)->getCmsswID() > 0 ) { //put the numbers of DT or CSC objects
300  std::cout << " cal fill alignments " << std::endl;
301  alignments->m_align.push_back( *(GetAlignInfoFromOptO( *ite )));
302  std::cout << " fill alignments " << std::endl;
303  // AlignTransformError* err =
304  //GetAlignInfoErrorFromOptO( *ite );
305  alignmentErrors->m_alignError.push_back(*(GetAlignInfoErrorFromOptO( *ite )));
306  std::cout << "CocoaDBMgr::BuildAlignments add alignmentError " << alignmentErrors->m_alignError.size() << std::endl;
307  }
308  }
309 
310  if(ALIUtils::debug >= 4) std::cout << "CocoaDBMgr::BuildAlignments end with n alignment " << alignments->m_align.size() << " n alignmentError " << alignmentErrors->m_alignError.size() << std::endl;
311  return std::pair< Alignments*,AlignmentErrors*>(alignments,alignmentErrors);
312 }
313 
314 
315 //-----------------------------------------------------------------------
317 {
318  if(ALIUtils::debug >= 3) std::cout << "@@@ CocoaDBMgr::GetAlignInfoFromOptO " << opto->name() << std::endl;
319 
320  AlignTransform::Translation trans = opto->centreGlob();
322  align::ID cmsswID = opto->getCmsswID();
323 
324  std::cout << "@@@ CocoaDBMgr::GetAlignInfoFromOptO buildalign" << opto->name() << std::endl;
325  AlignTransform* align = new AlignTransform( trans, rot, cmsswID );
326 
327  std::cout << "@@@ CocoaDBMgr::GetAlignInfoFromOptO alig built " << opto->name() << std::endl;
328 
329  return align;
330  // return dd;
331 }
332 
333 //-----------------------------------------------------------------------
335 {
336  if(ALIUtils::debug >= 3) std::cout << "@@@ CocoaDBMgr::GetAlignInfoErrorFromOptO " << opto->name() << std::endl;
337 
338  align::ID cmsswID = opto->getCmsswID();
339 
340  GlobalError gerr(1.,
341  0.,
342  1.,
343  0.,
344  0.,
345  1.);
346  //double(dx*dx), 0., double(dy*dy), 0., 0., double(dz*dz) ) ;
347  CLHEP::HepSymMatrix errms = asHepMatrix(gerr.matrix());
348  AlignTransformError* alignError = new AlignTransformError( errms, cmsswID );
349  return alignError;
350 
351  CLHEP::HepMatrix errm(3,3);
352  const std::vector< Entry* > theCoordinateEntryVector = opto->CoordinateEntryList();
353 std::cout << "@@@ CocoaDBMgr::GetAlignInfoFromOptOfill errm " << opto->name() << std::endl;
354  errm(0,0) = GetEntryError( theCoordinateEntryVector[0] ) / 100.; // in cm
355  errm(1,1) = GetEntryError( theCoordinateEntryVector[1] ) / 100.; // in cm
356  errm(2,2) = GetEntryError( theCoordinateEntryVector[2] ) / 100.; // in cm
357  errm(0,1) = GetEntryError( theCoordinateEntryVector[0], theCoordinateEntryVector[1] ) / 100.; // in cm
358  errm(0,2) = GetEntryError( theCoordinateEntryVector[0], theCoordinateEntryVector[2] ) / 100.; // in cm
359  errm(1,2) = GetEntryError( theCoordinateEntryVector[1], theCoordinateEntryVector[2] ) / 100.; // in cm
360  // errm(1,0) = errm(0,1);
361  // errm(2,0) = errm(0,2);
362  // errm(2,1) = errm(1,2);
363 
364 std::cout << "@@@ CocoaDBMgr::GetAlignInfoFromOptO errm filled" << opto->name() << std::endl;
365 // CLHEP::HepSymMatrix errms(3);
366 // errms.assign(errm);
367 
368 std::cout << "@@@ CocoaDBMgr::GetAlignInfoFromOptO errms filled " << opto->name() << std::endl;
369 // AlignTransformError* alignError = new AlignTransformError( errms, cmsswID );
370 // AlignTransformError* alignError = 0;
371 
372  std::cout << alignError << "@@@ CocoaDBMgr::GetAlignInfoFromOptO error built " << opto->name() << std::endl;
373  //t return alignError;
374  return (AlignTransformError*)(0);
375 }
376 
377 
const ALIuint getCmsswID() const
CLHEP::HepMatrix asHepMatrix(const ROOT::Math::SMatrix< double, N1, N2, typename ROOT::Math::MatRepStd< double, N1, N2 > > &rm)
Definition: Migration.h:49
#define TRUE
Definition: scimark2.h:12
OpticalAlignParam x_
Definition: Entry.h:18
const std::vector< Entry * > & ExtraEntryList() const
Definition: OpticalObject.h:69
static ALIMatrix * GetAtWAMatrix()
Definition: Fit.h:146
uint32_t ID
Definition: Definitions.h:26
std::vector< AlignTransformError > m_alignError
bool DumpCocoaResults()
Definition: CocoaDBMgr.cc:52
CLHEP::Hep3Vector Translation
const AlgebraicSymMatrix33 & matrix() const
OpticalAlignments * BuildOpticalAlignments()
Definition: CocoaDBMgr.cc:265
const std::vector< Entry * > & CoordinateEntryList() const
Definition: OpticalObject.h:65
static ALIint debug
Definition: ALIUtils.h:35
static GlobalOptionMgr * getInstance()
std::vector< AlignTransform > m_align
Definition: Alignments.h:17
const CLHEP::HepRotation & rmGlob() const
std::pair< Alignments *, AlignmentErrors * > BuildAlignments(bool bDT)
Definition: CocoaDBMgr.cc:286
static CocoaDBMgr * instance
Definition: CocoaDBMgr.h:62
OpticalAlignParam angx_
std::vector< double > getLocalRotationAngles(const std::vector< Entry * > &entries) const
OpticalAlignParam y_
void appendSinceTime(T *payloadObj, cond::Time_t sinceTime, const std::string &recordName, bool withlogging=false)
unsigned long long Time_t
Definition: Time.h:16
bool isNewTagRequest(const std::string &recordName)
std::vector< OpticalAlignInfo > opticalAlignments_
T sqrt(T t)
Definition: SSEVec.h:48
const OpticalObject * parent() const
Definition: OpticalObject.h:62
bool isAvailable() const
Definition: Service.h:46
const MAT * Mat() const
static ALIuint nEvent
Definition: Fit.h:204
AlignTransform * GetAlignInfoFromOptO(OpticalObject *opto)
Definition: CocoaDBMgr.cc:316
double GetEntryError(const Entry *entry)
Definition: CocoaDBMgr.cc:241
OpticalAlignInfo GetOptAlignInfoFromOptO(OpticalObject *opto)
Definition: CocoaDBMgr.cc:176
void createNewIOV(T *firstPayloadObj, cond::Time_t firstSinceTime, cond::Time_t firstTillTime, const std::string &recordName, bool withlogging=false)
OpticalAlignParam angz_
ALIint fitPos() const
Definition: Entry.h:60
static std::vector< OpticalObject * > & OptOList()
Definition: Model.h:71
#define M_PI
Definition: BFit3D.cc:3
OpticalAlignParam z_
static CocoaDBMgr * getInstance()
Definition: CocoaDBMgr.cc:38
std::vector< OpticalAlignParam > extraEntries_
const CLHEP::Hep3Vector & centreGlob() const
Definition: OpticalObject.h:85
OpticalAlignParam angy_
char data[epos_bytes_allocation]
Definition: EPOS_Wrapper.h:82
ALIint quality() const
Definition: Entry.h:59
tuple cout
Definition: gather_cfg.py:121
const ALIstring & name() const
Definition: OpticalObject.h:60
std::string dim_type_
std::map< ALIstring, ALIdouble, std::less< ALIstring > > & GlobalOptions()
AlignTransformError * GetAlignInfoErrorFromOptO(OpticalObject *opto)
Definition: CocoaDBMgr.cc:334
unsigned int ID_
const ALIstring & type() const
Definition: OpticalObject.h:61
ALIdouble sigma() const
Definition: Entry.h:57
CLHEP::HepRotation Rotation