CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
List of all members | Public Member Functions | Public Attributes | Private Attributes
popcon::EcalIntercalibHandler Class Reference

#include <EcalIntercalibHandler.h>

Inheritance diagram for popcon::EcalIntercalibHandler:
popcon::PopConSourceHandler< EcalIntercalibConstants >

Public Member Functions

 EcalIntercalibHandler (edm::ParameterSet const &)
 
void getNewObjects ()
 
std::string id () const
 
 ~EcalIntercalibHandler ()
 
- Public Member Functions inherited from popcon::PopConSourceHandler< EcalIntercalibConstants >
void convertFromOld ()
 
SummarydummySummary (typename OldContainer::value_type const &) const
 
void initialize (cond::DbSession dbSession, cond::TagInfo const &tagInfo, cond::LogDBEntry const &logDBEntry)
 
Ref lastPayload () const
 
cond::LogDBEntry const & logDBEntry () const
 
std::pair< Container const
*, std::string const > 
operator() (cond::DbSession session, cond::TagInfo const &tagInfo, cond::LogDBEntry const &logDBEntry) const
 
 PopConSourceHandler ()
 
Container const & returnData ()
 
void sort ()
 
cond::TagInfo const & tagInfo () const
 
std::string const & userTextLog () const
 
virtual ~PopConSourceHandler ()
 

Public Attributes

EcalCondDBInterfaceeconn
 

Private Attributes

std::string m_file_highfield
 
std::string m_file_lowfield
 
unsigned int m_firstRun
 
std::string m_gentag
 
unsigned int m_lastRun
 
std::string m_location
 
std::string m_locationsource
 
std::string m_name
 
std::string m_pass
 
std::string m_sid
 
std::string m_user
 
const EcalIntercalibConstantsmyintercalib
 

Additional Inherited Members

- Public Types inherited from popcon::PopConSourceHandler< EcalIntercalibConstants >
typedef std::vector< TripletContainer
 
typedef std::vector< std::pair
< EcalIntercalibConstants
*, cond::Time_t > > 
OldContainer
 
typedef PopConSourceHandler
< EcalIntercalibConstants
self
 
typedef cond::Summary Summary
 
typedef cond::Time_t Time_t
 
typedef EcalIntercalibConstants value_type
 
- Protected Member Functions inherited from popcon::PopConSourceHandler< EcalIntercalibConstants >
int add (value_type *payload, Summary *summary, Time_t time)
 
- Protected Attributes inherited from popcon::PopConSourceHandler< EcalIntercalibConstants >
OldContainer m_to_transfer
 
std::string m_userTextLog
 

Detailed Description

Definition at line 56 of file EcalIntercalibHandler.h.

Constructor & Destructor Documentation

popcon::EcalIntercalibHandler::EcalIntercalibHandler ( edm::ParameterSet const &  ps)

Definition at line 9 of file EcalIntercalibHandler.cc.

References gather_cfg::cout, edm::ParameterSet::getParameter(), m_file_highfield, m_file_lowfield, m_firstRun, m_gentag, m_lastRun, m_location, m_locationsource, m_pass, m_sid, and m_user.

10  : m_name(ps.getUntrackedParameter<std::string>("name","EcalIntercalibHandler")) {
11 
12  std::cout << "EcalIntercalib Source handler constructor\n" << std::endl;
13  m_firstRun=static_cast<unsigned int>(atoi( ps.getParameter<std::string>("firstRun").c_str()));
14  m_lastRun=static_cast<unsigned int>(atoi( ps.getParameter<std::string>("lastRun").c_str()));
15  m_sid= ps.getParameter<std::string>("OnlineDBSID");
16  m_user= ps.getParameter<std::string>("OnlineDBUser");
17  m_pass= ps.getParameter<std::string>("OnlineDBPassword");
18  m_locationsource= ps.getParameter<std::string>("LocationSource");
19  m_location=ps.getParameter<std::string>("Location");
20  m_gentag=ps.getParameter<std::string>("GenTag");
21  m_file_lowfield= ps.getParameter<std::string>("FileLowField");
22  m_file_highfield= ps.getParameter<std::string>("FileHighField");
23 
24 
25 
26  std::cout << m_sid<<"/"<<m_user<<"/"<<m_location<<"/"<<m_gentag << std::endl;
27 
28 
29 }
tuple cout
Definition: gather_cfg.py:41
popcon::EcalIntercalibHandler::~EcalIntercalibHandler ( )

Definition at line 31 of file EcalIntercalibHandler.cc.

32 {
33 }

Member Function Documentation

void popcon::EcalIntercalibHandler::getNewObjects ( )
virtual

