18 #include "TMultiGraph.h"
22 using namespace sistrip;
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;
93 data()[iter->first] = anal;
96 for (
int iapv = 0; iapv < 2; iapv++) {
107 data()[iter->first] = anal;
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");
181 TMultiGraph* graph_isha =
new TMultiGraph(
"riseTime_vs_isha",
"");
182 TMultiGraph* graph_vfs =
new TMultiGraph(
"decayTime_vs_vfs",
"");
184 bool save_graph_isha =
false;
185 bool save_graph_vfs =
false;
188 Analyses::iterator ianal =
data().begin();
189 Analyses::iterator janal =
data().end();
190 for (; ianal != janal; ++ianal) {
197 directory =
me->getPathname();
198 if (directory.Contains(Form(
"FecCrate%d", feckey.
fecCrate())) and
199 directory.Contains(Form(
"FecRing%d", feckey.
fecRing())) and
200 directory.Contains(Form(
"FecSlot%d", feckey.
fecSlot())) and
201 directory.Contains(Form(
"CcuAddr%d", feckey.
ccuAddr())) and
202 directory.Contains(Form(
"CcuChan%d", feckey.
ccuChan())))
206 outputFile->cd(
"DQMData/" + directory);
208 for (
size_t igraph = 0; igraph < anal->
decayTimeVsVFS().size(); igraph++) {
211 save_graph_vfs =
true;
214 for (
size_t igraph = 0; igraph < anal->
riseTimeVsISHA().size(); igraph++) {
217 save_graph_isha =
true;
231 outputFile->cd(
"DQMData/Collate/SiStrip/ControlView");
234 graph_isha->Write(
"riseTime_vs_isha");
236 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
Log< level::Info, true > LogVerbatim
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
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::EventIDconst &, edm::Timestampconst & > We also list in braces which AR_WATCH_USING_METHOD_ is used for those or
const edm::ParameterSet & pset() const
const std::vector< TGraph * > & decayTimeVsVFS()
Algorithm for calibration runs.
static const char dqmClientFileName_[]
static const char mlDqmClient_[]
const uint16_t & fecSlot() const
virtual std::vector< dqm::harvesting::MonitorElement * > getAllContents(std::string const &path) 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.
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_
T getParameter(std::string const &) const
const uint16_t & ccuAddr() const
DQM_DEPRECATED void save(std::string const &filename, std::string const &path="")
void histoAnalysis(bool debug) override
void tuneIndependently(const int &, const float &, const float &)
const uint16_t & ccuChan() const
const std::vector< TGraph2D * > & riseTimeVsISHAVsVFS()
Log< level::Warning, false > LogWarning
static const char collate_[]
void tuneSimultaneously(const int &, const float &, const float &)
const HistosMap & histos() const
const std::vector< TGraph * > & riseTimeVsISHA()