CMS 3D CMS Logo

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

#include <AlcaBeamSpotManager.h>

Public Types

typedef std::map
< edm::LuminosityBlockNumber_t,
reco::BeamSpot >::iterator 
bsMap_iterator
 

Public Member Functions

 AlcaBeamSpotManager (void)
 
 AlcaBeamSpotManager (const edm::ParameterSet &, edm::ConsumesCollector &&)
 
void createWeightedPayloads (void)
 
const std::map
< edm::LuminosityBlockNumber_t,
reco::BeamSpot > & 
getPayloads (void)
 
void readLumi (const edm::LuminosityBlock &)
 
void reset (void)
 
virtual ~AlcaBeamSpotManager (void)
 

Private Member Functions

std::pair< float, float > delta (const float &x, const float &xError, const float &nextX, const float &nextXError)
 
float deltaSig (const float &num, const float &den)
 
reco::BeamSpot weight (const bsMap_iterator &begin, const bsMap_iterator &end)
 
void weight (double &mean, double &meanError, const double &val, const double &valError)
 

Private Attributes

std::string beamSpotLabel_
 
std::map
< edm::LuminosityBlockNumber_t,
reco::BeamSpot
beamSpotMap_
 
std::string beamSpotModuleName_
 
std::string beamSpotOutputBase_
 
edm::InputTag beamSpotTag_
 
edm::EDGetTokenT< reco::BeamSpotbeamSpotToken_
 

Detailed Description

No description available.

Author
L. Uplegger F. Yumiceva - Fermilab

Definition at line 20 of file AlcaBeamSpotManager.h.

Member Typedef Documentation

Definition at line 31 of file AlcaBeamSpotManager.h.

Constructor & Destructor Documentation

AlcaBeamSpotManager::AlcaBeamSpotManager ( void  )

Definition at line 20 of file AlcaBeamSpotManager.cc.

20  {
21 }
AlcaBeamSpotManager::AlcaBeamSpotManager ( const edm::ParameterSet iConfig,
edm::ConsumesCollector &&  iC 
)

Definition at line 24 of file AlcaBeamSpotManager.cc.

References align::BeamSpot, beamSpotLabel_, beamSpotModuleName_, beamSpotOutputBase_, beamSpotTag_, beamSpotToken_, edm::InLumi, and reset().

24  :
25  beamSpotOutputBase_(iConfig.getParameter<ParameterSet>("AlcaBeamSpotHarvesterParameters").getUntrackedParameter<std::string>("BeamSpotOutputBase")),
26  beamSpotModuleName_(iConfig.getParameter<ParameterSet>("AlcaBeamSpotHarvesterParameters").getUntrackedParameter<std::string>("BeamSpotModuleName")),
27  beamSpotLabel_ (iConfig.getParameter<ParameterSet>("AlcaBeamSpotHarvesterParameters").getUntrackedParameter<std::string>("BeamSpotLabel"))
28 {
31  LogInfo("AlcaBeamSpotManager")
32  << "Output base: " << beamSpotOutputBase_
33  << std::endl;
34  reset();
35 }
EDGetTokenT< ProductType > consumes(edm::InputTag const &tag)
T getParameter(std::string const &) const
T getUntrackedParameter(std::string const &, T const &) const
std::string beamSpotOutputBase_
edm::InputTag beamSpotTag_
edm::EDGetTokenT< reco::BeamSpot > beamSpotToken_
std::string beamSpotModuleName_
AlcaBeamSpotManager::~AlcaBeamSpotManager ( void  )
virtual

Definition at line 38 of file AlcaBeamSpotManager.cc.

38  {
39 }

Member Function Documentation

void AlcaBeamSpotManager::createWeightedPayloads ( void  )

Definition at line 70 of file AlcaBeamSpotManager.cc.

References beamSpotMap_, beamSpotOutputBase_, delta(), deltaSig(), align_cfg::iteration, MessageLogger_cff::limit, ntuplemaker::tmprun, align::Tracker, Unknown, and weight().

Referenced by AlcaBeamSpotHarvester::endRun().