Implements popcon::PopConSourceHandler< EcalIntercalibConstants >.

Definition at line 36 of file EcalIntercalibHandler.cc.

References gather_cfg::cout, BeamSplash_cfg::dataset, edm::hlt::Exception, RunDCSMagnetDat::getMagnetCurrent(), RunIOV::getRunNumber(), DetId::rawId(), EcalFloatCondObjectContainerXMLTranslator::readXML(), and EEDetId::validDetId().

37 {
38 
39  std::cout << "------- Ecal - > getNewObjects\n";
40 
41  std::ostringstream ss;
42  ss<<"ECAL ";
43 
44  unsigned int max_since=0;
45  max_since=static_cast<unsigned int>(tagInfo().lastInterval.first);
46  std::cout << "max_since : " << max_since << std::endl;
47  Ref ped_db = lastPayload();
48 
49  // we parse the last record in the DB and check if it is low or high field
50 
51  std::cout << "retrieved last payload " << std::endl;
52 
53 
54  EcalIntercalibConstant the_cal = 0.;
55 
56  int iX=50;
57  int iY=5;
58  int iZ=-1;
59  float the_value_high=0.75585;
60 
61  if (EEDetId::validDetId(iX,iY,iZ))
62  {
63  EEDetId eedetidpos(iX,iY,iZ);
64 
65  EcalIntercalibConstants::const_iterator it =ped_db->find(eedetidpos.rawId());
66 
67 
68  the_cal = (*it);
69 
70  }
71 
72  bool magnet_high=true;
73  if(the_cal!= the_value_high) magnet_high=false;
74 
75 
76  // here we connect to the online DB to check the value of the magnetic field
77 
78  std::cout << "Connecting to ONLINE DB ... " << std::endl;
80  std::cout << "Connection done" << std::endl;
81 
82  if (!econn)
83  {
84  std::cout << " Problem with OMDS: connection parameters " <<m_sid <<"/"<<m_user<<"/"<<m_pass<<std::endl;
85  throw cms::Exception("OMDS not available");
86  }
87 
88 
89  std::cout << "Retrieving last run from ONLINE DB ... " << std::endl;
90  std::map<EcalLogicID, RunDat> rundat;
91  RunIOV rp ;
92  run_t runmax=10000000;
93  std::string location_p5="P5_Co";
94  econn->fetchValidDataSet(&rundat , &rp, location_p5 ,runmax);
95 
96  unsigned long long irun=(unsigned long long) rp.getRunNumber();
97 
98  std::cout<< "retrieved run number "<< irun <<std::endl;
99 
100  if(irun>max_since) {
101 
102 
103  // retrieve from last value data record
104  // always call this method at first run
105 
106  std::map<EcalLogicID, RunDCSMagnetDat> dataset;
107 
108  econn->fetchDataSet(&dataset, &rp);
109 
110  if (!dataset.size()) {
111  throw(std::runtime_error("Zero rows read back"));
112  } else {
113  std::cout<< "retrieved magnet current"<<std::endl;
114  }
115 
116 
117  float mag_cur=0;
118 
119  std::map< EcalLogicID, RunDCSMagnetDat >::iterator it;
120  for (it=dataset.begin(); it!=dataset.end(); ++it){
121 
122  RunDCSMagnetDat a_mag = (*it).second;
123  mag_cur= a_mag.getMagnetCurrent();
124 
125  }
126 
127 
128  std::string file_=m_file_highfield;
129  bool something_to_transfer=false;
130  if(mag_cur>5000. && magnet_high ) {
131 
132  std::cout << " the magnet is ON and the constants are for magnet ON " << std::endl;
133 
134  } else if(mag_cur>5000. && !magnet_high ) {
135  something_to_transfer=true;
136  std::cout << " the magnet is ON and the constants are for magnet OFF " << std::endl;
137  std::cout << " I transfer the ON constants "<< std::endl;
138  file_=m_file_highfield;
139 
140  } else if(mag_cur<3000. && magnet_high ) {
141  something_to_transfer=true;
142  std::cout << " the magnet is OFF and the constants are for magnet ON "<< std::endl;
143  std::cout << " I transfer the OFF constants "<< std::endl;
144  file_=m_file_lowfield;
145 
146  } else if( mag_cur<3000. && !magnet_high ){
147 
148  std::cout << " the magnet is OFF and the constants are for magnet OFF "<< std::endl;
149  file_=m_file_lowfield;
150 
151  } else {
152 
153  std::cout << " the magnet is in a strange situation I do nothing ... just be patient "<< std::endl;
154 
155  }
156 
157 
158  if(something_to_transfer){
159 
160  std::cout << "Generating popcon record for run " << irun << "..." << std::flush;
161  std::cout << "going to open file "<<file_ << std::flush;
162 
163 
164  EcalCondHeader header;
167 
168 
169  Time_t snc= (Time_t) irun ;
170 
172  std::make_pair(payload,snc));
173 
174  ss << "Run=" << irun << "_Magnet_changed_"<<std::endl;
175  m_userTextLog = ss.str()+";";
176 
177 
178  } else {
179  std::cout << "Run " << irun << " nothing sent to the DB"<< std::endl;
180 
181  ss<< "Run=" << irun << "_Magnet_NOT_changed_"<<std::endl;
182  m_userTextLog = ss.str()+";";
183  }
184 
185 
186  delete econn;
187  } else {
188  std::cout << "Run " << irun << " nothing sent to the DB"<< std::endl;
189  ss<< "Run=" << irun << "_no_new_runs_"<<std::endl;
190  m_userTextLog = ss.str()+";";
191 
192 
193  }
194 
195 
196 
197  std::cout << "Ecal - > end of getNewObjects -----------\n";
198 
199 }
int run_t
Definition: CaliIOV.h:11
void fetchValidDataSet(std::map< EcalLogicID, DATT > *fillMap, IOVT *fillIOV, RunTag *tag, run_t run=(unsigned int)-1)
static bool validDetId(int crystal_ix, int crystal_iy, int iz)
Definition: EEDetId.cc:562
static int readXML(const std::string &filename, EcalCondHeader &header, EcalFloatCondObjectContainer &record)
float getMagnetCurrent() const
void fetchDataSet(std::map< EcalLogicID, DATT > *fillMap, IOVT *iov)
std::vector< Item >::const_iterator const_iterator
run_t getRunNumber() const
Definition: RunIOV.cc:45
EcalIntercalibConstantMap EcalIntercalibConstants
cond::ValidityInterval lastInterval
Definition: TagInfo.h:11
tuple cout
Definition: gather_cfg.py:41
Definition: RunIOV.h:13
float EcalIntercalibConstant
std::string popcon::EcalIntercalibHandler::id ( void  ) const
inlinevirtual

