CMS 3D CMS Logo

List of all members | Public Types | Public Member Functions | Static Public Attributes | Private Attributes
CSCRecHit2D Class Referencefinal

#include <CSCRecHit2D.h>

Inheritance diagram for CSCRecHit2D:
RecHit2DLocalPos TrackingRecHit

Public Types

typedef edm::RangeMap< int, std::vector< float > > ADCContainer
 
typedef std::vector< int > ChannelContainer
 
enum  SharedInputType {
  all = TrackingRecHit::all, some = TrackingRecHit::some, allWires, someWires,
  allStrips, someStrips
}
 
- Public Types inherited from RecHit2DLocalPos
typedef GloballyPositioned< float >::LocalPoint LocalPoint
 
- Public Types inherited from TrackingRecHit
typedef std::vector< ConstRecHitPointerConstRecHitContainer
 
using ConstRecHitPointer = std::shared_ptr< TrackingRecHit const >
 
typedef unsigned int id_type
 
typedef std::vector< ConstRecHitPointerRecHitContainer
 
using RecHitPointer = std::shared_ptr< TrackingRecHit const >
 
enum  SharedInputType { all, some }
 definition of equality via shared input More...
 
enum  Type {
  valid = 0, missing = 1, inactive = 2, bad = 3,
  missing_inner = 4, missing_outer = 5
}
 

Public Member Functions

float adcs (unsigned int strip, unsigned int timebin) const
 Map of strip ADCs for strips comprising the rechit. More...
 
short int badStrip () const
 flags for involvement of 'bad' channels More...
 
short int badWireGroup () const
 
int channels (unsigned int i) const
 Extracting strip channel numbers comprising the rechit - low. More...
 
int channelsl1a (unsigned int i) const
 Extract the L1A phase bits from the StripChannelContainer - high. More...
 
CSCRecHit2Dclone () const
 RecHit2DLocalPos base class interface. More...
 
CSCDetId cscDetId () const
 
 CSCRecHit2D ()
 
 CSCRecHit2D (const CSCDetId &id, const LocalPoint &pos, const LocalError &err, const ChannelContainer &channels, const ADCContainer &adcs, const ChannelContainer &wgroups, float tpeak, float posInStrip, float errInStrip, int quality, short int badStrip=0, short int badWireGroup=0, int scaledWireTime=0, float energyDeposit=-995.)
 
float energyDepositedInLayer () const
 
float errorWithinStrip () const
 The uncertainty of the estimated position within the strip. More...
 
short int hitWire () const
 L1A. More...
 
LocalPoint localPosition () const
 
LocalError localPositionError () const
 
unsigned int nStrips () const
 
unsigned int nTimeBins () const
 
unsigned int nWireGroups () const
 
float positionWithinStrip () const
 The estimated position within the strip. More...
 
void print () const
 Print the content of the RecHit2D including L1A (for debugging) More...
 
int quality () const
 quality flag of the reconstruction More...
 
virtual bool sharesInput (const TrackingRecHit *other, TrackingRecHit::SharedInputType what) const
 Returns true if the two TrackingRecHits are using the same input information, false otherwise. In this case, looks at the geographical ID and channel numbers for strips and wires. More...
 
bool sharesInput (const TrackingRecHit *other, CSCRecHit2D::SharedInputType what) const
 Returns true if the two TrackingRecHits are using the same input information, false otherwise. In this case, looks at the geographical ID and channel numbers for strips and wires. More...
 
bool sharesInput (const CSCRecHit2D *otherRecHit, CSCRecHit2D::SharedInputType what) const
 Returns true if the two CSCRecHits are using the same input information, false otherwise. In this case, looks at the geographical ID and channel numbers for strips and wires. More...
 
float tpeak () const
 Fitted peaking time. More...
 
short int wgroupsBX () const
 
float wireTime () const
 
 ~CSCRecHit2D ()
 
- Public Member Functions inherited from RecHit2DLocalPos
virtual int dimension () const
 
virtual AlgebraicVector parameters () const
 
virtual AlgebraicSymMatrix parametersError () const
 
virtual AlgebraicMatrix projectionMatrix () const
 
 RecHit2DLocalPos (DetId id)
 
 RecHit2DLocalPos (TrackingRecHit::id_type id=0)
 
virtual std::vector< const TrackingRecHit * > recHits () const
 Access to component RecHits (if any) More...
 
virtual std::vector< TrackingRecHit * > recHits ()
 Non-const access to component RecHits (if any) More...
 
