TrackerScenarioBuilder

Macros

Line Code
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50
#ifndef Alignment_TrackerAlignment_TrackerScenarioBuilder_h
#define Alignment_TrackerAlignment_TrackerScenarioBuilder_h

/// \class TrackerScenarioBuilder
///
/// $Date: 2007/10/18 09:57:11 $
/// $Revision: 1.2 $
///
/// $Author: fronga $
/// \author Frederic Ronga - CERN-PH-CMG
///
/// Builds a scenario from configuration and applies it to the alignable tracker.

#include <vector>
#include <string>

#include "Alignment/CommonAlignment/interface/StructureType.h"
#include "Alignment/CommonAlignment/interface/MisalignmentScenarioBuilder.h"

class AlignableTracker;

/// Builds a scenario from configuration and applies it to the alignable tracker.

class TrackerScenarioBuilder : public MisalignmentScenarioBuilder {
public:
  /// Constructor
  explicit TrackerScenarioBuilder(AlignableTracker* alignable);

  /// Destructor
  ~TrackerScenarioBuilder() override {}

  /// Apply misalignment scenario to the tracker
  void applyScenario(const edm::ParameterSet& scenario) override;
  /// does this still make sense?
  bool isTopLevel_(const std::string& parameterSetName) const override;
  /// True if hierarchy level 'sub' could be part of hierarchy level 'large'.
  bool possiblyPartOf(const std::string& sub, const std::string& large) const override;

private:
  std::string stripOffModule(const align::StructureType& type) const;

  // Members

  AlignableTracker* theAlignableTracker;  ///< Pointer to mother alignable object
  /// following things are needed in possiblyPartOf:
  std::vector<std::string> theSubdets;  ///< sub-detector acronyms appearing in StructureType.h (TPE)
  unsigned int theFirstStripIndex;      ///< index of first strip subdet in 'theSubdets' (pixel<strip)
};

#endif