Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Gem segment 76 #10485

Merged
merged 111 commits into from
Aug 26, 2015
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
111 commits
Select commit Hold shift + click to select a range
eebe4a0
removed tracked when connecting to condition DB
pietverwilligen Jul 22, 2015
6cf3897
ME0 segment in DataFormats
pietverwilligen Jul 22, 2015
2625b70
ME0 segment in DataFormats
pietverwilligen Jul 22, 2015
d84cd3e
ME0 segment in DataFormats
pietverwilligen Jul 22, 2015
951d9cb
ME0 segment in DataFormats
pietverwilligen Jul 22, 2015
e39bce5
ME0 segment in DataFormats
pietverwilligen Jul 22, 2015
f1dac80
make GEN-SIM-DIGI for all muon detectors in muon upgrade geometry
pietverwilligen Jul 22, 2015
eeed587
make RECHIT for all muon detectors in muon upgrade geometry
pietverwilligen Jul 22, 2015
19594af
test RECHIT for all muon detectors in muon upgrade geometry
pietverwilligen Jul 22, 2015
f90f55c
test RECHIT for all muon detectors in muon upgrade geometry
pietverwilligen Jul 22, 2015
12befb2
test RECHIT for all muon detectors in muon upgrade geometry
pietverwilligen Jul 22, 2015
5a9a9a5
ME0 Segment
pietverwilligen Jul 23, 2015
385b20b
booh
pietverwilligen Jul 23, 2015
6e461b2
fix printouts ME0 segment
pietverwilligen Jul 23, 2015
0f247eb
including comments made earlier for gemcsc segment
pietverwilligen Jul 30, 2015
cedcae1
adding roll mask when asking chamber id
pietverwilligen Jul 30, 2015
256226d
use design GT
pietverwilligen Jul 30, 2015
7a86683
deleted root file
pietverwilligen Jul 30, 2015
bc207ad
deleted root file
pietverwilligen Jul 30, 2015
8429f3d
added buildfile for test programs
pietverwilligen Jul 30, 2015
2d5436b
updated for use of std::unique_ptr
pietverwilligen Jul 30, 2015
925e66a
make ME0Segments
pietverwilligen Jul 30, 2015
0b3e10b
analyze ME0Segments
pietverwilligen Jul 30, 2015
aa4ab95
Merge pull request #14 from cms-sw/CMSSW_7_6_X
pietverwilligen Jul 30, 2015
b88bd5a
Delete junk.log
pietverwilligen Jul 30, 2015
ef3920e
Delete out_digi.root
pietverwilligen Jul 30, 2015
09eeb4d
Delete out_local_reco.root
pietverwilligen Jul 30, 2015
2a51474
Delete out_local_reco_me0segment.root
pietverwilligen Jul 30, 2015
f7936e7
Delete runAllGEMProducer_cfg.py
pietverwilligen Jul 30, 2015
1093e42
Delete out_digi.root
pietverwilligen Jul 30, 2015
d1c2329
Delete out_local_reco.root
pietverwilligen Jul 30, 2015
f40a954
Delete __init__.py
pietverwilligen Jul 30, 2015
e658e30
Delete __init__.pyc
pietverwilligen Jul 30, 2015
1013b0e
Delete me0Segments_cfi.pyc
pietverwilligen Jul 30, 2015
643b9e5
Merged refs/pull/10485/head from repository cms-sw
pietverwilligen Jul 31, 2015
819c84d
removed GEMRecHitAnalyzer library link
pietverwilligen Jul 31, 2015
6fad77a
testME0DetId now following change in ME0DetId
pietverwilligen Jul 31, 2015
a099ac5
Merge pull request #15 from cms-sw/CMSSW_7_6_X
pietverwilligen Aug 6, 2015
626efa7
removed splitlevel
pietverwilligen Aug 17, 2015
72f4ace
removed commented out comment lines
pietverwilligen Aug 17, 2015
24e6e8b
chambermask sets both layer and roll to zero
pietverwilligen Aug 17, 2015
5cb78d7
removed commented out use statements
pietverwilligen Aug 17, 2015
41b27a7
pass by const reference
pietverwilligen Aug 17, 2015
bb1435e
pass by const reference
pietverwilligen Aug 17, 2015
84c91b0
pass by const reference
pietverwilligen Aug 17, 2015
aac9f46
pass by const reference
pietverwilligen Aug 17, 2015
e146b34
pass by const reference
pietverwilligen Aug 17, 2015
036ed3e
add protection against dividing by zero
pietverwilligen Aug 17, 2015
32e0245
99999 --> running_max
pietverwilligen Aug 17, 2015
fcf7a2a
add functionality to ask number of layers
pietverwilligen Aug 17, 2015
4f69da3
removed magic number 5 = number of layers in ME0 chamber - 1
pietverwilligen Aug 17, 2015
22bf0b1
removed magic number 5 = number of layers in ME0 chamber - 1
pietverwilligen Aug 17, 2015
5d6ca20
use use reco::deltaPhi
pietverwilligen Aug 17, 2015
f043f50
precompute layer,phi,eta in separate loops
pietverwilligen Aug 17, 2015
7c56855
use std::unique_ptr for instance of ME0SegFit class
pietverwilligen Aug 17, 2015
0acc17d
use std::unique_ptr for instance of ME0SegFit class
pietverwilligen Aug 17, 2015
6c2cd7b
use std::unique_ptr for instance of ME0SegFit class
pietverwilligen Aug 17, 2015
2f5bc1e
pass arguments as const for function isGoodToMerge
pietverwilligen Aug 17, 2015
b940516
pass arguments as const for function isGoodToMerge
pietverwilligen Aug 17, 2015
1842b8b
define class constant running_max as static constexpr float
pietverwilligen Aug 17, 2015
ceeb5d0
moved calculation of time to the segment algorithm
pietverwilligen Aug 17, 2015
66ca7eb
moved calculation of time to the segment algorithm
pietverwilligen Aug 17, 2015
085858d
moved calculation of time to the segment algorithm
pietverwilligen Aug 17, 2015
b33423c
moved calculation of time to the segment algorithm
pietverwilligen Aug 17, 2015
e49287a
minor modification of LogDebug msg
pietverwilligen Aug 17, 2015
0088bfe
adding original version in 760pre2
pietverwilligen Aug 17, 2015
3b27600
PR version now in 760pre2
pietverwilligen Aug 17, 2015
d029d9d
PR version now in 760pre2
pietverwilligen Aug 17, 2015
a180459
changed class version according to compilation error msg
pietverwilligen Aug 17, 2015
cecdebc
PR version now in 760pre2
pietverwilligen Aug 17, 2015
05a9e2c
PR version now in 760pre2
pietverwilligen Aug 17, 2015
042afdf
PR version now in 760pre2
pietverwilligen Aug 17, 2015
29a67dc
PR version now in 760pre2
pietverwilligen Aug 17, 2015
a2d0983
PR version now in 760pre2
pietverwilligen Aug 17, 2015
7df2a07
PR version now in 760pre2
pietverwilligen Aug 17, 2015
9cd1c58
PR version now in 760pre2
pietverwilligen Aug 17, 2015
4e60987
PR version now in 760pre2
pietverwilligen Aug 17, 2015
8145720
PR version now in 760pre2
pietverwilligen Aug 17, 2015
16e33f3
PR version now in 760pre2
pietverwilligen Aug 17, 2015
d53324f
PR version now in 760pre2
pietverwilligen Aug 17, 2015
8c249ed
PR version now in 760pre2
pietverwilligen Aug 17, 2015
87d869c
PR version now in 760pre2
pietverwilligen Aug 17, 2015
0a0a2d5
PR version now in 760pre2
pietverwilligen Aug 17, 2015
89b309b
PR version now in 760pre2
pietverwilligen Aug 17, 2015
96a485c
PR version now in 760pre2
pietverwilligen Aug 17, 2015
4e1e8a6
PR version now in 760pre2
pietverwilligen Aug 17, 2015
4fa94df
protect against division by zero
pietverwilligen Aug 17, 2015
32457be
hide stringstreams necessary for formatting output behind EDM_ML_DEBUG
pietverwilligen Aug 17, 2015
f8d44ca
cleaned up comments
pietverwilligen Aug 17, 2015
2af4a05
keep valuable LogTrace msg
pietverwilligen Aug 17, 2015
fee2909
removed comments starting with $
pietverwilligen Aug 17, 2015
26e87a0
removed comments starting with $
pietverwilligen Aug 17, 2015
c22418c
Merge pull request #16 from cms-sw/CMSSW_7_6_X
pietverwilligen Aug 17, 2015
c3e2342
removed comments starting with $
pietverwilligen Aug 17, 2015
a13d553
Merge pull request #17 from cms-sw/CMSSW_7_6_X
pietverwilligen Aug 18, 2015
ecb6864
Merged GEMSegment_76X_v2 from repository pietverwilligen
pietverwilligen Aug 18, 2015
0682748
delete outdated test cfg file
pietverwilligen Aug 18, 2015
b4630b0
delete outdated test cfg file
pietverwilligen Aug 18, 2015
65c88ac
delete outdated test cfg file
pietverwilligen Aug 18, 2015
04577ec
delete outdated test cfg file
pietverwilligen Aug 18, 2015
922ed57
migrate to consumes
pietverwilligen Aug 18, 2015
f721009
migrate to consumes
pietverwilligen Aug 18, 2015
71a67a8
migrate to consumes
pietverwilligen Aug 18, 2015
703765e
migrate to consumes
pietverwilligen Aug 18, 2015
6be5174
remove empty methods and call ES for each event
pietverwilligen Aug 18, 2015
e1eaf62
use magneticfield_cff
pietverwilligen Aug 18, 2015
97da324
conclude merge
pietverwilligen Aug 18, 2015
d79e469
Merge pull request #18 from cms-sw/CMSSW_7_6_X
pietverwilligen Aug 18, 2015
8a5851d
update testME0DetId: max EtaPartition for now is 1
pietverwilligen Aug 18, 2015
093e5c4
Merge branch 'GEMSegment_76X_v1' of https://github.com/pietverwillige…
pietverwilligen Aug 18, 2015
e0ad8cd
abs value of reco::deltaPhi since it returns values in [-pi,pi]
pietverwilligen Aug 20, 2015
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
92 changes: 92 additions & 0 deletions DataFormats/GEMRecHit/interface/ME0Segment.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,92 @@
#ifndef GEMRecHit_ME0Segment_h
#define GEMRecHit_ME0Segment_h

