CMS 3D CMS Logo

All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
AlcaBeamSpotHarvester.cc
Go to the documentation of this file.
1 
2 /*
3  * See header file for a description of this class.
4  *
5  * $Date: 2010/10/14 12:42:57 $
6  * $Revision: 1.9 $
7  * \author L. Uplegger F. Yumiceva - Fermilab
8  */
9 
21 
23 
27 //#include "CondCore/Utilities/bin/cmscond_export_iov.cpp"
28 //#include "CondCore/Utilities/interface/Utilities.h"
30 
31 #include <iostream>
32 
33 using namespace edm;
34 using namespace reco;
35 //using namespace std;
36 
37 //--------------------------------------------------------------------------------------------------
39  beamSpotOutputBase_ (iConfig.getParameter<ParameterSet>("AlcaBeamSpotHarvesterParameters").getUntrackedParameter<std::string>("BeamSpotOutputBase")),
40  outputrecordName_ (iConfig.getParameter<ParameterSet>("AlcaBeamSpotHarvesterParameters").getUntrackedParameter<std::string>("outputRecordName", "BeamSpotObjectsRcd")),
41  sigmaZValue_ (iConfig.getParameter<ParameterSet>("AlcaBeamSpotHarvesterParameters").getUntrackedParameter<double>("SigmaZValue")),
42  theAlcaBeamSpotManager_(iConfig),
43  metadataForOfflineDropBox_(iConfig.getParameter<ParameterSet>("metadataOfflineDropBox"))
44 {
45 }
46 
47 //--------------------------------------------------------------------------------------------------
49 
50 //--------------------------------------------------------------------------------------------------
52 
53 //--------------------------------------------------------------------------------------------------
55 
56 //--------------------------------------------------------------------------------------------------
58 // edm::LogInfo("AlcaBeamSpotHarvester")
59 // << "Lumi: " << iEvent.luminosityBlock()
60 // << " Time: " << iEvent.time().unixTime()
61 // << std::endl;
62 }
63 
64 //--------------------------------------------------------------------------------------------------
67 }
68 
69 //--------------------------------------------------------------------------------------------------
72  std::map<edm::LuminosityBlockNumber_t,reco::BeamSpot> beamSpotMap = theAlcaBeamSpotManager_.getPayloads();
74 // cond::ExportIOVUtilities utilities;
75  if(poolDbService.isAvailable() ) {
76  for(AlcaBeamSpotManager::bsMap_iterator it=beamSpotMap.begin(); it!=beamSpotMap.end();it++){
77  BeamSpotObjects *aBeamSpot = new BeamSpotObjects();
78  aBeamSpot->SetType(it->second.type());
79  aBeamSpot->SetPosition(it->second.x0(),it->second.y0(),it->second.z0());
80  if(sigmaZValue_ == -1){
81  aBeamSpot->SetSigmaZ(it->second.sigmaZ());
82  }
83  else{
84  aBeamSpot->SetSigmaZ(sigmaZValue_);
85  }
86  aBeamSpot->Setdxdz(it->second.dxdz());
87  aBeamSpot->Setdydz(it->second.dydz());
88  aBeamSpot->SetBeamWidthX(it->second.BeamWidthX());
89  aBeamSpot->SetBeamWidthY(it->second.BeamWidthY());
90  aBeamSpot->SetEmittanceX(it->second.emittanceX());
91  aBeamSpot->SetEmittanceY(it->second.emittanceY());
92  aBeamSpot->SetBetaStar(it->second.betaStar() );
93 
94  for (int i=0; i<7; ++i) {
95  for (int j=0; j<7; ++j) {
96  aBeamSpot->SetCovariance(i,j,it->second.covariance(i,j));
97  }
98  }
99 
100  if(sigmaZValue_ > 0){
101  aBeamSpot->SetCovariance(3,3,0.000025);
102  }
103 
104  cond::Time_t thisIOV = 1;
105 
106 
107 
108  // run based
109  if (beamSpotOutputBase_ == "runbased" ) {
110  thisIOV = (cond::Time_t) iRun.id().run();
111  }
112  // lumi based
113  else if (beamSpotOutputBase_ == "lumibased" ) {
114  edm::LuminosityBlockID lu(iRun.id().run(),it->first);
115  thisIOV = (cond::Time_t)(lu.value());
116  }
117  if (poolDbService->isNewTagRequest(outputrecordName_) ) {
118  edm::LogInfo("AlcaBeamSpotHarvester")
119  << "new tag requested" << std::endl;
120  //poolDbService->createNewIOV<BeamSpotObjects>(aBeamSpot, poolDbService->beginOfTime(),poolDbService->endOfTime(),"BeamSpotObjectsRcd");
121 
122  //poolDbService->createNewIOV<BeamSpotObjects>(aBeamSpot, poolDbService->currentTime(), poolDbService->endOfTime(),"BeamSpotObjectsRcd");
123  poolDbService->writeOne<BeamSpotObjects>(aBeamSpot, thisIOV, outputrecordName_);
124  }
125  else {
126  edm::LogInfo("AlcaBeamSpotHarvester")
127  << "no new tag requested, appending IOV" << std::endl;
128  //poolDbService->appendSinceTime<BeamSpotObjects>(aBeamSpot, poolDbService->currentTime(),"BeamSpotObjectsRcd");
129  poolDbService->writeOne<BeamSpotObjects>(aBeamSpot, thisIOV, outputrecordName_);
130  }
131 
132 
133 
134 
135 /*
136  int argc = 15;
137  const char* argv[] = {"endRun"
138  ,"-d","sqlite_file:combined.db"
139  ,"-s","sqlite_file:testbs2.db"
140  ,"-l","sqlite_file:log.db"
141  ,"-i","TestLSBasedBS"
142  ,"-t","TestLSBasedBS"
143  ,"-b","1"
144  ,"-e","10"
145  };
146 
147  edm::LogInfo("AlcaBeamSpotHarvester")
148  << "Running utilities!"
149  << utilities.run(argc,(char**)argv);
150  edm::LogInfo("AlcaBeamSpotHarvester")
151  << "Run utilities!"
152  << std::endl;
153 */
154  }
155 
156 
157 
159  if (jr.isAvailable()) {
160  std::map<std::string, std::string> jrInfo;
161  jrInfo["Source"] = "AlcaHarvesting";
162  jrInfo["FileClass"] = "ALCA";
163 
164 
165  jrInfo["inputtag"] = poolDbService->tag(outputrecordName_);
166  if(beamSpotOutputBase_ == "runbased") {
167  jrInfo["Timetype"] = "runnumber";
168  } else if(beamSpotOutputBase_ == "lumibased") {
169  jrInfo["Timetype"] = "lumiid";
170  }
171  std::vector<std::string> paramKeys = metadataForOfflineDropBox_.getParameterNames();
172  for(std::vector<std::string>::const_iterator key = paramKeys.begin();
173  key != paramKeys.end();
174  ++key) {
175  jrInfo[*key] = metadataForOfflineDropBox_.getUntrackedParameter<std::string>(*key);
176  }
177  std::string filename = poolDbService->session().connectionString();
178  jr->reportAnalysisFile(filename, jrInfo);
179  }
180 
181 
182  }
183 }
184 
185 //--------------------------------------------------------------------------------------------------
187 
188 //--------------------------------------------------------------------------------------------------
191 }
192 
193 
T getUntrackedParameter(std::string const &, T const &) const
int i
Definition: DBlmapReader.cc:9
const std::string & connectionString() const
Definition: DbSession.cc:133
edm::ParameterSet metadataForOfflineDropBox_
RunID const & id() const
Definition: RunBase.h:43
RunNumber_t run() const
Definition: RunID.h:44
virtual void endLuminosityBlock(const edm::LuminosityBlock &, const edm::EventSetup &)
virtual void beginRun(const edm::Run &, const edm::EventSetup &)
#define DEFINE_FWK_MODULE(type)
Definition: MakerMacros.h:17
void SetSigmaZ(double val)
set sigma Z, RMS bunch length
void reportAnalysisFile(std::string const &fileName, std::map< std::string, std::string > const &fileData)
Definition: JobReport.cc:652
std::map< edm::LuminosityBlockNumber_t, reco::BeamSpot >::iterator bsMap_iterator
void SetCovariance(int i, int j, double val)
set i,j element of the full covariance matrix 7x7
void Setdydz(double val)
set dydz slope, crossing angle in XZ
virtual void beginJob(void)
std::string tag(const std::string &recordName)
AlcaBeamSpotHarvester(const edm::ParameterSet &)
Constructor.
const std::map< edm::LuminosityBlockNumber_t, reco::BeamSpot > & getPayloads(void)
int iEvent
Definition: GenABIO.cc:243
unsigned long long Time_t
Definition: Time.h:16
bool isNewTagRequest(const std::string &recordName)
void SetEmittanceX(double val)
set emittance
bool isAvailable() const
Definition: Service.h:47
int j
Definition: DBlmapReader.cc:9
virtual void endRun(const edm::Run &, const edm::EventSetup &)
void writeOne(T *payload, Time_t time, const std::string &recordName, bool withlogging=false)
void Setdxdz(double val)
set dxdz slope, crossing angle
std::vector< std::string > getParameterNames() const
void SetBetaStar(double val)
set beta star
virtual void beginLuminosityBlock(const edm::LuminosityBlock &, const edm::EventSetup &)
void readLumi(const edm::LuminosityBlock &)
void SetType(int type)
set beam type
virtual ~AlcaBeamSpotHarvester()
Destructor.
void SetEmittanceY(double val)
set emittance
void SetBeamWidthX(double val)
set average transverse beam width X
void SetBeamWidthY(double val)
set average transverse beam width Y
AlcaBeamSpotManager theAlcaBeamSpotManager_
list key
Definition: combine.py:13
tuple filename
Definition: lut2db_cfg.py:20
Definition: Run.h:31
virtual void analyze(const edm::Event &, const edm::EventSetup &)
void SetPosition(double x, double y, double z)
set XYZ position