CMS 3D CMS Logo

Classes | Public Types | Public Member Functions | Static Public Attributes | Private Attributes | Friends

SimpleL1MuGMTCand Class Reference

#include <SimpleL1MuGMTCand.h>

Inheritance diagram for SimpleL1MuGMTCand:
L1MuGMTExtendedCand L1MuGMTCand

List of all members.

Classes

class  Rank
 define a rank for muon candidates More...

Public Types

typedef math::XYZTLorentzVector LorentzVector

Public Member Functions

int charge () const
 get charge
void disable ()
 disable muon candidate
bool empty () const
 is it an empty muon candidate?
void enable ()
 enable muon candidate
unsigned int eta () const
 get eta-code
unsigned int etaRegionIndex () const
const LorentzVector getMomentum () const
unsigned int linearizedPt (float lsbValue, unsigned maxScale) const
 nevermind this one
std::string name () const
 get name of object
bool operator!= (const SimpleL1MuGMTCand &) const
 unequal operator
SimpleL1MuGMTCandoperator= (const SimpleL1MuGMTCand &)
 assignment operator
SimpleL1MuGMTCandoperator= (const SimTrack *)
 assignment operator for a FSimTrack
bool operator== (const SimpleL1MuGMTCand &) const
 equal operator
unsigned int phi () const
 get phi-code
unsigned int phiRegionIndex () const
void print () const
 print parameters of muon candidate
unsigned int pt () const
 get pt-code
unsigned int quality () const
 get quality (not implemented for FAMOS)
unsigned int rank () const
 get rank
void reset ()
 reset muon candidate
void setCharge (int charge)
 set charge and packed code of muon candidate
void setEta (float eta)
 set eta-value and packed code of muon candidate
void setMomentum (LorentzVector m)
void setPhi (float phi)
 set phi-value and packed code of muon candidate
void setPt (float pt)
 set pt-value and packed code of muon candidate
void setRank (unsigned int rank)
 set rank
 SimpleL1MuGMTCand (const SimTrack *p, unsigned etaIndex, unsigned phiIndex, unsigned pTIndex, float etaValue, float phiValue, float pTValue)
 The same as above, but without relying on internal tables (safer)
 SimpleL1MuGMTCand ()
 constructor
 SimpleL1MuGMTCand (const SimTrack *)
 convert a FSimTrack into a SimpleL1MuGMTCand (L1MuGMTExtendedCand)
 SimpleL1MuGMTCand (const SimpleL1MuGMTCand &)
 copy constructor
 SimpleL1MuGMTCand (const SimpleL1MuGMTCand *)
 copy constructor from pointer
float smearedPt () const
 return the smeared L1 Pt value before discretization in 32-bit
virtual ~SimpleL1MuGMTCand ()
 destructor

Static Public Attributes

static const float etaScale [63]
static const float phiScale [144]
static const float ptScale [32]

Private Attributes

int m_charge
bool m_empty
unsigned int m_eta
std::string m_name
unsigned int m_phi
unsigned int m_pt
unsigned int m_quality
unsigned int m_rank
float m_smearedPt
LorentzVector myMomentum

Friends

std::ostream & operator<< (std::ostream &, const SimpleL1MuGMTCand &)
 output stream operator

Detailed Description

Description: Simple L1 Global Muon Trigger Candidate Inherits the basics from 'L1MuGMTCand' base class. Contains pointer to RawHepEventParticle from the event manager. Allows easy conversion from a RawHepEventParticle.

Author: Andrea Perrotta 05/09/2006

Definition at line 24 of file SimpleL1MuGMTCand.h.


Member Typedef Documentation

Definition at line 28 of file SimpleL1MuGMTCand.h.


Constructor & Destructor Documentation

SimpleL1MuGMTCand::SimpleL1MuGMTCand ( )

constructor

Definition at line 15 of file SimpleL1MuGMTCand.cc.

                                     :
              m_name("FastL1MuCand"), m_empty(true), 
              m_phi(0), m_eta(31), m_pt(0), m_charge(0), m_quality(0),               
              m_rank(0), m_smearedPt(0) { }