/** \class ME0Segment derived by the CSC segment
* Describes a reconstructed track segment in the 6 layers of the ME0 system.
* This is 4-dimensional since it has an origin (x,y) and a direction (x,y)
* in the local coordinate system of the chamber.
*
* $Date: 2014/02/04 12:41:32 $
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

the line with $ [text] $ should be removed (the same comment applies to all such lines)

* \author Marcello Maggi
*/

#include <DataFormats/TrackingRecHit/interface/RecSegment.h>
#include <DataFormats/GEMRecHit/interface/ME0RecHitCollection.h>

#include <iosfwd>

class ME0DetId;

class ME0Segment GCC11_FINAL : public RecSegment {

public:

/// Default constructor
ME0Segment() : theChi2(0.){}

/// Constructor
ME0Segment(const std::vector<const ME0RecHit*>& proto_segment, LocalPoint origin,
LocalVector direction, AlgebraicSymMatrix errors, double chi2);

ME0Segment(const std::vector<const ME0RecHit*>& proto_segment, LocalPoint origin,
LocalVector direction, AlgebraicSymMatrix errors, double chi2, double time, double timeErr);

/// Destructor
virtual ~ME0Segment();

//--- Base class interface
ME0Segment* clone() const { return new ME0Segment(*this); }

LocalPoint localPosition() const { return theOrigin; }
LocalError localPositionError() const ;

LocalVector localDirection() const { return theLocalDirection; }
LocalError localDirectionError() const ;

/// Parameters of the segment, for the track fit in the order (dx/dz, dy/dz, x, y )
AlgebraicVector parameters() const;

/// Covariance matrix of parameters()
AlgebraicSymMatrix parametersError() const { return theCovMatrix; }

/// The projection matrix relates the trajectory state parameters to the segment parameters().
virtual AlgebraicMatrix projectionMatrix() const;

virtual std::vector<const TrackingRecHit*> recHits() const;

virtual std::vector<TrackingRecHit*> recHits();

double chi2() const { return theChi2; };

virtual int dimension() const { return 4; }

virtual int degreesOfFreedom() const { return 2*nRecHits() - 4;}

//--- Extension of the interface

const std::vector<ME0RecHit>& specificRecHits() const { return theME0RecHits; }

int nRecHits() const { return theME0RecHits.size(); }

ME0DetId me0DetId() const { return geographicalId(); }

float time() const { return theTimeValue; }
float timeErr() const { return theTimeUncrt; }

void print() const;

private:

std::vector<ME0RecHit> theME0RecHits;
LocalPoint theOrigin; // in chamber frame - the GeomDet local coordinate system
LocalVector theLocalDirection; // in chamber frame - the GeomDet local coordinate system
AlgebraicSymMatrix theCovMatrix; // the covariance matrix
double theChi2; // the Chi squared of the segment fit
double theTimeValue; // the best time estimate of the segment
double theTimeUncrt; // the uncertainty on the time estimation

};

