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 {
11 }
12 
14 {
15  align::ID id;
17 
18  // fill 'theLevels' only once (and only if necessary)
19  if (theLevels.empty() && !levelNames_.empty()) {
20  auto alignableObjectId =
22  for (const auto& levelName: levelNames_) {
23  theLevels.push_back(alignableObjectId.stringToId(levelName));
24  }
25  }
26 
27  double par[6]; // survey residual
28 
29  TTree* tree = directory("/iterN/")->make<TTree>("survey", "");
30 
31  tree->Branch("id" , &id , "id/i");
32  tree->Branch("level", &level, "level/I");
33  tree->Branch("par" , &par , "par[6]/D");
34 
35  const align::Alignables& all = pStore()->alignables();
36 
37  const unsigned int nAlignable = all.size();
38 
39  for (unsigned int i = 0; i < nAlignable; ++i)
40  {
41  const Alignable* ali = all[i];
42 
43  id = ali->id();
44 
45  for (unsigned int l = 0; l < theLevels.size(); ++l)
46  {
47  level = theLevels[l];
48 
49  SurveyResidual resid(*ali, level, true);
50  AlgebraicVector resParams = resid.sensorResidual();
51 
52  par[0] = resParams[0];
53  par[1] = resParams[1];
54  par[2] = resParams[2];
55  par[3] = resParams[3];
56  par[4] = resParams[4];
57  par[5] = resParams[5];
58 
59  tree->Fill();
60  }
61  }
62 }
63 
AlignableMuon * pMuon()
align::ID id() const
Return the ID of Alignable, i.e. DetId of &#39;first&#39; component GeomDet(Unit).
Definition: Alignable.h:189
AlignmentParameterStore * pStore()
std::vector< align::StructureType > theLevels
AlignmentMonitorSurvey(const edm::ParameterSet &)
static AlignableObjectId commonObjectIdProvider(const AlignableObjectId &, const AlignableObjectId &)
uint32_t ID
Definition: Definitions.h:26
AlignableTracker * pTracker()
TFileDirectory * directory(std::string dir)
T * make(const Args &...args) const
make new ROOT object
const char * levelName(LogLevel)
Definition: fwLog.cc:34
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