SimpleL1MuGMTCand::SimpleL1MuGMTCand ( const SimpleL1MuGMTCand mu)
SimpleL1MuGMTCand::SimpleL1MuGMTCand ( const SimpleL1MuGMTCand mu)
SimpleL1MuGMTCand::SimpleL1MuGMTCand ( const SimTrack p)

convert a FSimTrack into a SimpleL1MuGMTCand (L1MuGMTExtendedCand)

Definition at line 46 of file SimpleL1MuGMTCand.cc.

References CoreSimTrack::charge(), m_empty, m_name, m_quality, m_rank, CoreSimTrack::momentum(), myMomentum, L1MuGMTCand::setBx(), setCharge(), setEta(), L1MuGMTExtendedCand::setFwdBit(), setMomentum(), setPhi(), setPt(), L1MuGMTCand::setQuality(), and L1MuGMTExtendedCand::setRPCBit().

                                                      { 
  //  setMomentum(p->momentum());
  LorentzVector toBeRemoved(p->momentum().x(),p->momentum().y(),p->momentum().z(),p->momentum().t());
  setMomentum(toBeRemoved);
  m_name = "FastL1MuCand";
  m_empty = false;
  m_quality = 7;
  setQuality(m_quality);
  m_rank = 0;
  setEta(myMomentum.Eta());
  setPhi(myMomentum.Phi());
  setCharge(int(p->charge()));
  setPt(myMomentum.Pt());
  setBx(0);
  if ( fabs(myMomentum.eta()) > 1.04 ) 
    setFwdBit(1);
  else
    setFwdBit(0);
  setRPCBit(0);

}
SimpleL1MuGMTCand::SimpleL1MuGMTCand ( const SimTrack p,
unsigned  etaIndex,
unsigned  phiIndex,
unsigned  pTIndex,
float  etaValue,
float  phiValue,
float  pTValue 
)
SimpleL1MuGMTCand::~SimpleL1MuGMTCand ( ) [virtual]

destructor

Definition at line 103 of file SimpleL1MuGMTCand.cc.

References reset().

                                      {

  reset();
  
}

Member Function Documentation

int SimpleL1MuGMTCand::charge ( void  ) const [inline]

get charge

Reimplemented from L1MuGMTCand.

Definition at line 70 of file SimpleL1MuGMTCand.h.

References m_charge.

Referenced by print(), FastL1MuonProducer::produce(), setCharge(), and FML1PtSmearer::smear().

{ return m_charge; }
void SimpleL1MuGMTCand::disable ( ) [inline]

disable muon candidate

Definition at line 82 of file SimpleL1MuGMTCand.h.

References m_empty.

{ m_empty = true; }
bool SimpleL1MuGMTCand::empty ( void  ) const [inline]

is it an empty muon candidate?

Reimplemented from L1MuGMTCand.

Definition at line 76 of file SimpleL1MuGMTCand.h.

References m_empty.

Referenced by operator<<(), and print().

{ return m_empty; }
void SimpleL1MuGMTCand::enable ( ) [inline]

enable muon candidate

Definition at line 79 of file SimpleL1MuGMTCand.h.

References m_empty.

{ m_empty = false; }
unsigned int SimpleL1MuGMTCand::eta ( void  ) const [inline]

get eta-code

Definition at line 64 of file SimpleL1MuGMTCand.h.

References m_eta.

Referenced by etaRegionIndex().

{ return m_eta; }
unsigned int SimpleL1MuGMTCand::etaRegionIndex ( ) const [inline]

Reimplemented from L1MuGMTCand.

Definition at line 108 of file SimpleL1MuGMTCand.h.

References eta().

{ return eta(); }
const LorentzVector SimpleL1MuGMTCand::getMomentum ( ) const [inline]

Definition at line 114 of file SimpleL1MuGMTCand.h.

References myMomentum.

Referenced by FML1EfficiencyHandler::kill(), SimpleL1MuGMTCand(), and FML1PtSmearer::smear().

{ return myMomentum; }
unsigned int SimpleL1MuGMTCand::linearizedPt ( float  lsbValue,
unsigned  maxScale 
) const [inline]

nevermind this one