virtual ~RecHit2DLocalPos ()
 
- Public Member Functions inherited from TrackingRecHit
virtual bool canImproveWithTrack () const
 
RecHitPointer cloneForFit (const GeomDet &idet) const
 
virtual TrackingRecHitcloneHit () const
 
virtual RecHitPointer cloneSH () const
 
const GeomDetdet () const
 
virtual const GeomDetUnitdetUnit () const
 
virtual float errorGlobalR () const
 
virtual float errorGlobalRPhi () const
 
virtual float errorGlobalZ () const
 
DetId geographicalId () const
 
virtual void getKfComponents (KfComponentsHolder &holder) const
 
unsigned int getRTTI () const
 
Type getType () const
 
virtual GlobalPoint globalPosition () const
 
virtual GlobalError globalPositionError () const
 
virtual bool hasPositionAndError () const
 to be redefined by daughter class More...
 
virtual TrackingRecHit const * hit () const
 
bool isValid () const
 
id_type rawId () const
 
virtual void recHitsV (std::vector< const TrackingRecHit * > &) const
 
virtual void recHitsV (std::vector< TrackingRecHit * > &)
 
virtual void setDet (const GeomDet &idet)
 
virtual const Surfacesurface () const
 
 TrackingRecHit (DetId id, Type type=valid)
 
 TrackingRecHit (id_type id=0, Type type=valid)
 
 TrackingRecHit (DetId id, unsigned int rt, Type type=valid)
 
 TrackingRecHit (const GeomDet &idet, Type type=valid)
 
 TrackingRecHit (const GeomDet &idet, unsigned int rt, Type type=valid)
 
 TrackingRecHit (const GeomDet &idet, TrackingRecHit const &rh)
 
virtual ConstRecHitContainer transientHits () const
 
Type type () const
 
virtual float weight () const
 
virtual ~TrackingRecHit ()
 

Static Public Attributes

static const unsigned int MAXSTRIPS =3
 
static const unsigned int MAXTIMEBINS =4
 
static const unsigned int N_ADC =MAXSTRIPS*MAXTIMEBINS
 
- Static Public Attributes inherited from TrackingRecHit
static const int rttiShift = 24
 
static const int typeMask = 0xf
 

Private Attributes

short int hitWire_
 
unsigned char nStrips_
 
unsigned char nTimeBins_
 
unsigned char nWireGroups_
 
float theADCs_ [N_ADC]
 
short int theBadStrip
 
short int theBadWireGroup
 
float theEnergyDeposit
 
float theErrorWithinStrip
 
unsigned char theL1APhaseBits_ [MAXSTRIPS]
 
LocalError theLocalError
 
LocalPoint theLocalPosition
 
float thePositionWithinStrip
 
int theQuality
 
int theScaledWireTime
 
unsigned char theStrips_ [MAXSTRIPS]
 
float theTpeak
 
short int theWGroupsBX_
 

Additional Inherited Members

- Protected Member Functions inherited from TrackingRecHit
void setId (id_type iid)
 
void setRTTI (unsigned int rt)
 
void setType (Type ttype)
 

Detailed Description

Describes a 2-dim reconstructed hit in one layer of an Endcap Muon CSC.

Author
Tim Cox et al.

Definition at line 18 of file CSCRecHit2D.h.

Member Typedef Documentation

typedef edm::RangeMap<int, std::vector<float> > CSCRecHit2D::ADCContainer

Definition at line 23 of file CSCRecHit2D.h.

typedef std::vector<int> CSCRecHit2D::ChannelContainer

Definition at line 22 of file CSCRecHit2D.h.

Member Enumeration Documentation

Constructor & Destructor Documentation

CSCRecHit2D::CSCRecHit2D ( )

Definition at line 4 of file CSCRecHit2D.cc.

References i, j, MAXSTRIPS, MAXTIMEBINS, theADCs_, and theStrips_.

Referenced by clone().

