MuonScenarioBuilder

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 51 52
#ifndef Alignment_MuonAlignment_MuonScenarioBuilder_h
#define Alignment_MuonAlignment_MuonScenarioBuilder_h

/** \class MuonScenarioBuilder
 *  The misalignment scenario builder.
 *
 *  $Date: 2009/09/15 17:09:58 $
 *  $Revision: 1.5 $
 *  \author Andre Sznajder - UERJ(Brazil)
 */

#include <vector>

#include "Alignment/CommonAlignment/interface/AlignableModifier.h"
#include "Alignment/CommonAlignment/interface/MisalignmentScenarioBuilder.h"
#include "Alignment/MuonAlignment/interface/AlignableMuon.h"
/// Builds a scenario from configuration and applies it to the alignable Muon.

class MuonScenarioBuilder : public MisalignmentScenarioBuilder {
public:
  /// Constructor
  explicit MuonScenarioBuilder(Alignable* alignable);

  /// Destructor
  ~MuonScenarioBuilder() override {}

  /// Apply misalignment scenario to the Muon
  void applyScenario(const edm::ParameterSet& scenario) override;

  /// This special method allows to move a DTsector by a same amount
  void moveDTSectors(const edm::ParameterSet& scenario);

  /// this special method allows to move a CSCsector by a same amount
  void moveCSCSectors(const edm::ParameterSet& scenario);

  void moveGEMSectors(const edm::ParameterSet& scenario);

  /// this special method allows to move the complete muon system by a same amount
  void moveMuon(const edm::ParameterSet& scenario);

  align::Scalars extractParameters(const edm::ParameterSet&, const char*);

  void moveChamberInSector(
      Alignable*, const align::Scalars&, const align::Scalars&, const align::Scalars&, const align::Scalars&);

private:                            // Members
  AlignableMuon* theAlignableMuon;  ///< Pointer to alignable Muon object

  AlignableModifier theMuonModifier;
};

#endif