std::ostream& operator<<(std::ostream& os, const ME0Segment& seg);

#endif
24 changes: 24 additions & 0 deletions DataFormats/GEMRecHit/interface/ME0SegmentCollection.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
#ifndef DataFormats_ME0SegmentCollection_H
#define DataFormats_ME0SegmentCollection_H

/** \class ME0SegmentCollection
*
* The collection of ME0Segment's. See \ref CSCSegmentCollection.h for details from which is derived.
*
* $Date: 2014/02/04 10:08:15 $
* \author Marcello Maggi
*/

#include <DataFormats/MuonDetId/interface/ME0DetId.h>
#include <DataFormats/GEMRecHit/interface/ME0Segment.h>

#include <DataFormats/Common/interface/RangeMap.h>
#include <DataFormats/Common/interface/ClonePolicy.h>
#include <DataFormats/Common/interface/OwnVector.h>

typedef edm::RangeMap <ME0DetId, edm::OwnVector<ME0Segment> > ME0SegmentCollection;

#include <DataFormats/Common/interface/Ref.h>
typedef edm::Ref<ME0SegmentCollection> ME0SegmentRef;

#endif
127 changes: 127 additions & 0 deletions DataFormats/GEMRecHit/src/ME0Segment.cc
Original file line number Diff line number Diff line change
@@ -0,0 +1,127 @@
/** \file ME0egment.cc
*
* $Date: 2014/02/04 12:41:33 $
* \author Marcello Maggi
*/
#include "FWCore/MessageLogger/interface/MessageLogger.h"
#include <DataFormats/GEMRecHit/interface/ME0Segment.h>
#include <iostream>