Reimplemented from L1MuGMTCand.

Definition at line 103 of file SimpleL1MuGMTCand.h.

{ return 0; }
std::string SimpleL1MuGMTCand::name ( ) const [inline]

get name of object

Reimplemented from L1MuGMTCand.

Definition at line 58 of file SimpleL1MuGMTCand.h.

References m_name.

{ return m_name; }
bool SimpleL1MuGMTCand::operator!= ( const SimpleL1MuGMTCand cand) const

unequal operator

Definition at line 276 of file SimpleL1MuGMTCand.cc.

References m_charge, m_empty, m_eta, m_phi, m_pt, m_quality, and m_rank.

                                                                      {

  if ( m_empty     != cand.m_empty )     return true;
  if ( m_phi       != cand.m_phi )       return true;
  if ( m_eta       != cand.m_eta )       return true;
  if ( m_pt        != cand.m_pt )        return true;
  if ( m_charge    != cand.m_charge )    return true;
  if ( m_quality   != cand.m_quality )   return true;
  if ( m_rank      != cand.m_rank )      return true;
  return false;

}
SimpleL1MuGMTCand & SimpleL1MuGMTCand::operator= ( const SimpleL1MuGMTCand cand)

assignment operator

Definition at line 223 of file SimpleL1MuGMTCand.cc.

References m_charge, m_empty, m_eta, m_phi, m_pt, m_quality, m_rank, and m_smearedPt.

                                                                             {

  if ( this != &cand ) {
   
    m_empty     = cand.m_empty;     
    m_phi = cand.m_phi;
    m_eta = cand.m_eta;
    m_pt = cand.m_pt;
    m_charge = cand.m_charge;
    m_quality   = cand.m_quality;    
    m_rank      = cand.m_rank;
    m_smearedPt = cand.m_smearedPt;
   
  }
  return *this;

}
SimpleL1MuGMTCand * SimpleL1MuGMTCand::operator= ( const SimTrack p)

assignment operator for a FSimTrack

Definition at line 245 of file SimpleL1MuGMTCand.cc.

References CoreSimTrack::charge(), m_empty, CoreSimTrack::momentum(), setCharge(), setEta(), setPhi(), setPt(), and mathSSE::sqrt().

                                                                 {

  m_empty = false;
  setEta(p->momentum().eta());
  setPhi(p->momentum().phi());
  setCharge(int(p->charge()));
  setPt(std::sqrt(p->momentum().perp2()));
  
  return this;
}
bool SimpleL1MuGMTCand::operator== ( const SimpleL1MuGMTCand cand) const

equal operator

Definition at line 259 of file SimpleL1MuGMTCand.cc.

References m_charge, m_empty, m_eta, m_phi, m_pt, m_quality, and m_rank.

                                                                      {

  if ( m_empty     != cand.m_empty )     return false;
  if ( m_phi       != cand.m_phi )       return false;
  if ( m_eta       != cand.m_eta )       return false;
  if ( m_pt        != cand.m_pt )        return false;
  if ( m_charge    != cand.m_charge )    return false;
  if ( m_quality   != cand.m_quality )   return false;
  if ( m_rank      != cand.m_rank )      return false;
  return true;

}
unsigned int SimpleL1MuGMTCand::phi ( void  ) const [inline]

get phi-code

Definition at line 61 of file SimpleL1MuGMTCand.h.

References m_phi.

Referenced by phiRegionIndex(), and setPhi().

{ return m_phi; }
unsigned int SimpleL1MuGMTCand::phiRegionIndex ( ) const [inline]

Reimplemented from L1MuGMTCand.

Definition at line 110 of file SimpleL1MuGMTCand.h.

References phi().

{ return phi(); }
void SimpleL1MuGMTCand::print ( void  ) const

print parameters of muon candidate

Reimplemented from L1MuGMTExtendedCand.

Definition at line 293 of file SimpleL1MuGMTCand.cc.