4  :
5  theTpeak( -999. ),
7  theErrorWithinStrip(-999.),
8  theEnergyDeposit( -994. ),
9  theQuality( 0 ),
10  theScaledWireTime( 0 ),
11  theBadStrip( 0 ),
12  theBadWireGroup( 0 ),
13  nStrips_(0),
14  nWireGroups_(0),
15  nTimeBins_(0),
16  theLocalPosition(0.,0.),
17  theLocalError(0.,0.,0.)
18 {
19  for ( unsigned int i=0; i< MAXSTRIPS; i++) theStrips_[i]=0;
20  for ( unsigned int i=0; i< MAXSTRIPS; i++)
21  for ( unsigned int j=0; j< MAXTIMEBINS; j++)
22  theADCs_[i*MAXTIMEBINS+j]=0;
23 }
int i
Definition: DBlmapReader.cc:9
LocalPoint theLocalPosition
Definition: CSCRecHit2D.h:133
unsigned char nTimeBins_
Definition: CSCRecHit2D.h:127
unsigned char nWireGroups_
Definition: CSCRecHit2D.h:127
unsigned char nStrips_
Definition: CSCRecHit2D.h:127
static const unsigned int MAXSTRIPS
Definition: CSCRecHit2D.h:27
short int theBadStrip
Definition: CSCRecHit2D.h:124
short int theBadWireGroup
Definition: CSCRecHit2D.h:125
LocalError theLocalError
Definition: CSCRecHit2D.h:134
int j
Definition: DBlmapReader.cc:9
float theTpeak
Definition: CSCRecHit2D.h:116
int theScaledWireTime
Definition: CSCRecHit2D.h:121
float thePositionWithinStrip
Definition: CSCRecHit2D.h:117
float theErrorWithinStrip
Definition: CSCRecHit2D.h:118
float theEnergyDeposit
Definition: CSCRecHit2D.h:119
static const unsigned int MAXTIMEBINS
Definition: CSCRecHit2D.h:28
float theADCs_[N_ADC]
Definition: CSCRecHit2D.h:131
unsigned char theStrips_[MAXSTRIPS]
Definition: CSCRecHit2D.h:130
CSCRecHit2D::CSCRecHit2D ( const CSCDetId id,
const LocalPoint pos,
const LocalError err,
const ChannelContainer channels,
const ADCContainer adcs,
const ChannelContainer wgroups,
float  tpeak,
float  posInStrip,
float  errInStrip,
int  quality,
short int  badStrip = 0,
short int  badWireGroup = 0,
int  scaledWireTime = 0,
float  energyDeposit = -995. 
)

Definition at line 25 of file CSCRecHit2D.cc.

References gather_cfg::cout, hitWire_, i, j, gen::k, MAXSTRIPS, MAXTIMEBINS, nStrips_, nTimeBins_, nWireGroups_, edm::RangeMap< ID, C, P >::size(), theADCs_, theL1APhaseBits_, theStrips_, theWGroupsBX_, and tmp.

