CTPPSBeamParameters

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 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131
#ifndef CondFormats_PPSObjects_CTPPSBeamParameters_h
#define CondFormats_PPSObjects_CTPPSBeamParameters_h
// -*- C++ -*-
//
// Package:    PPSObjects
// Class:      CTPPSBeamParameters
//
/**\class CTPPSBeamParameters CTPPSBeamParameters.h CondFormats/CTPPSRedoutObjects/src/CTPPSBeamParameters.cc

 Description: Beam parameters for proton reconstruction

 Implementation:
     <Notes on implementation>
*/
// Original Author:  Wagner Carvalho
//         Created:  20 Nov 2018
//

#include "CondFormats/Serialization/interface/Serializable.h"
#include "FWCore/MessageLogger/interface/MessageLogger.h"

class CTPPSBeamParameters {
public:
  // Constructor
  CTPPSBeamParameters();
  // Destructor
  ~CTPPSBeamParameters();

  // Getters

  double getBeamMom45() const;
  double getBeamMom56() const;

  double getBetaStarX45() const;
  double getBetaStarY45() const;
  double getBetaStarX56() const;
  double getBetaStarY56() const;

  double getBeamDivergenceX45() const;
  double getBeamDivergenceY45() const;
  double getBeamDivergenceX56() const;
  double getBeamDivergenceY56() const;

  double getHalfXangleX45() const;
  double getHalfXangleY45() const;
  double getHalfXangleX56() const;
  double getHalfXangleY56() const;

  double getVtxOffsetX45() const;
  double getVtxOffsetY45() const;
  double getVtxOffsetZ45() const;
  double getVtxOffsetT45() const;
  double getVtxOffsetX56() const;
  double getVtxOffsetY56() const;
  double getVtxOffsetZ56() const;
  double getVtxOffsetT56() const;

  double getVtxStddevX() const;
  double getVtxStddevY() const;
  double getVtxStddevZ() const;
  double getVtxStddevT() const;

  // Setters

  void setBeamMom45(double mom);
  void setBeamMom56(double mom);

  void setBetaStarX45(double beta);
  void setBetaStarY45(double beta);
  void setBetaStarX56(double beta);
  void setBetaStarY56(double beta);

  void setBeamDivergenceX45(double div);
  void setBeamDivergenceY45(double div);
  void setBeamDivergenceX56(double div);
  void setBeamDivergenceY56(double div);

  void setHalfXangleX45(double angle);
  void setHalfXangleY45(double angle);
  void setHalfXangleX56(double angle);
  void setHalfXangleY56(double angle);

  void setVtxOffsetX45(double offset);
  void setVtxOffsetY45(double offset);
  void setVtxOffsetZ45(double offset);
  void setVtxOffsetT45(double offset);
  void setVtxOffsetX56(double offset);
  void setVtxOffsetY56(double offset);
  void setVtxOffsetZ56(double offset);
  void setVtxOffsetT56(double offset);

  void setVtxStddevX(double stddev);
  void setVtxStddevY(double stddev);
  void setVtxStddevZ(double stddev);
  void setVtxStddevT(double stddev);

  void printInfo(std::stringstream &s);

private:
  // LHC sector 45 corresponds to beam 2, sector 56 to beam 1
  double beam_momentum_45_;  // GeV
  double beam_momentum_56_;  // GeV

  double beta_star_x_45_, beta_star_x_56_;  // cm
  double beta_star_y_45_, beta_star_y_56_;

  double beam_divergence_x_45_, beam_divergence_x_56_;  // rad
  double beam_divergence_y_45_, beam_divergence_y_56_;

  double half_crossing_angle_x_45_, half_crossing_angle_x_56_;  // rad
  double half_crossing_angle_y_45_, half_crossing_angle_y_56_;

  // splitting between 45 and 56 may effectively account for magnet misalignment
  double vtx_offset_x_45_, vtx_offset_x_56_;  // cm
  double vtx_offset_y_45_, vtx_offset_y_56_;  // cm
  double vtx_offset_z_45_, vtx_offset_z_56_;  // cm
  double vtx_offset_t_45_, vtx_offset_t_56_;  // cm

  // the following variables might possibly be in another CMS record already,
  // but we might want to keep them for completeness/independence
  double vtx_stddev_x_;  // cm
  double vtx_stddev_y_;  // cm
  double vtx_stddev_z_;  // cm
  double vtx_stddev_t_;  // cm

  COND_SERIALIZABLE;
};

std::ostream &operator<<(std::ostream &, CTPPSBeamParameters);

#endif