70  {
71  vector<bsMap_iterator> listToErase;
72  for(bsMap_iterator it=beamSpotMap_.begin(); it!=beamSpotMap_.end();it++){
73  if(it->second.type() != BeamSpot::Tracker){
74  listToErase.push_back(it);
75  }
76  }
77  for(vector<bsMap_iterator>::iterator it=listToErase.begin(); it !=listToErase.end(); it++){
78  beamSpotMap_.erase(*it);
79  }
80  if(beamSpotMap_.size() <= 1){
81  return;
82  }
83  //Return only if lumibased since the collapsing alghorithm requires the next and next to next lumi sections
84  else if(beamSpotMap_.size() == 2 && beamSpotOutputBase_ == "lumibased"){
85  return;
86  }
87  if(beamSpotOutputBase_ == "lumibased"){
88 // bsMap_iterator referenceBS = beamSpotMap_.begin();
89  bsMap_iterator firstBS = beamSpotMap_.begin();
90 // bsMap_iterator lastBS = beamSpotMap_.begin();
91  bsMap_iterator currentBS = beamSpotMap_.begin();
92  bsMap_iterator nextBS = ++beamSpotMap_.begin();
93  bsMap_iterator nextNextBS = ++(++(beamSpotMap_.begin()));
94 
95  map<LuminosityBlockNumber_t,BeamSpot> tmpBeamSpotMap_;
96  bool docreate = true;
97  bool endOfRun = false;//Added
98  bool docheck = true;//Added
99  bool foundShift = false;
100  long countlumi = 0;//Added
101  string tmprun = "";//Added
102  long maxNlumis = 60;//Added
103 // if weighted:
104 // maxNlumis = 999999999
105 
106 
107  unsigned int iteration = 0;
108  //while(nextNextBS!=beamSpotMap_.end()){
109  while(nextBS!=beamSpotMap_.end()){
110  LogInfo("AlcaBeamSpotManager")
111  << "Iteration: " << iteration << " size: " << beamSpotMap_.size() << "\n"
112  << "Lumi: " << currentBS->first << "\n"
113  << currentBS->second
114  << "\n" << nextBS->first << "\n" << nextBS->second
115  << endl;
116  if (nextNextBS!=beamSpotMap_.end())
117  LogInfo("AlcaBeamSpotManager")
118  << nextNextBS->first << "\n" << nextNextBS->second
119  << endl;
120 
121 
122  if(docreate){
123  firstBS = currentBS;
124  docreate = false;//Added
125  }
126  //if(iteration >= beamSpotMap_.size()-3){
127  if(iteration >= beamSpotMap_.size()-2){
128  LogInfo("AlcaBeamSpotManager")
129  << "Reached lumi " << currentBS->first
130  << " now close payload because end of data has been reached.";
131  docreate = true;
132  endOfRun = true;
133  }
134  // check we run over the same run
135 // if (ibeam->first.Run() != inextbeam->first.Run()){
136 // LogInfo("AlcaBeamSpotManager")
137 // << "close payload because end of run.";
138 // docreate = true;
139 // }
140  // check maximum lumi counts
141  if (countlumi == maxNlumis -1){
142  LogInfo("AlcaBeamSpotManager")
143  << "close payload because maximum lumi sections accumulated within run ";
144  docreate = true;
145  countlumi = 0;
146  }
147 // if weighted:
148 // docheck = False
149  // check offsets
150  if(docheck){
151  foundShift = false;
152  LogInfo("AlcaBeamSpotManager")
153  << "Checking checking!" << endl;
154  float limit = 0;
155  pair<float,float> adelta1;
156  pair<float,float> adelta2;
157  pair<float,float> adelta;
158  pair<float,float> adelta1dxdz;
159  pair<float,float> adelta2dxdz;
160  pair<float,float> adelta1dydz;
161  pair<float,float> adelta2dydz;
162  pair<float,float> adelta1widthX;
163  pair<float,float> adelta2widthX;
164  pair<float,float> adelta1widthY;
165  pair<float,float> adelta2widthY;
166  pair<float,float> adelta1z0;
167  pair<float,float> adelta1sigmaZ;
168 
169  // define minimum limit
170  float min_limit = 0.0025;
171 
172  // limit for x and y
173  limit = currentBS->second.BeamWidthX()/2.;
174  if(limit < min_limit){
175  limit = min_limit;
176  }
177 
178  //check movements in X
179  adelta1 = delta(currentBS->second.x0(), currentBS->second.x0Error(), nextBS->second.x0(), nextBS->second.x0Error());
180  adelta2 = pair<float,float>(0.,1.e9);
181  if (nextNextBS->second.type() != -1){
182  adelta2 = delta(nextBS->second.x0(), nextBS->second.x0Error(), nextNextBS->second.x0(), nextNextBS->second.x0Error());
183  }
184  bool deltaX = (deltaSig(adelta1.first,adelta1.second) > 3.5 && adelta1.first >= limit)?true:false;
185  if(iteration < beamSpotMap_.size()-2){
186  if( !deltaX && adelta1.first*adelta2.first > 0. && fabs(adelta1.first+adelta2.first) >= limit){
187  LogInfo("AlcaBeamSpotManager")
188  << " positive, " << (adelta1.first+adelta2.first) << " limit=" << limit << endl;
189  deltaX = true;
190  }
191  else if( deltaX && adelta1.first*adelta2.first < 0 && adelta2.first != 0 && fabs(adelta1.first/adelta2.first) > 0.33 && fabs(adelta1.first/adelta2.first) < 3){
192  LogInfo("AlcaBeamSpotManager")
193  << " negative, " << adelta1.first/adelta2.first << endl;
194  deltaX = false;
195  }
196  }
197 
198  //calculating all deltas
199  adelta1dxdz = delta(currentBS->second.dxdz(), currentBS->second.dxdzError(), nextBS->second.dxdz(), nextBS->second.dxdzError());
200  adelta2dxdz = pair<float,float>(0.,1.e9);
201  adelta1dydz = delta(currentBS->second.dydz(), currentBS->second.dydzError(), nextBS->second.dydz(), nextBS->second.dydzError());
202  adelta2dydz = pair<float,float>(0.,1.e9);
203  adelta1widthX = delta(currentBS->second.BeamWidthX(), currentBS->second.BeamWidthXError(), nextBS->second.BeamWidthX(), nextBS->second.BeamWidthXError());
204  adelta2widthX = pair<float,float>(0.,1.e9);
205  adelta1widthY = delta(currentBS->second.BeamWidthY(), currentBS->second.BeamWidthYError(), nextBS->second.BeamWidthY(), nextBS->second.BeamWidthYError());
206  adelta2widthY = pair<float,float>(0.,1.e9);
207  adelta1z0 = delta(currentBS->second.z0(), currentBS->second.z0Error(), nextBS->second.z0(), nextBS->second.z0Error());
208  adelta1sigmaZ = delta(currentBS->second.sigmaZ(), currentBS->second.sigmaZ0Error(), nextBS->second.sigmaZ(), nextBS->second.sigmaZ0Error());
209 
210  //check movements in Y
211  adelta1 = delta(currentBS->second.y0(), currentBS->second.y0Error(), nextBS->second.y0(), nextBS->second.y0Error());
212  adelta2 = pair<float,float>(0.,1.e9);
213  if( nextNextBS->second.type() != BeamSpot::Unknown){
214  adelta2 = delta(nextBS->second.y0(), nextBS->second.y0Error(), nextNextBS->second.y0(), nextNextBS->second.y0Error());
215  adelta2dxdz = delta(nextBS->second.dxdz(), nextBS->second.dxdzError(), nextNextBS->second.dxdz(), nextNextBS->second.dxdzError());
216  adelta2dydz = delta(nextBS->second.dydz(), nextBS->second.dydzError(), nextNextBS->second.dydz(), nextNextBS->second.dydzError());
217  adelta2widthX = delta(nextBS->second.BeamWidthX(), nextBS->second.BeamWidthXError(), nextNextBS->second.BeamWidthX(), nextNextBS->second.BeamWidthXError());
218  adelta2widthY = delta(nextBS->second.BeamWidthY(), nextBS->second.BeamWidthYError(), nextNextBS->second.BeamWidthY(), nextNextBS->second.BeamWidthYError());
219 
220  }
221  bool deltaY = (deltaSig(adelta1.first,adelta1.second) > 3.5 && adelta1.first >= limit)?true:false;
222  if(iteration < beamSpotMap_.size()-2){
223  if( !deltaY && adelta1.first*adelta2.first > 0. && fabs(adelta1.first+adelta2.first) >= limit){
224  LogInfo("AlcaBeamSpotManager")
225  << " positive, " << (adelta1.first+adelta2.first) << " limit=" << limit << endl;
226  deltaY = true;
227  }
228  else if( deltaY && adelta1.first*adelta2.first < 0 && adelta2.first != 0 && fabs(adelta1.first/adelta2.first) > 0.33 && fabs(adelta1.first/adelta2.first) < 3){
229  LogInfo("AlcaBeamSpotManager")
230  << " negative, " << adelta1.first/adelta2.first << endl;
231  deltaY = false;
232  }
233  }
234 
235  limit = currentBS->second.sigmaZ()/2.;
236  bool deltaZ = (deltaSig(adelta1z0.first,adelta1z0.second) > 3.5 && fabs(adelta1z0.first) >= limit)?true:false;
237  adelta = delta(currentBS->second.sigmaZ(), currentBS->second.sigmaZ0Error(), nextBS->second.sigmaZ(), nextBS->second.sigmaZ0Error());
238  bool deltasigmaZ = (deltaSig(adelta.first,adelta.second) > 5.0)?true:false;
239  bool deltadxdz = false;
240  bool deltadydz = false;
241  bool deltawidthX = false;
242  bool deltawidthY = false;
243 
244  if(iteration < beamSpotMap_.size()-2){
245 
246  adelta = delta(currentBS->second.dxdz(), currentBS->second.dxdzError(), nextBS->second.dxdz(), nextBS->second.dxdzError());
247  deltadxdz = (deltaSig(adelta.first,adelta.second) > 5.0)?true:false;
248  if(deltadxdz && (adelta1dxdz.first*adelta2dxdz.first) < 0 && adelta2dxdz.first != 0 && fabs(adelta1dxdz.first/adelta2dxdz.first) > 0.33 && fabs(adelta1dxdz.first/adelta2dxdz.first) < 3){
249  deltadxdz = false;
250  }
251 
252  adelta = delta(currentBS->second.dydz(), currentBS->second.dydzError(), nextBS->second.dydz(), nextBS->second.dydzError());
253  deltadydz = (deltaSig(adelta.first,adelta.second) > 5.0)?true:false;
254  if(deltadydz && (adelta1dydz.first*adelta2dydz.first) < 0 && adelta2dydz.first != 0 && fabs(adelta1dydz.first/adelta2dydz.first) > 0.33 && fabs(adelta1dydz.first/adelta2dydz.first) < 3){
255  deltadydz = false;
256  }
257 
258  adelta = delta(currentBS->second.BeamWidthX(), currentBS->second.BeamWidthXError(), nextBS->second.BeamWidthX(), nextBS->second.BeamWidthXError());
259  deltawidthX = (deltaSig(adelta.first,adelta.second) > 5.0)?true:false;
260  if(deltawidthX && (adelta1widthX.first*adelta2widthX.first) < 0 && adelta2widthX.first != 0 && fabs(adelta1widthX.first/adelta2widthX.first) > 0.33 && fabs(adelta1widthX.first/adelta2widthX.first) < 3){
261  deltawidthX = false;
262  }
263 
264  adelta = delta(currentBS->second.BeamWidthY(), currentBS->second.BeamWidthYError(), nextBS->second.BeamWidthY(), nextBS->second.BeamWidthYError());
265  deltawidthY = (deltaSig(adelta.first,adelta.second) > 5.0)?true:false;
266  if(deltawidthY && (adelta1widthY.first*adelta2widthY.first) < 0 && adelta2widthY.first != 0 && fabs(adelta1widthY.first/adelta2widthY.first) > 0.33 && fabs(adelta1widthY.first/adelta2widthY.first) < 3){
267  deltawidthY = false;
268  }
269 
270  }
271  if (deltaX || deltaY || deltaZ || deltasigmaZ || deltadxdz || deltadydz || deltawidthX || deltawidthY){
272  docreate = true;
273  foundShift = true;
274  LogInfo("AlcaBeamSpotManager")
275  << "close payload because of movement in"
276  << " X=" << deltaX
277  << ", Y=" << deltaY
278  << ", Z=" << deltaZ
279  << ", sigmaZ=" << deltasigmaZ
280  << ", dxdz=" << deltadxdz
281  << ", dydz=" << deltadydz
282  << ", widthX=" << deltawidthX
283  << ", widthY=" << deltawidthY
284  << endl;
285  }
286 
287  }
288  if(docreate){
289  if(foundShift){
290  tmpBeamSpotMap_[firstBS->first] = weight(firstBS,nextBS);
291  if (endOfRun){
292  //if we're here, then we need to found a shift in the last LS
293  //We already created a new IOV, now create one just for the last LS
294  tmpBeamSpotMap_[nextBS->first] = nextBS->second;
295  }
296  }
297  else if(!foundShift && !endOfRun){ //maxLS reached
298  tmpBeamSpotMap_[firstBS->first] = weight(firstBS,nextBS);
299  }
300  else { // end of run with no shift detectred in last LS
301  tmpBeamSpotMap_[firstBS->first] = weight(firstBS,beamSpotMap_.end());
302  }
303  firstBS = nextBS;
304  countlumi = 0;
305 
306  }
307  //tmprun = currentBS->second.Run
308  // increase the counter by one only if the IOV hasn't been closed
309  if (!docreate) ++countlumi;
310 
311  currentBS = nextBS;
312  nextBS = nextNextBS;
313  nextNextBS++;
314  ++iteration;
315  }
316  beamSpotMap_.clear();
317  beamSpotMap_ = tmpBeamSpotMap_;
318  }
319  else if(beamSpotOutputBase_ == "runbased"){
320  BeamSpot aBeamSpot = weight(beamSpotMap_.begin(),beamSpotMap_.end());
321  LuminosityBlockNumber_t firstLumi = beamSpotMap_.begin()->first;
322  beamSpotMap_.clear();
323  beamSpotMap_[firstLumi] = aBeamSpot;
324  }
325  else{
326  LogInfo("AlcaBeamSpotManager")
327  << "Unrecognized BeamSpotOutputBase parameter: " << beamSpotOutputBase_
328  << endl;
329  }
330 }
std::string beamSpotOutputBase_
std::map< edm::LuminosityBlockNumber_t, reco::BeamSpot >::iterator bsMap_iterator
unsigned int LuminosityBlockNumber_t
tuple iteration
Definition: align_cfg.py:5
reco::BeamSpot weight(const bsMap_iterator &begin, const bsMap_iterator &end)
tuple tmprun
Definition: ntuplemaker.py:242
std::pair< float, float > delta(const float &x, const float &xError, const float &nextX, const float &nextXError)
std::map< edm::LuminosityBlockNumber_t, reco::BeamSpot > beamSpotMap_
float deltaSig(const float &num, const float &den)
pair< float, float > AlcaBeamSpotManager::delta ( const float &  x,
const float &  xError,
const float &  nextX,
const float &  nextXError 
)
private