36  :
37  RecHit2DLocalPos( id ),
38  theTpeak( tpeak ),
39  thePositionWithinStrip( posInStrip ),
40  theErrorWithinStrip( errInStrip ),
41  theEnergyDeposit( energyDeposit ),
42  theQuality( quality ),
43  theScaledWireTime ( scaledWireTime ),
45  theLocalPosition( pos ),
46  theLocalError( err )
47 {
48  nStrips_=channels.size();
49  nWireGroups_=wgroups.size();
50 
51  if ( nStrips_ > MAXSTRIPS ) {
52  std::cout << "CSCRecHit2D: not enough strips in DataFormat! " << unsigned(nStrips_) << std::endl;
54  }
55 
56  for ( unsigned int i=0; i< MAXSTRIPS; i++) theStrips_[i]=0;
57  for ( unsigned int i=0; i< MAXSTRIPS; i++) theL1APhaseBits_[i]=0;
58  for ( unsigned int i=0; i< MAXSTRIPS; i++)
59  for ( unsigned int j=0; j< MAXTIMEBINS; j++)
60  theADCs_[i*MAXTIMEBINS+j]=0;
61 
62 
63  for ( unsigned int i=0; i<nStrips_; i++) {
64  theStrips_[i]=channels[i] & 0x000000FF;
65  theL1APhaseBits_[i]=channels[i] & 0x0000FF00;
66  }
67  if (nWireGroups_>0) {
68  //take only the low bits
69  hitWire_=wgroups[nWireGroups_/2] & 0x0000FFFF;
70  theWGroupsBX_= (wgroups[nWireGroups_/2] >> 16)& 0x0000FFFF;
71  }
72  else {
73  hitWire_=0;
74  theWGroupsBX_=0;
75  }
76  ADCContainer tmp(adcs); //must be a bug in RangeMap!!!???
77  nTimeBins_=tmp.size()/nStrips_;
78  unsigned int k=0;
79  for ( unsigned int i=0; i<nStrips_; i++)
80  for ( unsigned int j=0; j<nTimeBins_; j++) {
81  theADCs_[i*MAXTIMEBINS+j]=tmp[k];
82  k++;
83  }
84 }
int i
Definition: DBlmapReader.cc:9
LocalPoint theLocalPosition
Definition: CSCRecHit2D.h:133
unsigned char nTimeBins_
Definition: CSCRecHit2D.h:127
RecHit2DLocalPos(DetId id)
unsigned char nWireGroups_
Definition: CSCRecHit2D.h:127
float tpeak() const
Fitted peaking time.
Definition: CSCRecHit2D.h:73
short int badStrip() const
flags for involvement of &#39;bad&#39; channels
Definition: CSCRecHit2D.h:85
unsigned char nStrips_
Definition: CSCRecHit2D.h:127
short int hitWire_
Definition: CSCRecHit2D.h:122
static const unsigned int MAXSTRIPS
Definition: CSCRecHit2D.h:27
short int theBadStrip
Definition: CSCRecHit2D.h:124
edm::RangeMap< int, std::vector< float > > ADCContainer
Definition: CSCRecHit2D.h:23
int channels(unsigned int i) const
Extracting strip channel numbers comprising the rechit - low.
Definition: CSCRecHit2D.h:55
short int theBadWireGroup
Definition: CSCRecHit2D.h:125
LocalError theLocalError
Definition: CSCRecHit2D.h:134
int j
Definition: DBlmapReader.cc:9
float theTpeak
Definition: CSCRecHit2D.h:116
float adcs(unsigned int strip, unsigned int timebin) const
Map of strip ADCs for strips comprising the rechit.
Definition: CSCRecHit2D.h:68
int theScaledWireTime
Definition: CSCRecHit2D.h:121
int k[5][pyjets_maxn]
float thePositionWithinStrip
Definition: CSCRecHit2D.h:117
float theErrorWithinStrip
Definition: CSCRecHit2D.h:118
int quality() const
quality flag of the reconstruction
Definition: CSCRecHit2D.h:82
std::vector< std::vector< double > > tmp
Definition: MVATrainer.cc:100
float theEnergyDeposit
Definition: CSCRecHit2D.h:119
static const unsigned int MAXTIMEBINS
Definition: CSCRecHit2D.h:28
short int theWGroupsBX_
Definition: CSCRecHit2D.h:123
float theADCs_[N_ADC]
Definition: CSCRecHit2D.h:131
short int badWireGroup() const
Definition: CSCRecHit2D.h:86
unsigned char theStrips_[MAXSTRIPS]
Definition: CSCRecHit2D.h:130
unsigned char theL1APhaseBits_[MAXSTRIPS]
Definition: CSCRecHit2D.h:129
CSCRecHit2D::~CSCRecHit2D ( )

Definition at line 86 of file CSCRecHit2D.cc.

86 {}

Member Function Documentation

float CSCRecHit2D::adcs ( unsigned int  strip,
unsigned int  timebin 
) const
inline

Map of strip ADCs for strips comprising the rechit.

Definition at line 68 of file CSCRecHit2D.h.

References theADCs_.

Referenced by MuonTruth::analyze().

68 { return theADCs_[strip*MAXTIMEBINS+timebin]; }
static const unsigned int MAXTIMEBINS
Definition: CSCRecHit2D.h:28
float theADCs_[N_ADC]
Definition: CSCRecHit2D.h:131
short int CSCRecHit2D::badStrip ( ) const
inline

flags for involvement of 'bad' channels

Definition at line 85 of file CSCRecHit2D.h.

References theBadStrip.

85 { return theBadStrip; }
short int theBadStrip
Definition: CSCRecHit2D.h:124
short int CSCRecHit2D::badWireGroup ( ) const
inline

Definition at line 86 of file CSCRecHit2D.h.

References theBadWireGroup.

86 { return theBadWireGroup; }
short int theBadWireGroup
Definition: CSCRecHit2D.h:125
int CSCRecHit2D::channels ( unsigned int  i) const
inline

Extracting strip channel numbers comprising the rechit - low.

Definition at line 55 of file CSCRecHit2D.h.

References i, and theStrips_.

Referenced by MuonTruth::analyze(), CSCHitAssociator::associateCSCHitId(), CSCHitAssociator::associateHitId(), CSCSegAlgoRU::baseline(), CSCSegAlgoRU::buildSegments(), operator<<(), print(), and sharesInput().

