CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
SiStripPopConHandlerUnitTestNoise.h
Go to the documentation of this file.
1 #ifndef SISTRIPPOPCON_UNITTEST_HANDLER_NOISE_H
2 #define SISTRIPPOPCON_UNITTEST_HANDLER_NOISE_H
3 
9 
13 
17 
18 #include <sstream>
19 #include <vector>
20 #include <string>
21 #include <iostream>
22 #include <typeinfo>
23 #include <time.h>
24 
25 #include "CLHEP/Random/RandFlat.h"
26 #include "CLHEP/Random/RandGauss.h"
27 
31 
32 
33 namespace popcon{
34 
35  template <typename T>
37  public:
38 
40 
41  //---------------------------------------
42  //
44  m_name(pset.getUntrackedParameter<std::string>("name","SiStripPopPopConConfigDbObjHandler")),
45  m_since(pset.getUntrackedParameter<uint32_t>("since",5)),
46  m_debugMode(pset.getUntrackedParameter<bool>("debug",false)){};
47 
48  //---------------------------------------
49  //
51 
52  //---------------------------------------
53  //
54  void getNewObjects(){
55  edm::LogInfo ("SiStripPopPopConConfigDbObjHandler") << "[getNewObjects] for PopCon application " << m_name;
56 
57  if (m_debugMode){
58  std::stringstream ss;
59  ss << "\n\n------- " << m_name
60  << " - > getNewObjects\n";
61  if (this->tagInfo().size){
62  //check whats already inside of database
63  ss << "got offlineInfo"<<
64  this->tagInfo().name << ", size " << this->tagInfo().size << " " << this->tagInfo().token
65  << " , last object valid since "
66  << this->tagInfo().lastInterval.first << " token "
67  << this->tagInfo().lastPayloadToken << "\n\n UserText " << this->userTextLog()
68  << "\n LogDBEntry \n"
69  << this->logDBEntry().logId<< "\n"
70  << this->logDBEntry().destinationDB<< "\n"
71  << this->logDBEntry().provenance<< "\n"
72  << this->logDBEntry().usertext<< "\n"
73  << this->logDBEntry().iovtag<< "\n"
74  << this->logDBEntry().iovtimetype<< "\n"
75  << this->logDBEntry().payloadIdx<< "\n"
76  << this->logDBEntry().payloadName<< "\n"
77  << this->logDBEntry().payloadToken<< "\n"
78  << this->logDBEntry().payloadContainer<< "\n"
79  << this->logDBEntry().exectime<< "\n"
80  << this->logDBEntry().execmessage<< "\n"
81  << "\n\n-- user text " << this->logDBEntry().usertext.substr(this->logDBEntry().usertext.find_last_of("@")) ;
82  } else {
83  ss << " First object for this tag ";
84  }
85  edm::LogInfo ("SiStripPopPopConConfigDbObjHandler") << ss.str();
86  }
87  if (isTransferNeeded())
89 
90  edm::LogInfo ("SiStripPopPopConConfigDbObjHandler") << "[getNewObjects] for PopCon application " << m_name << " Done\n--------------\n";
91  }
92 
93 
94  //---------------------------------------
95  //
96  std::string id() const { return m_name;}
97 
98  private:
99  //methods
100 
102 
103  if(typeid(T)==typeid(SiStripFedCabling)){
104  edm::LogInfo ("SiStripPopPopConConfigDbObjHandler") << "[getDataType] for PopCon application " << m_name << " " << typeid(T).name();
105  return _Cabling;
106  }
107  return UNDEFINED;
108  }
109 
110 
111 
112  //---------------------------------------
113  //
115 
116 
117  edm::LogInfo ("SiStripPopPopConConfigDbObjHandler") << "[isTransferNeeded] checking for transfer" << std::endl;
118  std::stringstream ss_logdb, ss;
119  std::stringstream ss1;
120 
121  //get log information from previous upload
122  if (this->tagInfo().size)
123  ss_logdb << this->logDBEntry().usertext.substr(this->logDBEntry().usertext.find_last_of("@"));
124  else
125  ss_logdb << "";
126 
127  ss << "@ " << clock() ;
128 
129  if (!strcmp(ss.str().c_str(),ss_logdb.str().c_str())){
130  //string are equal, no need to do transfer
131  edm::LogInfo ("SiStripPopPopConConfigDbObjHandler")
132  << "[isTransferNeeded] the selected conditions are already uploaded in the last iov ("
133  << this->tagInfo().lastInterval.first << ") open for the object "
134  << this->logDBEntry().payloadName << " in the db "
135  << this->logDBEntry().destinationDB << " parameters: " << ss.str() << "\n NO TRANSFER NEEDED";
136  return false;
137  }
138  this->m_userTextLog = ss.str();
139  edm::LogInfo ("SiStripPopPopConConfigDbObjHandler")
140  << "[isTransferNeeded] the selected conditions will be uploaded: " << ss.str()
141  << "\n A- "<< ss.str() << "\n B- " << ss_logdb.str() << "\n Fine";
142 
143  return true;
144  }
145 
146 
147  //---------------------------------------
148  //
150  edm::LogInfo ("SiStripPopPopConConfigDbObjHandler") << "[setForTransfer] " << m_name << " getting data to be transferred " << std::endl;
151 
152  T *obj=0;
153 
154  fillObject(obj);
155 
156  if(!this->tagInfo().size)
157  m_since=1;
158  else
159  if (m_debugMode)
160  m_since=this->tagInfo().lastInterval.first+1;
161 
162  if (obj!=0){
163 
164  edm::LogInfo ("SiStripPopPopConConfigDbObjHandler") <<"setting since = "<< m_since <<std::endl;
165  this->m_to_transfer.push_back(std::make_pair(obj,m_since));
166  }else{
167  edm::LogError ("SiStripPopPopConConfigDbObjHandler") <<"[setForTransfer] " << m_name << " : NULL pointer of obj " << typeid(T).name() << " reported by SiStripCondObjBuilderFromDb\n Transfer aborted"<<std::endl;
168  }
169  }
170 
171  private:
172  // data members
173  std::string m_name;
174  unsigned long long m_since;
177 
178 
179  void fillObject(T*& obj){
180 
181 
182  if(typeid(T)==typeid(SiStripNoises)){
183 
184 
185  obj = new SiStripNoises();
186 
187  edm::FileInPath fp_("CalibTracker/SiStripCommon/data/SiStripDetInfo.dat");
188  SiStripDetInfoFileReader reader(fp_.fullPath());
189 
190  const std::map<uint32_t, SiStripDetInfoFileReader::DetInfo > DetInfos = reader.getAllData();
191 
192  int count=-1;
193  for(std::map<uint32_t, SiStripDetInfoFileReader::DetInfo >::const_iterator it = DetInfos.begin(); it != DetInfos.end(); it++){
194  count++;
195  //Generate Noise for det detid
196  SiStripNoises::InputVector theSiStripVector;
197  for(int strip=0; strip<128*it->second.nApvs; ++strip){
198 
199  float MeanNoise = 5;
200  float RmsNoise = 1;
201 
202  float noise = CLHEP::RandGauss::shoot(MeanNoise,RmsNoise);
203 
204  //double badStripProb = .5;
205  //bool disable = (CLHEP::RandFlat::shoot(1.) < badStripProb ? true:false);
206 
207  obj->setData(noise,theSiStripVector);
208  if (count<6)
209  edm::LogInfo("SiStripNoisesBuilder") << "detid " << it->first << " \t"
210  << " strip " << strip << " \t"
211  << noise << " \t"
212  << theSiStripVector.back()/10 << " \t"
213  << std::endl;
214  }
215 
216  if ( ! obj->put(it->first,theSiStripVector) )
217  edm::LogError("SiStripNoisesBuilder")<<"[SiStripNoisesBuilder::analyze] detid already exists"<<std::endl;
218  }
219  }
220  }
221  };
222 
223 }
224 
225 
226 
227 
228 #endif //SISTRIPPOPCON_UNITTEST_HANDLER_H
std::string exectime
Definition: LogDBEntry.h:18
std::string usertext
Definition: LogDBEntry.h:10
std::string iovtimetype
Definition: LogDBEntry.h:12
std::string const & userTextLog() const
void strip(std::string &input, const std::string &blanks=" \n\t")
Definition: stringTools.cc:16
unsigned int payloadIdx
Definition: LogDBEntry.h:13
std::string payloadToken
Definition: LogDBEntry.h:16
unsigned long long logId
Definition: LogDBEntry.h:7
std::vector< uint16_t > InputVector
Definition: SiStripNoises.h:44
edm::Service< SiStripCondObjBuilderFromDb > condObjBuilder
std::string payloadName
Definition: LogDBEntry.h:15
std::string destinationDB
Definition: LogDBEntry.h:8
std::string lastPayloadToken
Definition: TagInfo.h:12
cond::TagInfo const & tagInfo() const
std::string name
Definition: TagInfo.h:9
cond::LogDBEntry const & logDBEntry() const
const std::map< uint32_t, DetInfo > & getAllData() const
tuple obj
Example code starts here #.
Definition: VarParsing.py:655
std::string execmessage
Definition: LogDBEntry.h:19
size_t size
Definition: TagInfo.h:13
SiStripPopConHandlerUnitTestNoise(const edm::ParameterSet &pset)
std::string payloadContainer
Definition: LogDBEntry.h:17
std::string token
Definition: TagInfo.h:10
std::string provenance
Definition: LogDBEntry.h:9
Contains cabling info at the device level, including DetId, APV pair numbers, hardware addresses...
cond::ValidityInterval lastInterval
Definition: TagInfo.h:11
std::string fullPath() const
Definition: FileInPath.cc:170
long double T
std::string iovtag
Definition: LogDBEntry.h:11
tuple size
Write out results.