Definition at line 396 of file AlcaBeamSpotManager.cc.

References funct::pow(), and mathSSE::sqrt().

Referenced by createWeightedPayloads().

396  {
397  return pair<float,float>(x - nextX, sqrt(pow(xError,2) + pow(nextXError,2)) );
398 }
T sqrt(T t)
Definition: SSEVec.h:48
Power< A, B >::type pow(const A &a, const B &b)
Definition: Power.h:40
float AlcaBeamSpotManager::deltaSig ( const float &  num,
const float &  den 
)
private

Definition at line 401 of file AlcaBeamSpotManager.cc.

Referenced by createWeightedPayloads().

401  {
402  if(den != 0){
403  return fabs(num/den);
404  }
405  else{
406  return float(LONG_MAX);
407  }
408 }
const std::map<edm::LuminosityBlockNumber_t,reco::BeamSpot>& AlcaBeamSpotManager::getPayloads ( void  )
inline

Definition at line 29 of file AlcaBeamSpotManager.h.

References beamSpotMap_.

Referenced by AlcaBeamSpotHarvester::endRun().

29 {return beamSpotMap_;}
std::map< edm::LuminosityBlockNumber_t, reco::BeamSpot > beamSpotMap_
void AlcaBeamSpotManager::readLumi ( const edm::LuminosityBlock iLumi)