55 { return theStrips_[i]; }
int i
Definition: DBlmapReader.cc:9
unsigned char theStrips_[MAXSTRIPS]
Definition: CSCRecHit2D.h:130
int CSCRecHit2D::channelsl1a ( unsigned int  i) const
inline

Extract the L1A phase bits from the StripChannelContainer - high.

Definition at line 59 of file CSCRecHit2D.h.

References i, and theL1APhaseBits_.

59 { return theL1APhaseBits_[i]; }
int i
Definition: DBlmapReader.cc:9
unsigned char theL1APhaseBits_[MAXSTRIPS]
Definition: CSCRecHit2D.h:129
CSCRecHit2D* CSCRecHit2D::clone ( void  ) const
inlinevirtual

RecHit2DLocalPos base class interface.

Implements RecHit2DLocalPos.

Definition at line 49 of file CSCRecHit2D.h.

References CSCRecHit2D().

49 { return new CSCRecHit2D( *this ); }
CSCDetId CSCRecHit2D::cscDetId ( ) const
inline
float CSCRecHit2D::energyDepositedInLayer ( ) const
inline

Energy deposited in the layer. Note: this value is dE. In order to get the dE/dX, you will need to divide by the path length. Specific failure values... If the user has chosen not to use the gas gain correction —> -998. If the gas gain correction from the database is a bad value -> -997. If it is an edge strip -----------------------------------—> -996. If gas-gain is OK, but the ADC vector is the wrong size -—> -999. If the user has created the Rechit without the energy deposit> -995. If the user has created the Rechit with no arguments -----—> -994.

Definition at line 100 of file CSCRecHit2D.h.

References trackingPlots::other, print(), sharesInput(), and theEnergyDeposit.

100 { return theEnergyDeposit; }
float theEnergyDeposit
Definition: CSCRecHit2D.h:119
float CSCRecHit2D::errorWithinStrip ( ) const
inline

The uncertainty of the estimated position within the strip.

Definition at line 79 of file CSCRecHit2D.h.

References theErrorWithinStrip.

Referenced by CSCSegAlgoRU::areHitsCloseInGlobalPhi(), CSCSegAlgoRU::isHitNearSegment(), and operator<<().

79 { return theErrorWithinStrip;} ;
float theErrorWithinStrip
Definition: CSCRecHit2D.h:118
short int CSCRecHit2D::hitWire ( ) const
inline

L1A.

Container of wire groups comprising the rechit

Definition at line 62 of file CSCRecHit2D.h.

References hitWire_.

Referenced by CSCSegAlgoRU::areHitsCloseInR(), CSCSegAlgoRU::buildSegments(), CSCSegAlgoRU::isHitNearSegment(), operator<<(), and sharesInput().

62 { return hitWire_;}
short int hitWire_
Definition: CSCRecHit2D.h:122
LocalPoint CSCRecHit2D::localPosition ( ) const
inlinevirtual
LocalError CSCRecHit2D::localPositionError ( ) const
inlinevirtual
unsigned int CSCRecHit2D::nStrips ( ) const
inline
unsigned int CSCRecHit2D::nTimeBins ( ) const
inline

Definition at line 70 of file CSCRecHit2D.h.

References nTimeBins_.

70 {return nTimeBins_;}
unsigned char nTimeBins_
Definition: CSCRecHit2D.h:127
unsigned int CSCRecHit2D::nWireGroups ( ) const
inline

Definition at line 65 of file CSCRecHit2D.h.

References nWireGroups_.

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

65 {return nWireGroups_;}
unsigned char nWireGroups_
Definition: CSCRecHit2D.h:127
float CSCRecHit2D::positionWithinStrip ( ) const
inline

The estimated position within the strip.

Definition at line 76 of file CSCRecHit2D.h.

References thePositionWithinStrip.

Referenced by operator<<().

76 { return thePositionWithinStrip; };
float thePositionWithinStrip
Definition: CSCRecHit2D.h:117
void CSCRecHit2D::print ( void  ) const

Print the content of the RecHit2D including L1A (for debugging)

L1A

Definition at line 165 of file CSCRecHit2D.cc.

References channels(), gather_cfg::cout, cscDetId(), TauDecayModes::dec, hitWire_, i, createfilelist::int, gen::k, localPosition(), localPositionError(), nStrips(), nWireGroups(), mathSSE::sqrt(), theBadStrip, theBadWireGroup, theErrorWithinStrip, thePositionWithinStrip, theQuality, theScaledWireTime, theTpeak, geometryCSVtoXML::xx, and geometryCSVtoXML::yy.

