18 #include "TMultiGraph.h" 29 <<
" Constructing object...";
48 <<
" Deleting object...";
55 Analyses::iterator ianal;
56 for (ianal =
data().
begin(); ianal !=
data().end(); ianal++) {
64 HistosMap::const_iterator iter =
histos().begin();
67 for (; iter !=
histos().end(); iter++) {
68 if (iter->second.empty()) {
70 <<
" Zero collation histograms found!";
76 Histos::const_iterator ihis = iter->second.begin();
77 for (; ihis != iter->second.end(); ihis++) {
80 profs.push_back(prof);
85 bool isdeconv =
false;
96 for (
int iapv = 0; iapv < 2; iapv++) {
115 Analyses::iterator ianal =
data().begin();
116 Analyses::iterator janal =
data().end();
117 for (; ianal != janal; ++ianal) {
119 std::stringstream
ss;
120 ianal->second->print(ss, 0);
121 ianal->second->print(ss, 1);
122 if (ianal->second->isValid()) {
135 std::stringstream
ss;
138 if (ss.str().find(
".root") == std::string::npos) {
146 if (std::getenv(scratch.c_str()) !=
nullptr) {
147 dir = std::getenv(scratch.c_str());
158 if (partitionName.empty())
162 << run_number <<
".root";
167 <<
" Saving histograms to root file" 168 <<
" (This may take some time!)";
172 <<
" Saved histograms to root file \"" << ss.str() <<
"\"!";
176 TFile*
outputFile = TFile::Open(path.c_str(),
"UPDATE");
183 TMultiGraph* graph_isha =
new TMultiGraph(
"riseTime_vs_isha",
"");
184 TMultiGraph* graph_vfs =
new TMultiGraph(
"decayTime_vs_vfs",
"");
186 bool save_graph_isha =
false;
187 bool save_graph_vfs =
false;
190 Analyses::iterator ianal =
data().begin();
191 Analyses::iterator janal =
data().end();
192 for (; ianal != janal; ++ianal) {
198 for (
auto content : contents) {
199 std::vector<std::string> tokens;
201 std::istringstream tokenStream(
content);
202 while (std::getline(tokenStream, token,
':')) {
203 tokens.push_back(token);
205 directory = Form(
"%s", tokens.at(0).c_str());
206 if (directory.Contains(Form(
"FecCrate%d", feckey.
fecCrate())) and
207 directory.Contains(Form(
"FecRing%d", feckey.
fecRing())) and
208 directory.Contains(Form(
"FecSlot%d", feckey.
fecSlot())) and
209 directory.Contains(Form(
"CcuAddr%d", feckey.
ccuAddr())) and
210 directory.Contains(Form(
"CcuChan%d", feckey.
ccuChan())))
214 outputFile->cd(
"DQMData/" + directory);
216 for (
size_t igraph = 0; igraph < anal->
decayTimeVsVFS().size(); igraph++) {
219 save_graph_vfs =
true;
222 for (
size_t igraph = 0; igraph < anal->
riseTimeVsISHA().size(); igraph++) {
225 save_graph_isha =
true;
239 outputFile->cd(
"DQMData/Collate/SiStrip/ControlView");
242 graph_isha->Write(
"riseTime_vs_isha");
244 graph_vfs->Write(
"decayTime_vs_vfs");
void save(std::string &filename, uint32_t run_number=0, std::string partitionName="")
void analysis(const std::vector< TH1 * > &)
const std::vector< TGraph2D * > & decayTimeVsISHAVsVFS()
~CalibrationHistograms() override
T getParameter(std::string const &) const
const sistrip::RunType & task() const
bool existsAs(std::string const ¶meterName, bool trackiness=true) const
checks if a parameter exists as a given type
Analyses & data(bool getMaskedData=false)
const uint16_t & fecRing() const
const edm::ParameterSet & pset() const
const std::vector< TGraph * > & decayTimeVsVFS()
Algorithm for calibration runs.
static const char dqmClientFileName_[]
std::vector< MonitorElement * > getContents(std::string const &path) const
static const char mlDqmClient_[]
const uint16_t & fecSlot() const
Utility class that identifies a position within the strip tracker control structure, down to the level of an APV25.
Analysis for calibration runs.
CalibrationHistograms(const edm::ParameterSet &pset, DQMStore *, const sistrip::RunType &task=sistrip::CALIBRATION)
Analysis for calibration scans.
The Signals That Services Can Subscribe To This is based on ActivityRegistry and is current per Services can connect to the signals distributed by the ActivityRegistry in order to monitor the activity of the application Each possible callback has some defined which we here list in angle e< void, edm::EventID const &, edm::Timestamp const & > We also list in braces which AR_WATCH_USING_METHOD_ is used for those or
void printAnalyses() override
Algorithm for calibration runs.
DQMStore *const bei() const
const uint32_t & fecKey() const
void fillTunedObservables(const int &)
const uint16_t & fecCrate() const
int extract(std::vector< int > *output, const std::string &dati)
std::unique_ptr< Factory > factory_
const uint16_t & ccuAddr() const
void histoAnalysis(bool debug) override
void tuneIndependently(const int &, const float &, const float &)
const uint16_t & ccuChan() const
const std::vector< TGraph2D * > & riseTimeVsISHAVsVFS()
static const char collate_[]
void tuneSimultaneously(const int &, const float &, const float &)
void save(std::string const &filename, std::string const &path="", std::string const &pattern="", std::string const &rewrite="", uint32_t run=0, uint32_t lumi=0, SaveReferenceTag ref=SaveWithReference, int minStatus=dqm::qstatus::STATUS_OK, std::string const &fileupdate="RECREATE")
const HistosMap & histos() const
const std::vector< TGraph * > & riseTimeVsISHA()