namespace {
// define a Super Layer Id from the first layer of the first rechits, and put to first layer
inline
DetId buildDetId(ME0DetId id) {
return ME0DetId(id.region(),1,id.chamber(),id.roll());
}
}

class ProjectionMatrixDiag {
// Aider class to make the return of the projection Matrix thread-safe
protected:
AlgebraicMatrix theProjectionMatrix;
public:
ProjectionMatrixDiag() : theProjectionMatrix(4,5,0) {
theProjectionMatrix[0][1] = 1;
theProjectionMatrix[1][2] = 1;
theProjectionMatrix[2][3] = 1;
theProjectionMatrix[3][4] = 1;
}
const AlgebraicMatrix &getMatrix() const {
return (theProjectionMatrix);
}
};


ME0Segment::ME0Segment(const std::vector<const ME0RecHit*>& proto_segment, LocalPoint origin,
LocalVector direction, AlgebraicSymMatrix errors, double chi2) :
RecSegment(buildDetId(proto_segment.front()->me0Id())),
theOrigin(origin),
theLocalDirection(direction), theCovMatrix(errors), theChi2(chi2){
theTimeValue = 0.0;
theTimeUncrt = 0.0;
for(unsigned int i=0; i<proto_segment.size(); ++i)
theME0RecHits.push_back(*proto_segment[i]);
}

ME0Segment::ME0Segment(const std::vector<const ME0RecHit*>& proto_segment, LocalPoint origin,
LocalVector direction, AlgebraicSymMatrix errors, double chi2, double time, double timeErr) :
RecSegment(buildDetId(proto_segment.front()->me0Id())),
theOrigin(origin),
theLocalDirection(direction), theCovMatrix(errors), theChi2(chi2){
theTimeValue = time;
theTimeUncrt = timeErr;

for(unsigned int i=0; i<proto_segment.size(); ++i)
theME0RecHits.push_back(*proto_segment[i]);
}

ME0Segment::~ME0Segment() {}

std::vector<const TrackingRecHit*> ME0Segment::recHits() const{
std::vector<const TrackingRecHit*> pointersOfRecHits;
for (std::vector<ME0RecHit>::const_iterator irh = theME0RecHits.begin(); irh!=theME0RecHits.end(); ++irh) {
pointersOfRecHits.push_back(&(*irh));
}
return pointersOfRecHits;
}

std::vector<TrackingRecHit*> ME0Segment::recHits() {

std::vector<TrackingRecHit*> pointersOfRecHits;
for (std::vector<ME0RecHit>::iterator irh = theME0RecHits.begin(); irh!=theME0RecHits.end(); ++irh) {
pointersOfRecHits.push_back(&(*irh));
}
return pointersOfRecHits;
}