Referenced by energyDepositedInLayer().

165  {
166  std::cout << "CSCRecHit in CSC Detector: " << cscDetId() << std::endl;
167  std::cout << " local x = " << localPosition().x() << " +/- " << sqrt( localPositionError().xx() ) << " y = " << localPosition().y() << " +/- " << sqrt( localPositionError().yy() ) << std::endl;
168 
169  std::cout << " tpeak " << theTpeak << " psoInStrip " << thePositionWithinStrip << " errorinstrip " << theErrorWithinStrip << " " << " qual " << theQuality << " wiretime " << theScaledWireTime << " tbs " << theBadStrip << " bwg " << theBadWireGroup << std::endl;
170 
171  std::cout << " Channels: ";
172  for (unsigned int i=0; i<nStrips(); i++) {std::cout << std::dec << channels(i) << " "
173  << " (" << "HEX: " << std::hex << channels(i) << ")" << " ";
174  }
175  std::cout << std::endl;
176 
177 
179  std::cout << " L1APhase: ";
180  for (int i=0; i<(int)nStrips(); i++) {
181  std::cout << "|";
182  for (int k=0; k<8 ; k++){
183  std::cout << ((channelsl1a(i) >> (15-k)) & 0x1) << " ";}
184  std::cout << "| ";
185  }
186  std::cout << std::endl;
187 
188  std::cout << "nWireGroups " << (int)nWireGroups() << " central wire " << hitWire_ <<std::endl;
189 }
int i
Definition: DBlmapReader.cc:9
CSCDetId cscDetId() const
Definition: CSCRecHit2D.h:52
short int hitWire_
Definition: CSCRecHit2D.h:122
short int theBadStrip
Definition: CSCRecHit2D.h:124
int channels(unsigned int i) const
Extracting strip channel numbers comprising the rechit - low.
Definition: CSCRecHit2D.h:55
short int theBadWireGroup
Definition: CSCRecHit2D.h:125
LocalError localPositionError() const
Definition: CSCRecHit2D.h:51
T sqrt(T t)
Definition: SSEVec.h:18
unsigned int nStrips() const
Definition: CSCRecHit2D.h:56
float theTpeak
Definition: CSCRecHit2D.h:116
int theScaledWireTime
Definition: CSCRecHit2D.h:121
int k[5][pyjets_maxn]
float thePositionWithinStrip
Definition: CSCRecHit2D.h:117
float theErrorWithinStrip
Definition: CSCRecHit2D.h:118
LocalPoint localPosition() const
Definition: CSCRecHit2D.h:50
unsigned int nWireGroups() const
Definition: CSCRecHit2D.h:65
int CSCRecHit2D::quality ( ) const
inline

quality flag of the reconstruction

Definition at line 82 of file CSCRecHit2D.h.

References theQuality.

Referenced by operator<<().

82 { return theQuality;}
bool CSCRecHit2D::sharesInput ( const TrackingRecHit other,
TrackingRecHit::SharedInputType  what 
) const
virtual

Returns true if the two TrackingRecHits are using the same input information, false otherwise. In this case, looks at the geographical ID and channel numbers for strips and wires.

Reimplemented from TrackingRecHit.

Definition at line 88 of file CSCRecHit2D.cc.

Referenced by energyDepositedInLayer(), and sharesInput().

88  {
89 
90  // This is to satisfy the base class virtual function
91 
92  // @@ Cast the enum (!) But what if the TRH::SIT changes?!
94  return sharesInput(other, cscWhat);
95 }
virtual bool sharesInput(const TrackingRecHit *other, TrackingRecHit::SharedInputType what) const
Returns true if the two TrackingRecHits are using the same input information, false otherwise...
Definition: CSCRecHit2D.cc:88
bool CSCRecHit2D::sharesInput ( const TrackingRecHit other,
CSCRecHit2D::SharedInputType  what 
) const

Returns true if the two TrackingRecHits are using the same input information, false otherwise. In this case, looks at the geographical ID and channel numbers for strips and wires.

Definition at line 97 of file CSCRecHit2D.cc.

References MuonSubdetId::CSC, TrackingRecHit::geographicalId(), trackingPlots::other, sharesInput(), and DetId::subdetId().