Implements popcon::PopConSourceHandler< EcalIntercalibConstants >.

Definition at line 65 of file EcalIntercalibHandler.h.

References m_name.

65 { return m_name;}

Member Data Documentation

EcalCondDBInterface* popcon::EcalIntercalibHandler::econn

Definition at line 66 of file EcalIntercalibHandler.h.

std::string popcon::EcalIntercalibHandler::m_file_highfield
private

Definition at line 84 of file EcalIntercalibHandler.h.

Referenced by EcalIntercalibHandler().

std::string popcon::EcalIntercalibHandler::m_file_lowfield
private

Definition at line 83 of file EcalIntercalibHandler.h.

Referenced by EcalIntercalibHandler().

unsigned int popcon::EcalIntercalibHandler::m_firstRun
private

Definition at line 73 of file EcalIntercalibHandler.h.

Referenced by EcalIntercalibHandler().

std::string popcon::EcalIntercalibHandler::m_gentag
private

Definition at line 77 of file EcalIntercalibHandler.h.

Referenced by EcalIntercalibHandler().

unsigned int popcon::EcalIntercalibHandler::m_lastRun
private

Definition at line 74 of file EcalIntercalibHandler.h.

Referenced by EcalIntercalibHandler().

std::string popcon::EcalIntercalibHandler::m_location
private

Definition at line 76 of file EcalIntercalibHandler.h.

Referenced by EcalIntercalibHandler().

std::string popcon::EcalIntercalibHandler::m_locationsource
private

Definition at line 81 of file EcalIntercalibHandler.h.

Referenced by EcalIntercalibHandler().

std::string popcon::EcalIntercalibHandler::m_name
private

Definition at line 82 of file EcalIntercalibHandler.h.

Referenced by id().

std::string popcon::EcalIntercalibHandler::m_pass
private

Definition at line 80 of file EcalIntercalibHandler.h.

Referenced by EcalIntercalibHandler().

std::string popcon::EcalIntercalibHandler::m_sid
private

Definition at line 78 of file EcalIntercalibHandler.h.

Referenced by EcalIntercalibHandler().

std::string popcon::EcalIntercalibHandler::m_user
private

Definition at line 79 of file EcalIntercalibHandler.h.

Referenced by EcalIntercalibHandler().

const EcalIntercalibConstants* popcon::EcalIntercalibHandler::myintercalib
private

Definition at line 71 of file EcalIntercalibHandler.h.