Definition at line 46 of file AlcaBeamSpotManager.cc.

References beamSpotMap_, beamSpotToken_, edm::LuminosityBlock::getByToken(), edm::HandleBase::isValid(), edm::LuminosityBlockBase::luminosityBlock(), and edm::Handle< T >::product().

Referenced by AlcaBeamSpotHarvester::endLuminosityBlock().

46  {
47 
48  Handle<BeamSpot> beamSpotHandle;
49  iLumi.getByToken(beamSpotToken_, beamSpotHandle);
50 
51  if(beamSpotHandle.isValid()) { // check the product
52  beamSpotMap_[iLumi.luminosityBlock()] = *beamSpotHandle;
53  const BeamSpot* aBeamSpot = &beamSpotMap_[iLumi.luminosityBlock()];
54  aBeamSpot = beamSpotHandle.product();
55  LogInfo("AlcaBeamSpotManager")
56  << "Lumi: " << iLumi.luminosityBlock() << std::endl;
57  LogInfo("AlcaBeamSpotManager")
58  << *aBeamSpot << std::endl;
59  }
60  else {
61  LogInfo("AlcaBeamSpotManager")
62  << "Lumi: " << iLumi.luminosityBlock() << std::endl;
63  LogInfo("AlcaBeamSpotManager")
64  << " BS is not valid!" << std::endl;
65  }
66 
67 }
edm::EDGetTokenT< reco::BeamSpot > beamSpotToken_
bool getByToken(EDGetToken token, Handle< PROD > &result) const
LuminosityBlockNumber_t luminosityBlock() const
bool isValid() const
Definition: HandleBase.h:75
T const * product() const
Definition: Handle.h:81
std::map< edm::LuminosityBlockNumber_t, reco::BeamSpot > beamSpotMap_
void AlcaBeamSpotManager::reset ( void  )