References charge(), gather_cfg::cout, empty(), L1MuGMTCand::etaValue(), L1MuGMTCand::phiValue(), L1MuGMTCand::ptValue(), and rank().

                                    {

  using namespace std;

  if ( !empty() ) {
    cout.setf(ios::showpoint);
    cout.setf(ios::right,ios::adjustfield);
    cout << setiosflags(ios::showpoint | ios::fixed)
         << "pt = "  << setw(5) << setprecision(1) << ptValue() << " GeV  "
         << "charge = " << setw(2) << charge() << " "
         << "eta = " << setw(5) << setprecision(2) << etaValue() << "  "
         << "phi = " << setw(5) << setprecision(3) << phiValue() << " rad  "
         << "rank = " << setw(6) << rank() << endl;
  }

}
unsigned int SimpleL1MuGMTCand::pt ( ) const [inline]

get pt-code

Definition at line 67 of file SimpleL1MuGMTCand.h.

References m_pt.

Referenced by setPt().

{ return m_pt; }
unsigned int SimpleL1MuGMTCand::quality ( void  ) const [inline]

get quality (not implemented for FAMOS)

Reimplemented from L1MuGMTCand.

Definition at line 106 of file SimpleL1MuGMTCand.h.

References m_quality.

{ return m_quality; }
unsigned int SimpleL1MuGMTCand::rank ( ) const [inline]

get rank

Reimplemented from L1MuGMTExtendedCand.

Definition at line 73 of file SimpleL1MuGMTCand.h.

References m_rank.

Referenced by SimpleL1MuGMTCand::Rank::operator()(), print(), and setRank().

{ return m_rank; }
void SimpleL1MuGMTCand::reset ( void  )

reset muon candidate

Reimplemented from L1MuGMTExtendedCand.

Definition at line 111 of file SimpleL1MuGMTCand.cc.

References m_charge, m_empty, m_eta, m_phi, m_pt, m_quality, m_rank, and m_smearedPt.

Referenced by ~SimpleL1MuGMTCand().

                              {

  m_empty   = true;
  m_phi     = 0;
  m_eta     = 31;
  m_pt      = 0;
  m_charge  = 0;
  m_quality = 0;
  m_rank = 0;
  m_smearedPt = 0;

}
void SimpleL1MuGMTCand::setCharge ( int  charge)

set charge and packed code of muon candidate

Definition at line 200 of file SimpleL1MuGMTCand.cc.

References charge(), m_charge, and L1MuGMTCand::setChargePacked().

Referenced by operator=(), SimpleL1MuGMTCand(), and FML1PtSmearer::smear().

                                            {

 m_charge = charge;
 setChargePacked(charge == 1 ? 0 : 1);

}
void SimpleL1MuGMTCand::setEta ( float  eta)

set eta-value and packed code of muon candidate

Definition at line 152 of file SimpleL1MuGMTCand.cc.

References diffTreeTool::diff, etaScale, i, getHLTprescales::index, m_eta, L1MuGMTCand::setEtaPacked(), and L1MuGMTCand::setEtaValue().

Referenced by operator=(), and SimpleL1MuGMTCand().

                                        {

  int index = 0;
  float mindiff = 1000.0;
  
  for ( int i = 0; i < 63; i++ ) {
    float diff = fabs(SimpleL1MuGMTCand::etaScale[i]-eta); 
    if ( diff <= mindiff ) {
      mindiff = diff; 
      index = i;
    }
  }
  
  m_eta = index;
  setEtaPacked(m_eta & 63 );
  setEtaValue(etaScale[m_eta]);

}
void SimpleL1MuGMTCand::setMomentum ( LorentzVector  m) [inline]

Definition at line 113 of file SimpleL1MuGMTCand.h.

References m, and myMomentum.

Referenced by SimpleL1MuGMTCand().

{ myMomentum = m; }
void SimpleL1MuGMTCand::setPhi ( float  phi)

set phi-value and packed code of muon candidate

Definition at line 128 of file SimpleL1MuGMTCand.cc.

References diffTreeTool::diff, i, getHLTprescales::index, m_phi, M_PI, phi(), phiScale, L1MuGMTCand::setPhiPacked(), and L1MuGMTCand::setPhiValue().