97  {
98 
99  // Check to see if the TrackingRecHit is actually a CSCRecHit2D.
100  if (other->geographicalId().subdetId() != MuonSubdetId::CSC) return false;
101 
102  // Now I can static cast, because the previous guarantees that this is a CSCRecHit2D
103  const CSCRecHit2D *otherRecHit = static_cast<const CSCRecHit2D *>(other);
104 
105  return sharesInput(otherRecHit, what);
106 }
virtual bool sharesInput(const TrackingRecHit *other, TrackingRecHit::SharedInputType what) const
Returns true if the two TrackingRecHits are using the same input information, false otherwise...
Definition: CSCRecHit2D.cc:88
static const int CSC
Definition: MuonSubdetId.h:13
int subdetId() const
get the contents of the subdetector field (not cast into any detector&#39;s numbering enum) ...
Definition: DetId.h:37
DetId geographicalId() const
bool CSCRecHit2D::sharesInput ( const CSCRecHit2D otherRecHit,
CSCRecHit2D::SharedInputType  what 
) const

Returns true if the two CSCRecHits are using the same input information, false otherwise. In this case, looks at the geographical ID and channel numbers for strips and wires.

Definition at line 109 of file CSCRecHit2D.cc.

References all, allStrips, allWires, CSCDetId::channel(), channels(), cscDetId(), runEdmFileComparison::found, TrackingRecHit::geographicalId(), hitWire(), i, j, nStrips(), nWireGroups(), some, someStrips, and someWires.

109  {
110 
111  // Check to see if the geographical ID of the two are the same
112  if (geographicalId() != otherRecHit->geographicalId()) return false;
113 
114  // Trivial cases
115  if (nStrips() == 0 && otherRecHit->nStrips() == 0 && nWireGroups() == 0 && otherRecHit->nWireGroups() == 0) return true;
116  if ((what == allWires || what == someWires) && nWireGroups() == 0 && otherRecHit->nWireGroups() == 0) return true;
117  if ((what == allStrips || what == someStrips) && nStrips() == 0 && otherRecHit->nStrips() == 0) return true;
118 
119  // Check to see if the wire containers are the same length
120  if ((what == all || what == allWires) && nWireGroups() != otherRecHit->nWireGroups()) return false;
121 
122  // Check to see if the strip containers are the same length
123  if ((what == all || what == allStrips) && nStrips() != otherRecHit->nStrips()) return false;
124 
125  bool foundWire = false;
126  // Check to see if the wires are the same
127  if (what != allStrips && what != someStrips) {
128  //can we do better here?
129  if ( hitWire() != otherRecHit->hitWire() ) return false;
130  }
131 
132  // Check to see if the wires are the same
133  bool foundStrip = false;
134  if (what != allWires && what != someWires) {
135  for (unsigned int i=0; i< nStrips(); i++) {
136  bool found = false;
137  for (unsigned int j=0; j< nStrips(); j++) {
138  //a strip is a channel for all but ME1/1a chambers (where 3 ganged strips are a channel)
139  if(cscDetId().channel(channels(i))==otherRecHit->cscDetId().channel(otherRecHit->channels(j))){
140  if (what == some || what == someStrips) return true;
141  else {
142  found = true;
143  foundStrip = true;
144  break;
145  }
146  }
147  }
148  if ((what == all || what == allStrips) && !found) return false;
149  }
150  if (what == someStrips && !foundStrip) return false;
151  }
152 
153  // In case we were looking for "some" and found absolutely nothing.
154  if (!foundWire && !foundStrip) return false;
155 
156  // If we made it this far, then:
157  // 1) the detector IDs are the same
158  // 2) the channel containers have the same number of entries
159  // 3) for each entry in my channel container, I can find the same value in the other RecHit's corresponding channel container
160  // I think that means we are the same.
161  return true;
162 }
int i
Definition: DBlmapReader.cc:9
CSCDetId cscDetId() const
Definition: CSCRecHit2D.h:52
int channels(unsigned int i) const
Extracting strip channel numbers comprising the rechit - low.
Definition: CSCRecHit2D.h:55
int channel(int istrip)
Definition: CSCDetId.h:118
unsigned int nStrips() const
Definition: CSCRecHit2D.h:56
int j
Definition: DBlmapReader.cc:9
short int hitWire() const
L1A.
Definition: CSCRecHit2D.h:62
DetId geographicalId() const
unsigned int nWireGroups() const
Definition: CSCRecHit2D.h:65
float CSCRecHit2D::tpeak ( ) const
inline

Fitted peaking time.

Definition at line 73 of file CSCRecHit2D.h.

References theTpeak.

Referenced by operator<<(), and CSCSegment::time().

73 { return theTpeak; }
float theTpeak
Definition: CSCRecHit2D.h:116
short int CSCRecHit2D::wgroupsBX ( ) const
inline

Definition at line 63 of file CSCRecHit2D.h.

References theWGroupsBX_.

63 {return theWGroupsBX_;}
short int theWGroupsBX_
Definition: CSCRecHit2D.h:123
float CSCRecHit2D::wireTime ( ) const
inline

Definition at line 89 of file CSCRecHit2D.h.

References theScaledWireTime.

Referenced by operator<<(), and CSCSegment::time().

89 { return (float)theScaledWireTime/100.; }
int theScaledWireTime
Definition: CSCRecHit2D.h:121

Member Data Documentation

short int CSCRecHit2D::hitWire_
private

Definition at line 122 of file CSCRecHit2D.h.

Referenced by CSCRecHit2D(), hitWire(), and print().

const unsigned int CSCRecHit2D::MAXSTRIPS =3
static

Definition at line 27 of file CSCRecHit2D.h.

Referenced by CSCRecHit2D().

const unsigned int CSCRecHit2D::MAXTIMEBINS =4
static

Definition at line 28 of file CSCRecHit2D.h.

Referenced by CSCRecHit2D().

const unsigned int CSCRecHit2D::N_ADC =MAXSTRIPS*MAXTIMEBINS
static

Definition at line 29 of file CSCRecHit2D.h.

unsigned char CSCRecHit2D::nStrips_
private

Definition at line 127 of file CSCRecHit2D.h.

Referenced by CSCRecHit2D(), and nStrips().

unsigned char CSCRecHit2D::nTimeBins_
private

Definition at line 127 of file CSCRecHit2D.h.

Referenced by CSCRecHit2D(), and nTimeBins().

unsigned char CSCRecHit2D::nWireGroups_
private

Definition at line 127 of file CSCRecHit2D.h.

Referenced by CSCRecHit2D(), and nWireGroups().

float CSCRecHit2D::theADCs_[N_ADC]
private

Definition at line 131 of file CSCRecHit2D.h.

Referenced by adcs(), and CSCRecHit2D().

short int CSCRecHit2D::theBadStrip
private

Definition at line 124 of file CSCRecHit2D.h.

Referenced by badStrip(), and print().

short int CSCRecHit2D::theBadWireGroup
private

Definition at line 125 of file CSCRecHit2D.h.

Referenced by badWireGroup(), and print().

float CSCRecHit2D::theEnergyDeposit
private

Definition at line 119 of file CSCRecHit2D.h.

Referenced by energyDepositedInLayer().

float CSCRecHit2D::theErrorWithinStrip
private

Definition at line 118 of file CSCRecHit2D.h.

Referenced by errorWithinStrip(), and print().

unsigned char CSCRecHit2D::theL1APhaseBits_[MAXSTRIPS]
private

Definition at line 129 of file CSCRecHit2D.h.

Referenced by channelsl1a(), and CSCRecHit2D().

LocalError CSCRecHit2D::theLocalError
private

Definition at line 134 of file CSCRecHit2D.h.

Referenced by localPositionError().

LocalPoint CSCRecHit2D::theLocalPosition
private

Definition at line 133 of file CSCRecHit2D.h.

Referenced by localPosition().

float CSCRecHit2D::thePositionWithinStrip
private

Definition at line 117 of file CSCRecHit2D.h.

Referenced by positionWithinStrip(), and print().

int CSCRecHit2D::theQuality
private

Definition at line 120 of file CSCRecHit2D.h.

Referenced by print(), and quality().

int CSCRecHit2D::theScaledWireTime
private

Definition at line 121 of file CSCRecHit2D.h.

Referenced by print(), and wireTime().

unsigned char CSCRecHit2D::theStrips_[MAXSTRIPS]
private

Definition at line 130 of file CSCRecHit2D.h.

Referenced by channels(), and CSCRecHit2D().

float CSCRecHit2D::theTpeak
private

Definition at line 116 of file CSCRecHit2D.h.

Referenced by print(), and tpeak().

short int CSCRecHit2D::theWGroupsBX_
private

Definition at line 123 of file CSCRecHit2D.h.

Referenced by CSCRecHit2D(), and wgroupsBX().