Definition at line 42 of file AlcaBeamSpotManager.cc.

References beamSpotMap_.

Referenced by MatrixReader.MatrixReader::__init__(), AlcaBeamSpotManager(), AlcaBeamSpotHarvester::beginRun(), and MatrixReader.MatrixReader::showRaw().

42  {
43  beamSpotMap_.clear();
44 }
std::map< edm::LuminosityBlockNumber_t, reco::BeamSpot > beamSpotMap_
BeamSpot AlcaBeamSpotManager::weight ( const bsMap_iterator begin,
const bsMap_iterator end 
)
private

Definition at line 333 of file AlcaBeamSpotManager.cc.

References end, relativeConstraints::error, reco::BeamSpot::setBeamWidthY(), align::Tracker, Unknown, x, y, and z.

Referenced by cuy.ValElement::__init__(), cuy.additionElement::__init__(), cuy.superimposeElement::__init__(), cuy.graphElement::__init__(), and createWeightedPayloads().

334  {
335  double x,xError = 0;
336  double y,yError = 0;
337  double z,zError = 0;
338  double sigmaZ,sigmaZError = 0;
339  double dxdz,dxdzError = 0;
340  double dydz,dydzError = 0;
341  double widthX,widthXError = 0;
342  double widthY,widthYError = 0;
343  LogInfo("AlcaBeamSpotManager")
344  << "Weighted BeamSpot will span lumi "
345  << begin->first << " to " << end->first
346  << endl;
347 
349  for(bsMap_iterator it=begin; it!=end; it++){
350  weight(x , xError , it->second.x0() , it->second.x0Error());
351  weight(y , yError , it->second.y0() , it->second.y0Error());
352  weight(z , zError , it->second.z0() , it->second.z0Error());
353  weight(sigmaZ, sigmaZError, it->second.sigmaZ() , it->second.sigmaZ0Error());
354  weight(dxdz , dxdzError , it->second.dxdz() , it->second.dxdzError());
355  weight(dydz , dydzError , it->second.dydz() , it->second.dydzError());
356  weight(widthX, widthXError, it->second.BeamWidthX(), it->second.BeamWidthXError());
357  weight(widthY, widthYError, it->second.BeamWidthY(), it->second.BeamWidthYError());
358  if(it->second.type() == BeamSpot::Tracker){
359  type = BeamSpot::Tracker;
360  }
361  }
362  BeamSpot::Point bsPosition(x,y,z);
364  error(0,0) = xError*xError;
365  error(1,1) = yError*yError;
366  error(2,2) = zError*zError;
367  error(3,3) = sigmaZError*sigmaZError;
368  error(4,4) = dxdzError*dxdzError;
369  error(5,5) = dydzError*dydzError;
370  error(6,6) = widthXError*widthXError;
371  BeamSpot weightedBeamSpot(bsPosition,sigmaZ,dxdz,dydz,widthX,error,type);
372  weightedBeamSpot.setBeamWidthY(widthY);
373  LogInfo("AlcaBeamSpotManager")
374  << "Weighted BeamSpot will be:" <<'\n'
375  << weightedBeamSpot
376  << endl;
377  return weightedBeamSpot;
378 }
type
Definition: HCALResponse.h:21
math::Error< dimension >::type CovarianceMatrix
Definition: BeamSpot.h:31
BeamType
beam spot flags
Definition: BeamSpot.h:26
std::map< edm::LuminosityBlockNumber_t, reco::BeamSpot >::iterator bsMap_iterator
math::XYZPoint Point
point in the space
Definition: BeamSpot.h:29
reco::BeamSpot weight(const bsMap_iterator &begin, const bsMap_iterator &end)
#define end
Definition: vmac.h:37
#define begin
Definition: vmac.h:30
void AlcaBeamSpotManager::weight ( double &  mean,
double &  meanError,
const double &  val,
const double &  valError 
)
private