Referenced by operator=(), and SimpleL1MuGMTCand().

                                        {

  int index = 0;
  float mindiff = 1000.0;
  
  if (phi < 0.) {phi = 2* M_PI + phi; }
  for ( int i = 0; i < 144; i++ ) {
    float diff = fabs(SimpleL1MuGMTCand::phiScale[i]-phi); 
    if ( diff <= mindiff ) {
      mindiff = diff; 
      index = i;
    }
  }
  
  m_phi = index;
  setPhiPacked(m_phi & 255 );
  setPhiValue(phiScale[m_phi]);

}
void SimpleL1MuGMTCand::setPt ( float  pt)

set pt-value and packed code of muon candidate

Definition at line 175 of file SimpleL1MuGMTCand.cc.

References diffTreeTool::diff, i, getHLTprescales::index, m_pt, m_smearedPt, pt(), ptScale, L1MuGMTCand::setPtPacked(), and L1MuGMTCand::setPtValue().

Referenced by operator=(), and SimpleL1MuGMTCand().

                                      {

  int index = 0;
  m_smearedPt = pt;
  
  float mindiff = 1000.0;
  
  for ( int i = 0; i < 32; i++ ) {
    float diff = fabs(SimpleL1MuGMTCand::ptScale[i]-pt); 
    if ( diff <= mindiff ) {
      mindiff = diff; 
      index = i;
    }
  }

  m_pt = index;
  setPtPacked(m_pt & 31 );
  setPtValue(ptScale[m_pt]);

}
void SimpleL1MuGMTCand::setRank ( unsigned int  rank) [inline]

set rank

Reimplemented from L1MuGMTExtendedCand.

Definition at line 97 of file SimpleL1MuGMTCand.h.

References m_rank, and rank().

Referenced by ParamL3MuonProducer::produce(), and FastL1MuonProducer::produce().

{ m_rank = rank; }
float SimpleL1MuGMTCand::smearedPt ( ) const [inline]

return the smeared L1 Pt value before discretization in 32-bit

Definition at line 100 of file SimpleL1MuGMTCand.h.

References m_smearedPt.

Referenced by FML1PtSmearer::smear().

{ return m_smearedPt; }

Friends And Related Function Documentation

std::ostream& operator<< ( std::ostream &  s,
const SimpleL1MuGMTCand id 
) [friend]

output stream operator

Definition at line 314 of file SimpleL1MuGMTCand.cc.

                                                                   {

  using namespace std;

  if ( !id.empty() ) {
    s << setiosflags(ios::showpoint | ios::fixed) 
      << "pt = "  << setw(5) << setprecision(1) << id.ptValue() << " GeV  "
      << "charge = " << setw(2) << id.charge() << " " 
      << "eta = " << setw(5) << setprecision(2) << id.etaValue() << "  " 
      << "phi = " << setw(5) << setprecision(3) << id.phiValue() << " rad  ";
      
  }
  return s;

}

Member Data Documentation

const float SimpleL1MuGMTCand::etaScale [static]
Initial value:
 {
           -2.40, -2.35, -2.30, -2.25, -2.20, -2.15, -2.10, -2.05,
           -2.00, -1.95, -1.90, -1.85, -1.80, -1.75, -1.70, -1.60,
           -1.50, -1.40, -1.30, -1.20, -1.10, -1.00, -0.90, -0.80, 
           -0.70, -0.60, -0.50, -0.40, -0.30, -0.20, -0.10,  0.00,
            0.10,  0.20,  0.30,  0.40,  0.50,  0.60,  0.70,  0.80, 
            0.90,  1.00,  1.10,  1.20,  1.30,  1.40,  1.50,  1.60,
            1.70,  1.75,  1.80,  1.85,  1.90,  1.95,  2.00,  2.05,
            2.10,  2.15,  2.20,  2.25,  2.30,  2.35,  2.40 }

Definition at line 145 of file SimpleL1MuGMTCand.h.

Referenced by setEta().

unsigned int SimpleL1MuGMTCand::m_eta [private]
std::string SimpleL1MuGMTCand::m_name [private]

Reimplemented from L1MuGMTCand.

Definition at line 150 of file SimpleL1MuGMTCand.h.

Referenced by name(), and SimpleL1MuGMTCand().

