#include <CalibCalorimetry/EcalPedestalOffsets/interface/EcalPedOffset.h>
Public Member Functions | |
void | analyze (edm::Event const &event, edm::EventSetup const &eventSetup) |
! Analyze | |
void | beginJob (edm::EventSetup const &eventSetup) |
BeginJob. | |
EcalPedOffset (const edm::ParameterSet &ps) | |
Constructor. | |
void | endJob (void) |
EndJob. | |
void | makePlots () |
create the plots of the DAC pedestal trend | |
void | writeDb () |
WriteDB. | |
void | writeXMLFiles (std::string fileName) |
write the results into xml format | |
virtual | ~EcalPedOffset () |
Destructor. | |
Private Member Functions | |
std::string | intToString (int num) |
void | readDACs (edm::Handle< EEDigiCollection > pDigis, std::map< int, int > DACvalues) |
void | readDACs (edm::Handle< EBDigiCollection > pDigis, std::map< int, int > DACvalues) |
Private Attributes | |
const EcalElectronicsMapping * | ecalElectronicsMap_ |
edm::InputTag | m_barrelDigiCollection |
secondary name given to collection of digis | |
int | m_bestPed |
bool | m_create_moniov |
allow the creation of a new moniov if not existing in the DB by default it is false. | |
int | m_DACmax |
int | m_DACmin |
std::string | m_dbHostName |
database host name | |
int | m_dbHostPort |
database | |
std::string | m_dbName |
database name | |
std::string | m_dbPassword |
database user password | |
std::string | m_dbUserName |
database user name | |
edm::InputTag | m_endcapDigiCollection |
secondary name given to collection of digis | |
edm::InputTag | m_headerCollection |
name of module/plugin/producer making headers | |
std::string | m_location |
double | m_maxChi2OverNDFAllowed_ |
max chi2/ndf allowed for linearity test | |
double | m_maxSlopeAllowed_ |
max slope (in magnitude) allowed for linearity test | |
double | m_minSlopeAllowed_ |
min slope (in magnitude) allowed for linearity test | |
std::map< int, TPedResult * > | m_pedResult |
std::map< int, TPedValues * > | m_pedValues |
std::string | m_plotting |
the root file where to store the detail plots | |
double | m_RMSmax |
int | m_run |
run number | |
std::string | m_xmlFile |
name of the xml file to be saved |
Definition at line 30 of file EcalPedOffset.h.
EcalPedOffset::EcalPedOffset | ( | const edm::ParameterSet & | ps | ) |
Constructor.
ctor
Definition at line 40 of file EcalPedOffset.cc.
References m_bestPed, m_DACmax, m_DACmin, and m_RMSmax.
00040 : 00041 m_barrelDigiCollection (paramSet.getParameter<edm::InputTag> ("EBdigiCollection")), 00042 m_endcapDigiCollection (paramSet.getParameter<edm::InputTag> ("EEdigiCollection")), 00043 m_headerCollection (paramSet.getParameter<edm::InputTag> ("headerCollection")), 00044 m_xmlFile (paramSet.getParameter<std::string> ("xmlFile")), 00045 m_DACmin (paramSet.getUntrackedParameter<int> ("DACmin",0)), 00046 m_DACmax (paramSet.getUntrackedParameter<int> ("DACmax",256)), 00047 m_RMSmax (paramSet.getUntrackedParameter<double> ("RMSmax",2)), 00048 m_bestPed (paramSet.getUntrackedParameter<int> ("bestPed",200)), 00049 m_dbHostName (paramSet.getUntrackedParameter<std::string> ("dbHostName","0")), 00050 m_dbName (paramSet.getUntrackedParameter<std::string> ("dbName","0")), 00051 m_dbUserName (paramSet.getUntrackedParameter<std::string> ("dbUserName")), 00052 m_dbPassword (paramSet.getUntrackedParameter<std::string> ("dbPassword")), 00053 m_dbHostPort (paramSet.getUntrackedParameter<int> ("dbHostPort",1521)), 00054 m_create_moniov (paramSet.getUntrackedParameter<bool>("createMonIOV", false)), 00055 m_location (paramSet.getUntrackedParameter<std::string>("location", "H4")), 00056 m_run(-1), 00057 m_plotting (paramSet.getParameter<std::string> ("plotting")), 00058 m_maxSlopeAllowed_ (paramSet.getUntrackedParameter<double> ("maxSlopeAllowed",-29)), 00059 m_minSlopeAllowed_ (paramSet.getUntrackedParameter<double> ("minSlopeAllowed",-18)), 00060 m_maxChi2OverNDFAllowed_ (paramSet.getUntrackedParameter<double> ("maxChi2OverNDF",5)) 00061 { 00062 edm::LogInfo ("EcalPedOffset") << " reading " 00063 << " m_DACmin: " << m_DACmin 00064 << " m_DACmax: " << m_DACmax 00065 << " m_RMSmax: " << m_RMSmax 00066 << " m_bestPed: " << m_bestPed ; 00067 }
EcalPedOffset::~EcalPedOffset | ( | ) | [virtual] |
Destructor.
dtor
Definition at line 74 of file EcalPedOffset.cc.
References m_pedResult, and m_pedValues.
00075 { 00076 for (std::map<int,TPedValues*>::iterator mapIt = m_pedValues.begin (); 00077 mapIt != m_pedValues.end (); 00078 ++mapIt) 00079 delete mapIt->second ; 00080 for (std::map<int,TPedResult*>::iterator mapIt = m_pedResult.begin (); 00081 mapIt != m_pedResult.end (); 00082 ++mapIt) 00083 delete mapIt->second ; 00084 }
void EcalPedOffset::analyze | ( | edm::Event const & | event, | |
edm::EventSetup const & | eventSetup | |||
) | [virtual] |
! Analyze
perform the analysis
Implements edm::EDAnalyzer.
Definition at line 106 of file EcalPedOffset.cc.
References L1Comparator_cfi::FEDid, edm::Handle< T >::isValid(), LogDebug, m_barrelDigiCollection, m_endcapDigiCollection, m_headerCollection, m_run, EcalDCCHeaderBlock::EcalDCCEventSettings::ped_offset, and readDACs().
00108 { 00109 LogDebug ("EcalPedOffset") << "entering analyze ..."; 00110 00111 // get the headers 00112 // (one header for each supermodule) 00113 edm::Handle<EcalRawDataCollection> DCCHeaders; 00114 event.getByLabel(m_headerCollection, DCCHeaders); 00115 00116 std::map <int,int> DACvalues; 00117 00118 if(m_run==-1) 00119 m_run = event.id().run(); 00120 00121 // loop over the headers 00122 for (EcalRawDataCollection::const_iterator headerItr= DCCHeaders->begin(); 00123 headerItr != DCCHeaders->end (); 00124 ++headerItr) 00125 { 00126 EcalDCCHeaderBlock::EcalDCCEventSettings settings = headerItr->getEventSettings(); 00127 int FEDid = 600+headerItr->id(); 00128 DACvalues[FEDid] = settings.ped_offset; 00129 LogDebug("EcalPedOffset") << "Found FED: " << FEDid << " in DCC header"; 00130 } 00131 00132 bool barrelDigisFound = true; 00133 bool endcapDigisFound = true; 00134 // get the barrel digis 00135 // (one digi for each crystal) 00136 Handle<EBDigiCollection> barrelDigis; 00137 event.getByLabel(m_barrelDigiCollection, barrelDigis); 00138 if(!barrelDigis.isValid()) 00139 { 00140 edm::LogError ("EcalPedOffset") << "Error! can't get the product " 00141 << m_barrelDigiCollection << "; not reading barrel digis"; 00142 barrelDigisFound = false; 00143 } 00144 00145 if(barrelDigis->size()==0) 00146 { 00147 edm::LogInfo("EcalPedOffset") << "Size of EBDigiCollection is zero;" 00148 << " not reading barrel digis"; 00149 barrelDigisFound = false; 00150 } 00151 00152 // get the endcap digis 00153 // (one digi for each crystal) 00154 Handle<EEDigiCollection> endcapDigis; 00155 event.getByLabel(m_endcapDigiCollection, endcapDigis); 00156 if(!endcapDigis.isValid()) 00157 { 00158 edm::LogError ("EcalPedOffset") << "Error! can't get the product " 00159 << m_endcapDigiCollection << "; not reading endcap digis"; 00160 endcapDigisFound = false; 00161 } 00162 00163 if(endcapDigis->size()==0) 00164 { 00165 edm::LogInfo("EcalPedOffset") << "Size of EEDigiCollection is zero;" 00166 << " not reading endcap digis"; 00167 endcapDigisFound = false; 00168 } 00169 00170 00171 if(barrelDigisFound) 00172 readDACs(barrelDigis, DACvalues); 00173 if(endcapDigisFound) 00174 readDACs(endcapDigis, DACvalues); 00175 if(!barrelDigisFound && !endcapDigisFound) 00176 edm::LogError ("EcalPedOffset") << "No digis found in the event!"; 00177 00178 }
void EcalPedOffset::beginJob | ( | edm::EventSetup const & | eventSetup | ) | [virtual] |
BeginJob.
begin the job
Reimplemented from edm::EDAnalyzer.
Definition at line 91 of file EcalPedOffset.cc.
References ecalElectronicsMap_, edm::EventSetup::get(), LogDebug, and edm::ESHandle< T >::product().
00092 { 00093 LogDebug ("EcalPedOffset") << "entering beginJob..." ; 00094 00095 edm::ESHandle< EcalElectronicsMapping > handle; 00096 eventSetup.get< EcalMappingRcd >().get(handle); 00097 ecalElectronicsMap_ = handle.product(); 00098 00099 }
EndJob.
perform the minimization and write results
Reimplemented from edm::EDAnalyzer.
Definition at line 275 of file EcalPedOffset.cc.
References m_DACmax, m_DACmin, m_dbHostName, m_pedResult, m_pedValues, m_plotting, m_xmlFile, makePlots(), writeDb(), and writeXMLFiles().
00276 { 00277 for (std::map<int,TPedValues*>::const_iterator smPeds = m_pedValues.begin (); 00278 smPeds != m_pedValues.end (); 00279 ++smPeds) 00280 { 00281 m_pedResult[smPeds->first] = 00282 new TPedResult ((smPeds->second)->terminate (m_DACmin, m_DACmax)); 00283 } 00284 edm::LogInfo ("EcalPedOffset") << " results map size " 00285 << m_pedResult.size (); 00286 writeXMLFiles(m_xmlFile); 00287 00288 if (m_plotting != '0') makePlots (); 00289 if (m_dbHostName != '0') writeDb (); 00290 }
string EcalPedOffset::intToString | ( | int | num | ) | [private] |
Definition at line 549 of file EcalPedOffset.cc.
References flush().
Referenced by writeXMLFiles().
00550 { 00551 00552 // outputs the number into the string stream and then flushes 00553 // the buffer (makes sure the output is put into the stream) 00554 ostringstream myStream; 00555 myStream << num << flush; 00556 return(myStream.str()); //returns the string form of the stringstream object 00557 }
void EcalPedOffset::makePlots | ( | ) |
create the plots of the DAC pedestal trend
Definition at line 515 of file EcalPedOffset.cc.
References LogDebug, m_maxChi2OverNDFAllowed_, m_maxSlopeAllowed_, m_minSlopeAllowed_, m_pedValues, and m_plotting.
Referenced by endJob().
00516 { 00517 LogDebug ("EcalPedOffset") << " entering makePlots ..." ; 00518 00519 edm::LogInfo ("EcalPedOffset") << " map size: " 00520 << m_pedValues.size(); 00521 00522 // create the ROOT file 00523 m_plotting+=".root"; 00524 00525 TFile * rootFile = new TFile(m_plotting.c_str(),"RECREATE"); 00526 00527 // loop over the supermodules 00528 for (std::map<int,TPedValues*>::const_iterator smPeds = m_pedValues.begin(); 00529 smPeds != m_pedValues.end(); 00530 ++smPeds) 00531 { 00532 // make a folder in the ROOT file 00533 char folderName[120] ; 00534 sprintf (folderName,"FED%02d",smPeds->first); 00535 rootFile->mkdir(folderName); 00536 smPeds->second->makePlots(rootFile,folderName,m_maxSlopeAllowed_, 00537 m_minSlopeAllowed_,m_maxChi2OverNDFAllowed_); 00538 } 00539 00540 rootFile->Close(); 00541 delete rootFile; 00542 00543 LogDebug ("EcalPedOffset") << " DONE"; 00544 }
void EcalPedOffset::readDACs | ( | edm::Handle< EEDigiCollection > | pDigis, | |
std::map< int, int > | DACvalues | |||
) | [private] |
Definition at line 228 of file EcalPedOffset.cc.
References ecalMGPA::adc(), detId, ecalElectronicsMap_, L1Comparator_cfi::FEDid, ecalMGPA::gainId(), EcalElectronicsMapping::getElectronicsId(), LogDebug, m_bestPed, m_pedValues, m_RMSmax, and EcalDataFrame::MAXSAMPLES.
00230 { 00231 00232 // loop over the digis 00233 for (EEDigiCollection::const_iterator itdigi = pDigis->begin(); 00234 itdigi != pDigis->end(); 00235 ++itdigi) 00236 { 00237 int gainId = ((EEDataFrame)(*itdigi)).sample(0).gainId(); 00238 //int gainId = itdigi->sample(0).gainId(); 00239 EEDetId detId = EEDetId(itdigi->id()); 00240 EcalElectronicsId elecId = ecalElectronicsMap_->getElectronicsId(detId); 00241 int FEDid = 600+elecId.dccId(); 00242 int crystalId = 25*elecId.towerId()+5*elecId.stripId()+elecId.xtalId(); 00243 int endcapCrystalId = 100*elecId.towerId()+5*(elecId.stripId()-1)+elecId.xtalId(); 00244 00245 //TODO: Behavior here 00246 if(DACvalues.find(FEDid)==DACvalues.end()) 00247 { 00248 edm::LogError("EcalPedOffset") 00249 << "Error! EE DCCid of digi does not match any DCCid found in DCC headers: " << FEDid; 00250 } 00251 00252 if (!m_pedValues.count(FEDid)) 00253 { 00254 LogDebug("EcalPedOffset") << "Inserting new TPedValues object for FED:" << FEDid; 00255 m_pedValues[FEDid] = new TPedValues(m_RMSmax,m_bestPed); 00256 } 00257 00258 // loop over the samples 00259 for (int iSample = 0; iSample < EcalDataFrame::MAXSAMPLES; ++iSample) 00260 { 00261 m_pedValues[FEDid]->insert(gainId, 00262 crystalId, 00263 DACvalues[FEDid], 00264 ((EEDataFrame)(*itdigi)).sample(iSample).adc(), 00265 endcapCrystalId); 00266 } 00267 00268 } //end loop over digis 00269 }
void EcalPedOffset::readDACs | ( | edm::Handle< EBDigiCollection > | pDigis, | |
std::map< int, int > | DACvalues | |||
) | [private] |
Definition at line 184 of file EcalPedOffset.cc.
References ecalMGPA::adc(), detId, ecalElectronicsMap_, L1Comparator_cfi::FEDid, ecalMGPA::gainId(), EcalElectronicsMapping::getElectronicsId(), EBDetId::ic(), LogDebug, m_bestPed, m_pedValues, m_RMSmax, and EcalDataFrame::MAXSAMPLES.
Referenced by analyze().
00186 { 00187 00188 // loop over the digis 00189 for (EBDigiCollection::const_iterator itdigi = pDigis->begin(); 00190 itdigi != pDigis->end(); 00191 ++itdigi) 00192 { 00193 int gainId = ((EBDataFrame)(*itdigi)).sample(0).gainId(); 00194 EBDetId detId = EBDetId(itdigi->id()); 00195 EcalElectronicsId elecId = ecalElectronicsMap_->getElectronicsId(detId); 00196 int FEDid = 600+elecId.dccId(); 00197 int crystalId = detId.ic(); 00198 00199 //TODO: Behavior here 00200 if(DACvalues.find(FEDid)==DACvalues.end()) 00201 { 00202 edm::LogError("EcalPedOffset") 00203 << "Error! EB DCCid of digi does not match any DCCid found in DCC headers" << FEDid; 00204 } 00205 00206 if (!m_pedValues.count(FEDid)) 00207 { 00208 LogDebug("EcalPedOffset") << "Inserting new TPedValues object for FED:" << FEDid; 00209 m_pedValues[FEDid] = new TPedValues(m_RMSmax,m_bestPed); 00210 } 00211 00212 // loop over the samples 00213 for (int iSample = 0; iSample < EcalDataFrame::MAXSAMPLES; ++iSample) 00214 { 00215 m_pedValues[FEDid]->insert(gainId, 00216 crystalId, 00217 DACvalues[FEDid], 00218 ((EBDataFrame)(*itdigi)).sample(iSample).adc(), 00219 crystalId); 00220 } 00221 00222 } //end loop over digis 00223 }
void EcalPedOffset::writeDb | ( | ) |
WriteDB.
write the m_pedResult in the DB FIXME divide into sub-tasks
Definition at line 298 of file EcalPedOffset.cc.
References e, EcalCondDBInterface::fetchMonRunIOV(), EcalCondDBInterface::fetchRunIOV(), flush(), EcalCondDBInterface::getEcalLogicID(), RunIOV::getRunTag(), EcalCondDBInterface::insertDataSet(), LogDebug, m_create_moniov, m_dbHostName, m_dbHostPort, m_dbName, m_dbPassword, m_dbUserName, m_location, m_pedResult, m_pedValues, m_run, HLT_VtxMuL3::result, mergeAndRegister_online::run, MonPedestalOffsetsDat::setDACG1(), MonPedestalOffsetsDat::setDACG12(), MonPedestalOffsetsDat::setDACG6(), RunTag::setGeneralTag(), MonRunTag::setGeneralTag(), LocationDef::setLocation(), RunTag::setLocationDef(), MonVersionDef::setMonitoringVersion(), MonRunIOV::setMonRunTag(), MonRunTag::setMonVersionDef(), MonRunIOV::setRunIOV(), RunTypeDef::setRunType(), RunTag::setRunTypeDef(), MonRunIOV::setSubRunNumber(), MonRunIOV::setSubRunStart(), MonPedestalOffsetsDat::setTaskStatus(), and Tm::setToCurrentGMTime().
Referenced by endJob().
00299 { 00300 LogDebug ("EcalPedOffset") << " entering writeDb ..." ; 00301 00302 // connect to the database 00303 EcalCondDBInterface* DBconnection ; 00304 try 00305 { 00306 LogInfo("EcalPedOffset") << "Opening DB connection with TNS_ADMIN ..."; 00307 DBconnection = new EcalCondDBInterface(m_dbName, m_dbUserName, m_dbPassword); 00308 } catch (runtime_error &e) { 00309 LogError("EcalPedOffset") << e.what(); 00310 if ( m_dbHostName.size() != 0 ) 00311 { 00312 try 00313 { 00314 LogInfo("EcalPedOffset") << "Opening DB connection without TNS_ADMIN ..."; 00315 DBconnection = new EcalCondDBInterface(m_dbHostName, m_dbName, 00316 m_dbUserName, m_dbPassword, m_dbHostPort); 00317 } catch (runtime_error &e) { 00318 LogError("EcalPedOffset") << e.what(); 00319 return; 00320 } 00321 } 00322 else 00323 return; 00324 } 00325 00326 // define the query for RunIOV to get the right place in the database 00327 RunTag runtag ; 00328 LocationDef locdef ; 00329 RunTypeDef rundef ; 00330 locdef.setLocation (m_location); 00331 00332 runtag.setGeneralTag ("PEDESTAL-OFFSET"); 00333 rundef.setRunType ("PEDESTAL-OFFSET"); 00334 //rundef.setRunType ("TEST"); 00335 //runtag.setGeneralTag ("TEST"); 00336 00337 runtag.setLocationDef (locdef); 00338 runtag.setRunTypeDef (rundef); 00339 00340 00341 run_t run = m_run ; //FIXME dal config file 00342 //RunIOV runiov = DBconnection->fetchRunIOV (&runtag, run); 00343 RunIOV runiov = DBconnection->fetchRunIOV(m_location, run); 00344 00345 // MonRunIOV 00346 MonVersionDef monverdef ; 00347 monverdef.setMonitoringVersion ("test01"); 00348 MonRunTag montag ; 00349 montag.setMonVersionDef (monverdef); 00350 montag.setGeneralTag ("CMSSW"); 00351 00352 subrun_t subrun = 1 ; //hardcoded! 00353 00354 MonRunIOV moniov ; 00355 00356 try{ 00357 runtag = runiov.getRunTag(); 00358 moniov = DBconnection->fetchMonRunIOV(&runtag, &montag, run, subrun); 00359 } 00360 catch (runtime_error &e) { 00361 if(m_create_moniov){ 00362 //if not already in the DB create a new MonRunIOV 00363 Tm startSubRun; 00364 startSubRun.setToCurrentGMTime(); 00365 // setup the MonIOV 00366 moniov.setRunIOV(runiov); 00367 moniov.setSubRunNumber(subrun); 00368 moniov.setSubRunStart(startSubRun); 00369 moniov.setMonRunTag(montag); 00370 LogDebug ("EcalPedOffset") <<" creating a new MonRunIOV" ; 00371 } 00372 else{ 00373 edm::LogError ("EcalPedOffset") << " no MonRunIOV existing in the DB" ; 00374 edm::LogError ("EcalPedOffset") << " the result will not be stored into the DB" ; 00375 if ( DBconnection ) {delete DBconnection;} 00376 return; 00377 } 00378 } 00379 00380 // create the table to be filled and the map to be inserted 00381 EcalLogicID ecid ; 00382 map<EcalLogicID, MonPedestalOffsetsDat> DBdataset ; 00383 MonPedestalOffsetsDat DBtable ; 00384 00385 // fill the table 00386 00387 // loop over the super-modules 00388 for (std::map<int,TPedResult*>::const_iterator result = m_pedResult.begin (); 00389 result != m_pedResult.end (); 00390 ++result) 00391 { 00392 // loop over the crystals 00393 for (int xtal = 0 ; xtal<1700 ; ++xtal) 00394 { 00395 DBtable.setDACG1 (result->second->m_DACvalue[2][xtal]); 00396 DBtable.setDACG6 (result->second->m_DACvalue[1][xtal]); 00397 DBtable.setDACG12 (result->second->m_DACvalue[0][xtal]); 00398 DBtable.setTaskStatus (1); //FIXME to be set correctly 00399 00400 // fill the table 00401 if ( DBconnection ) 00402 { 00403 try 00404 { 00405 int fedid = result->first; 00406 int eid = m_pedValues[fedid]->getCrystalNumber(xtal); 00407 // If eid is zero, that crystal was not present in digis 00408 if(eid==0) 00409 continue; 00410 00411 if (fedid >= 601 && fedid <= 609) 00412 { 00413 // Add the FEDid part in for DB 00414 eid = eid+10000*(fedid-600); 00415 ecid = DBconnection->getEcalLogicID("EE_elec_crystal_number", eid); 00416 } 00417 else if (fedid >= 610 && fedid <= 627) 00418 { 00419 ecid = DBconnection->getEcalLogicID("EB_crystal_number", fedid-610+19, 00420 eid); 00421 } 00422 else if (fedid >= 628 && fedid <= 645) 00423 { 00424 ecid = DBconnection->getEcalLogicID("EB_crystal_number", fedid-628+1, 00425 eid); 00426 } 00427 else if (fedid >= 646 && fedid <= 654) 00428 { 00429 // Add the FEDid part in for DB 00430 eid = eid+10000*(fedid-600); 00431 ecid = DBconnection->getEcalLogicID("EE_elec_crystal_number", eid); 00432 } 00433 else 00434 LogError("EcalPedOffset") << "FEDid is out of range 601-654"; 00435 00436 DBdataset[ecid] = DBtable ; 00437 } catch (runtime_error &e) { 00438 edm::LogError ("EcalPedOffset") << e.what(); 00439 } 00440 } 00441 } // loop over the crystals 00442 } // loop over the super-modules 00443 00444 // insert the map of tables in the database 00445 if ( DBconnection ) { 00446 try { 00447 LogDebug ("EcalPedOffset") << "Inserting dataset ... " << flush; 00448 if ( DBdataset.size() != 0 ) DBconnection->insertDataSet (&DBdataset, &moniov); 00449 LogDebug ("EcalPedOffset") << "done." ; 00450 } catch (runtime_error &e) { 00451 edm::LogError ("EcalPedOffset") << e.what (); 00452 } 00453 } 00454 00455 if ( DBconnection ) {delete DBconnection;} 00456 }
void EcalPedOffset::writeXMLFiles | ( | std::string | fileName | ) |
write the results into xml format
write the m_pedResults to XML files
Definition at line 463 of file EcalPedOffset.cc.
References lat::endl(), intToString(), m_pedResult, and m_pedValues.
Referenced by endJob().
00464 { 00465 // loop over the super-modules 00466 for (std::map<int,TPedResult*>::const_iterator smRes = m_pedResult.begin(); 00467 smRes != m_pedResult.end(); 00468 ++smRes) 00469 { 00470 string thisSMFileName = fileName; 00471 // open the output stream 00472 thisSMFileName+="_"; 00473 thisSMFileName+=intToString(smRes->first); 00474 thisSMFileName+=".xml"; 00475 std::ofstream xml_outfile; 00476 xml_outfile.open(thisSMFileName.c_str()); 00477 00478 // write the header file 00479 xml_outfile<<"<offsets>"<<std::endl; 00480 xml_outfile << "<PEDESTAL_OFFSET_RELEASE VERSION_ID = \"SM1_VER1\"> \n"; 00481 xml_outfile << " <RELEASE_ID>RELEASE_1</RELEASE_ID>\n"; 00482 xml_outfile << " <SUPERMODULE>"; 00483 xml_outfile << smRes->first; 00484 xml_outfile << "</SUPERMODULE>\n"; 00485 xml_outfile << " <TIME_STAMP> 070705 </TIME_STAMP>" << std::endl; 00486 00487 // loop over the crystals 00488 for (int xtal = 0 ; xtal < 1700 ; ++xtal) 00489 { 00490 int crystalNumber = m_pedValues[smRes->first]->getCrystalNumber(xtal); 00491 if(crystalNumber==0) 00492 continue; 00493 xml_outfile << " <PEDESTAL_OFFSET>\n"; 00494 xml_outfile << " <HIGH>" << ((smRes->second)->m_DACvalue)[0][xtal] << "</HIGH>\n"; 00495 xml_outfile << " <MED>" << ((smRes->second)->m_DACvalue)[1][xtal] << "</MED>\n"; 00496 xml_outfile << " <LOW>" << ((smRes->second)->m_DACvalue)[2][xtal] << "</LOW>\n"; 00497 xml_outfile << " <CRYSTAL> "<< crystalNumber << " </CRYSTAL>\n"; 00498 xml_outfile << " </PEDESTAL_OFFSET>" << std::endl; 00499 } 00500 00501 // close the open tags 00502 xml_outfile << " </PEDESTAL_OFFSET_RELEASE>" << std::endl; 00503 xml_outfile << "</offsets>" << std::endl; 00504 xml_outfile.close (); 00505 } // loop over the super-modules 00506 00507 00508 }
const EcalElectronicsMapping* EcalPedOffset::ecalElectronicsMap_ [private] |
secondary name given to collection of digis
Definition at line 68 of file EcalPedOffset.h.
Referenced by analyze().
int EcalPedOffset::m_bestPed [private] |
bool EcalPedOffset::m_create_moniov [private] |
allow the creation of a new moniov if not existing in the DB by default it is false.
Definition at line 94 of file EcalPedOffset.h.
Referenced by writeDb().
int EcalPedOffset::m_DACmax [private] |
int EcalPedOffset::m_DACmin [private] |
std::string EcalPedOffset::m_dbHostName [private] |
int EcalPedOffset::m_dbHostPort [private] |
std::string EcalPedOffset::m_dbName [private] |
std::string EcalPedOffset::m_dbPassword [private] |
std::string EcalPedOffset::m_dbUserName [private] |
secondary name given to collection of digis
Definition at line 69 of file EcalPedOffset.h.
Referenced by analyze().
name of module/plugin/producer making headers
Definition at line 70 of file EcalPedOffset.h.
Referenced by analyze().
std::string EcalPedOffset::m_location [private] |
double EcalPedOffset::m_maxChi2OverNDFAllowed_ [private] |
max chi2/ndf allowed for linearity test
Definition at line 107 of file EcalPedOffset.h.
Referenced by makePlots().
double EcalPedOffset::m_maxSlopeAllowed_ [private] |
max slope (in magnitude) allowed for linearity test
Definition at line 103 of file EcalPedOffset.h.
Referenced by makePlots().
double EcalPedOffset::m_minSlopeAllowed_ [private] |
min slope (in magnitude) allowed for linearity test
Definition at line 105 of file EcalPedOffset.h.
Referenced by makePlots().
std::map<int,TPedResult*> EcalPedOffset::m_pedResult [private] |
Definition at line 75 of file EcalPedOffset.h.
Referenced by endJob(), writeDb(), writeXMLFiles(), and ~EcalPedOffset().
std::map<int,TPedValues*> EcalPedOffset::m_pedValues [private] |
Definition at line 74 of file EcalPedOffset.h.
Referenced by endJob(), makePlots(), readDACs(), writeDb(), writeXMLFiles(), and ~EcalPedOffset().
std::string EcalPedOffset::m_plotting [private] |
the root file where to store the detail plots
Definition at line 101 of file EcalPedOffset.h.
Referenced by endJob(), and makePlots().
double EcalPedOffset::m_RMSmax [private] |
int EcalPedOffset::m_run [private] |
std::string EcalPedOffset::m_xmlFile [private] |
name of the xml file to be saved
Definition at line 72 of file EcalPedOffset.h.
Referenced by endJob().