Definition at line 381 of file AlcaBeamSpotManager.cc.

References alignCSCRings::e, and mathSSE::sqrt().

Referenced by cuy.ValElement::__init__(), cuy.additionElement::__init__(), cuy.superimposeElement::__init__(), and cuy.graphElement::__init__().

381  {
382  double tmpError = 0;
383  if (meanError < 1e-8){
384  tmpError = 1/(valError*valError);
385  mean = val*tmpError;
386  }
387  else{
388  tmpError = 1/(meanError*meanError) + 1/(valError*valError);
389  mean = mean/(meanError*meanError) + val/(valError*valError);
390  }
391  mean = mean/tmpError;
392  meanError = sqrt(1/tmpError);
393 }
T sqrt(T t)
Definition: SSEVec.h:48

Member Data Documentation

std::string AlcaBeamSpotManager::beamSpotLabel_
private

Definition at line 42 of file AlcaBeamSpotManager.h.

Referenced by AlcaBeamSpotManager().

std::map<edm::LuminosityBlockNumber_t,reco::BeamSpot> AlcaBeamSpotManager::beamSpotMap_
private

Definition at line 38 of file AlcaBeamSpotManager.h.

Referenced by createWeightedPayloads(), getPayloads(), readLumi(), and reset().

std::string AlcaBeamSpotManager::beamSpotModuleName_
private

Definition at line 41 of file AlcaBeamSpotManager.h.

Referenced by AlcaBeamSpotManager().

std::string AlcaBeamSpotManager::beamSpotOutputBase_
private

Definition at line 40 of file AlcaBeamSpotManager.h.

Referenced by AlcaBeamSpotManager(), and createWeightedPayloads().

edm::InputTag AlcaBeamSpotManager::beamSpotTag_
private

Definition at line 44 of file AlcaBeamSpotManager.h.

Referenced by AlcaBeamSpotManager().

edm::EDGetTokenT<reco::BeamSpot> AlcaBeamSpotManager::beamSpotToken_
private

Definition at line 45 of file AlcaBeamSpotManager.h.

Referenced by AlcaBeamSpotManager(), and readLumi().