unsigned int SimpleL1MuGMTCand::m_phi [private]
unsigned int SimpleL1MuGMTCand::m_pt [private]

Definition at line 155 of file SimpleL1MuGMTCand.h.

Referenced by operator!=(), operator=(), operator==(), pt(), reset(), setPt(), and SimpleL1MuGMTCand().

unsigned int SimpleL1MuGMTCand::m_quality [private]
unsigned int SimpleL1MuGMTCand::m_rank [private]

Reimplemented from L1MuGMTExtendedCand.

Definition at line 158 of file SimpleL1MuGMTCand.h.

Referenced by operator!=(), operator=(), operator==(), rank(), reset(), setRank(), and SimpleL1MuGMTCand().

Definition at line 159 of file SimpleL1MuGMTCand.h.

Referenced by operator=(), reset(), setPt(), SimpleL1MuGMTCand(), and smearedPt().

Definition at line 161 of file SimpleL1MuGMTCand.h.

Referenced by getMomentum(), setMomentum(), and SimpleL1MuGMTCand().

const float SimpleL1MuGMTCand::phiScale [static]
Initial value:
 {
  0.0000,   0.0436,   0.0873,   0.1309,   0.1745,   0.2182, 
  0.2618,   0.3054,   0.3491,   0.3927,   0.4363,   0.4800, 
  0.5236,   0.5672,   0.6109,   0.6545,   0.6981,   0.7418, 
  0.7854,   0.8290,   0.8727,   0.9163,   0.9599,   1.0036, 
  1.0472,   1.0908,   1.1345,   1.1781,   1.2217,   1.2654, 
  1.3090,   1.3526,   1.3963,   1.4399,   1.4835,   1.5272, 
  1.5708,   1.6144,   1.6581,   1.7017,   1.7453,   1.7890, 
  1.8326,   1.8762,   1.9199,   1.9635,   2.0071,   2.0508, 
  2.0944,   2.1380,   2.1817,   2.2253,   2.2689,   2.3126, 
  2.3562,   2.3998,   2.4435,   2.4871,   2.5307,   2.5744, 
  2.6180,   2.6616,   2.7053,   2.7489,   2.7925,   2.8362, 
  2.8798,   2.9234,   2.9671,   3.0107,   3.0543,   3.0980, 
  3.1416,   3.1852,   3.2289,   3.2725,   3.3161,   3.3598, 
  3.4034,   3.4470,   3.4907,   3.5343,   3.5779,   3.6216, 
  3.6652,   3.7088,   3.7525,   3.7961,   3.8397,   3.8834, 
  3.9270,   3.9706,   4.0143,   4.0579,   4.1015,   4.1452, 
  4.1888,   4.2324,   4.2761,   4.3197,   4.3633,   4.4070, 
  4.4506,   4.4942,   4.5379,   4.5815,   4.6251,   4.6688, 
  4.7124,   4.7560,   4.7997,   4.8433,   4.8869,   4.9306, 
  4.9742,   5.0178,   5.0615,   5.1051,   5.1487,   5.1924, 
  5.2360,   5.2796,   5.3233,   5.3669,   5.4105,   5.4542, 
  5.4978,   5.5414,   5.5851,   5.6287,   5.6723,   5.7160, 
  5.7596,   5.8032,   5.8469,   5.8905,   5.9341,   5.9778, 
  6.0214,   6.0650,   6.1087,   6.1523,   6.1959,   6.2396 }

Definition at line 146 of file SimpleL1MuGMTCand.h.

Referenced by setPhi().

const float SimpleL1MuGMTCand::ptScale [static]
Initial value:
 { 
            0.0,   0.0,   1.5,   2.0,   2.5,   3.0,   3.5,   4.0,
            4.5,   5.0,   6.0,   7.0,   8.0,  10.0,  12.0,  14.0,  
           16.0,  18.0,  20.0,  25.0,  30.0,  35.0,  40.0,  45.0, 
           50.0,  60.0,  70.0,  80.0,  90.0, 100.0, 120.0, 140.0 }

Definition at line 144 of file SimpleL1MuGMTCand.h.

Referenced by setPt(), and FML1PtSmearer::smear().