LocalError ME0Segment::localPositionError() const {
return LocalError(theCovMatrix[2][2], theCovMatrix[2][3], theCovMatrix[3][3]);
}

LocalError ME0Segment::localDirectionError() const {
return LocalError(theCovMatrix[0][0], theCovMatrix[0][1], theCovMatrix[1][1]);
}


AlgebraicVector ME0Segment::parameters() const {
// For consistency with DT and CSC and what we require for the TrackingRecHit interface,
// the order of the parameters in the returned vector should be (dx/dz, dy/dz, x, z)

AlgebraicVector result(4);

if(theLocalDirection.z() != 0)
{
result[0] = theLocalDirection.x()/theLocalDirection.z();
result[1] = theLocalDirection.y()/theLocalDirection.z();
}
result[2] = theOrigin.x();
result[3] = theOrigin.y();

return result;
}

AlgebraicMatrix ME0Segment::projectionMatrix() const {
static const ProjectionMatrixDiag theProjectionMatrix;
return (theProjectionMatrix.getMatrix());
}

//
void ME0Segment::print() const {
LogDebug("ME0Segment") << *this;

}

std::ostream& operator<<(std::ostream& os, const ME0Segment& seg) {
os << "ME0Segment: local pos = " << seg.localPosition() <<
" posErr = (" << sqrt(seg.localPositionError().xx())<<","<<sqrt(seg.localPositionError().yy())<<
"0,)\n"<<
" dir = " << seg.localDirection() <<
" dirErr = (" << sqrt(seg.localDirectionError().xx())<<","<<sqrt(seg.localDirectionError().yy())<<
"0,)\n"<<
" chi2/ndf = " << ((seg.degreesOfFreedom() != 0.) ? seg.chi2()/double(seg.degreesOfFreedom()) :0 ) <<
" #rechits = " << seg.specificRecHits().size()<<
" time = "<< seg.time() << " +/- " << seg.timeErr() << " ns ";

return os;
}

7 changes: 7 additions & 0 deletions DataFormats/GEMRecHit/src/classes.h
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@
#include "DataFormats/GEMRecHit/interface/ME0RecHitCollection.h"
#include "DataFormats/GEMRecHit/interface/GEMCSCSegment.h"
#include "DataFormats/GEMRecHit/interface/GEMCSCSegmentCollection.h"
#include "DataFormats/GEMRecHit/interface/ME0Segment.h"
#include "DataFormats/GEMRecHit/interface/ME0SegmentCollection.h"
#include "DataFormats/Common/interface/Wrapper.h"

namespace DataFormats_GEMRecHit {
Expand All @@ -29,6 +31,11 @@ namespace DataFormats_GEMRecHit {
GEMCSCSegmentCollection gseg;
edm::Wrapper<GEMCSCSegmentCollection> gdwc1;
GEMCSCSegmentRef gref;

ME0Segment ms;
ME0SegmentCollection seg;
edm::Wrapper<ME0SegmentCollection> dwc1;
ME0SegmentRef ref;
};
}

14 changes: 14 additions & 0 deletions DataFormats/GEMRecHit/src/classes_def.xml
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,17 @@
<class name="edm::Wrapper<edm::RangeMap<CSCDetId,edm::OwnVector<GEMCSCSegment,edm::ClonePolicy<GEMCSCSegment> >,edm::ClonePolicy<GEMCSCSegment> > >" splitLevel="0"/>
<class name="GEMCSCSegmentRef" splitLevel="0"/>

<class name="ME0Segment" ClassVersion="12">
<version ClassVersion="12" checksum="759556370"/>
<version ClassVersion="11" checksum="513208975"/>
<version ClassVersion="10" checksum="2562385753"/>
</class>
<class name="std::vector<ME0Segment*>" splitLevel="0"/>
<class name="edm::OwnVector<ME0Segment,edm::ClonePolicy<ME0Segment> >" splitLevel="0"/>
<class name="edm::RangeMap<ME0DetId,edm::OwnVector<ME0Segment,edm::ClonePolicy<ME0Segment> >,edm::ClonePolicy<ME0Segment> >" splitLevel="0"/>
<class name="edm::Wrapper<edm::RangeMap<ME0DetId,edm::OwnVector<ME0Segment,edm::ClonePolicy<ME0Segment> >,edm::ClonePolicy<ME0Segment> > >" splitLevel="0"/>
<class name="ME0SegmentRef" splitLevel="0"/>

