CMS 3D CMS Logo

AlignmentMonitorSurvey.cc
Go to the documentation of this file.
4 
6 
8  : AlignmentMonitorBase(cfg, "AlignmentMonitorSurvey"),
9  levelNames_(cfg.getUntrackedParameter<std::vector<std::string> >("surveyResiduals")) {}
10 
12  align::ID id;
14 
15  // fill 'theLevels' only once (and only if necessary)
16  if (theLevels.empty() && !levelNames_.empty()) {
17  auto alignableObjectId = AlignableObjectId::commonObjectIdProvider(pTracker(), pMuon());
18  for (const auto& levelName : levelNames_) {
19  theLevels.push_back(alignableObjectId.stringToId(levelName));
20  }
21  }
22 
23  double par[6]; // survey residual
24 
25  TTree* tree = directory("/iterN/")->make<TTree>("survey", "");
26 
27  tree->Branch("id", &id, "id/i");
28  tree->Branch("level", &level, "level/I");
29  tree->Branch("par", &par, "par[6]/D");
30 
31  const align::Alignables& all = pStore()->alignables();
32 
33  const unsigned int nAlignable = all.size();
34 
35  for (unsigned int i = 0; i < nAlignable; ++i) {
36  const Alignable* ali = all[i];
37 
38  id = ali->id();
39 
40  for (unsigned int l = 0; l < theLevels.size(); ++l) {
41  level = theLevels[l];
42 
43  SurveyResidual resid(*ali, level, true);
44  AlgebraicVector resParams = resid.sensorResidual();
45 
46  par[0] = resParams[0];
47  par[1] = resParams[1];
48  par[2] = resParams[2];
49  par[3] = resParams[3];
50  par[4] = resParams[4];
51  par[5] = resParams[5];
52 
53  tree->Fill();
54  }
55  }
56 }
57 
align::ID id() const
Return the ID of Alignable, i.e. DetId of &#39;first&#39; component GeomDet(Unit).
Definition: Alignable.h:180
AlignmentParameterStore * pStore()
std::vector< align::StructureType > theLevels
AlignmentMonitorSurvey(const edm::ParameterSet &)
static AlignableObjectId commonObjectIdProvider(const AlignableObjectId &, const AlignableObjectId &)
uint32_t ID
Definition: Definitions.h:24
AlignableTracker * pTracker()
TFileDirectory * directory(std::string dir)
T * make(const Args &...args) const
make new ROOT object
const char * levelName(LogLevel)
Definition: fwLog.cc:32
CLHEP::HepVector AlgebraicVector
std::vector< std::string > levelNames_
std::vector< Alignable * > Alignables
Definition: Utilities.h:31
AlgebraicVector sensorResidual() const
#define DEFINE_EDM_PLUGIN(factory, type, name)
Definition: tree.py:1
void book() override
Book or retrieve histograms; MUST be reimplemented.
const align::Alignables & alignables(void) const
get all alignables