</selection>
<exclusion>
<class name="edm::OwnVector<GEMRecHit, edm::ClonePolicy<GEMRecHit> >">
Expand All @@ -47,5 +58,8 @@
<class name="edm::OwnVector<GEMCSCSegment, edm::ClonePolicy<GEMCSCSegment> >">
<method name="sort" splitLevel="0"/>
</class>
<class name="edm::OwnVector<ME0Segment, edm::ClonePolicy<ME0Segment> >">
<method name="sort" splitLevel="0"/>
</class>
</exclusion>
</lcgdict>
37 changes: 23 additions & 14 deletions DataFormats/MuonDetId/interface/ME0DetId.h
Original file line number Diff line number Diff line change
Expand Up @@ -47,39 +47,47 @@ class ME0DetId :public DetId {
return int((id_>>RegionStartBit_) & RegionMask_) + minRegionId;
}

/// Layer id: each station have two layers of chambers: layer 1 is the inner chamber and layer 6 is the outer chamber
int layer() const{
return int((id_>>LayerStartBit_) & LayerMask_) + minLayerId;
}

/// Chamber id: it identifies a chamber in a ring it goes from 1 to 36
int chamber() const{
return int((id_>>ChamberStartBit_) & ChamberMask_) + minChamberId;
}

/// Roll id (also known as eta partition): each chamber is divided along the strip direction in
/// several parts (rolls) ME0 up to 10
/// Layer id: each chamber has six layers of chambers: layer 1 is the inner layer and layer 6 is the outer layer
int layer() const{
return int((id_>>LayerStartBit_) & LayerMask_) + minLayerId;
}

/// Roll id (also known as eta partition): each chamber is divided along the strip direction in
/// several parts (rolls) ME0 up to 10
int roll() const{
return int((id_>>RollStartBit_) & RollMask_) + minRollId; // value 0 is used as wild card
}


/// Return the corresponding ChamberId
/// Return the corresponding ChamberId (mask layers)
ME0DetId chamberId() const {
return ME0DetId(id_ & chamberIdMask_);
return ME0DetId(id_ & chamberIdMask_ & layerIdMask_);
}
/// Return the corresponding LayerId (mask eta partition)
ME0DetId layerId() const {
return ME0DetId(id_ & layerIdMask_);
}

/// For future modifications (implement more layers)
int nlayers() const{
return int(maxLayerId);
}

static const int minRegionId= -1;
static const int maxRegionId= 1;

static const int minChamberId= 0;
static const int maxChamberId= 36;
static const int maxChamberId= 36; // ME0 ring consists of 36 chambers spanning 10 degrees

static const int minLayerId= 0;
static const int maxLayerId= 31;
static const int maxLayerId= 6; // ME0 chamber consists of 6 layers for now, change here when changing ME0 Geometry

static const int minRollId= 0;
static const int maxRollId= 31;
static const int maxRollId= 1; // ME0 layer consits of 1 etapartition for now, change here when changing ME0 Geometry

private:
static const int RegionNumBits_ = 2;
Expand All @@ -98,7 +106,8 @@ class ME0DetId :public DetId {
static const int RollStartBit_ = LayerStartBit_+LayerNumBits_;
static const unsigned int RollMask_ = 0X1F;

static const uint32_t chamberIdMask_ = ~(RollMask_<<RollStartBit_);
static const uint32_t chamberIdMask_ = ~( (LayerMask_<<LayerStartBit_) | (RollMask_<<RollStartBit_));
static const uint32_t layerIdMask_ = ~(RollMask_<<RollStartBit_);

private:
void init(int region,
Expand Down
11 changes: 8 additions & 3 deletions DataFormats/MuonDetId/test/testME0DetId.cc
Original file line number Diff line number Diff line change
Expand Up @@ -112,15 +112,20 @@ void testME0DetId::testFail(){


void testME0DetId::testMemberOperators(){
ME0DetId unit1(1,5,3,5);
ME0DetId unit1(1,5,3,1);
ME0DetId unit2=unit1;

CPPUNIT_ASSERT(unit2==unit1);

ME0DetId chamber = unit1.chamberId();
ME0DetId layer = unit1.layerId();
ME0DetId unit3(1,5,3,0);

CPPUNIT_ASSERT(chamber==unit3);
CPPUNIT_ASSERT(layer==unit3);

ME0DetId chamber = unit1.chamberId();
ME0DetId unit4(1,0,3,0);

CPPUNIT_ASSERT(chamber==unit4);


}
Loading