Skip to content

Commit 9b3c3bb

Browse files
committed
Make changes in PPS geometry ES producer to read preprocessed geometry from DB
1 parent 601fbc5 commit 9b3c3bb

File tree

7 files changed

+212
-39
lines changed

7 files changed

+212
-39
lines changed

Geometry/Records/interface/VeryForwardMisalignedGeometryRecord.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111

1212
#include "FWCore/Framework/interface/DependentRecordImplementation.h"
1313
#include "Geometry/Records/interface/IdealGeometryRecord.h"
14+
#include "Geometry/Records/interface/VeryForwardIdealGeometryRecord.h"
1415

1516
#include "FWCore/Utilities/interface/mplVector.h"
1617

@@ -24,6 +25,6 @@
2425
class VeryForwardMisalignedGeometryRecord
2526
: public edm::eventsetup::DependentRecordImplementation<
2627
VeryForwardMisalignedGeometryRecord,
27-
edm::mpl::Vector<IdealGeometryRecord, RPMisalignedAlignmentRecord /*, ... */> > {};
28+
edm::mpl::Vector<VeryForwardIdealGeometryRecord, IdealGeometryRecord, RPMisalignedAlignmentRecord /*, ... */> > {};
2829

2930
#endif

Geometry/Records/interface/VeryForwardRealGeometryRecord.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111

1212
#include "FWCore/Framework/interface/DependentRecordImplementation.h"
1313
#include "Geometry/Records/interface/IdealGeometryRecord.h"
14+
#include "Geometry/Records/interface/VeryForwardIdealGeometryRecord.h"
1415

1516
#include "FWCore/Utilities/interface/mplVector.h"
1617

@@ -22,6 +23,6 @@
2223
**/
2324
class VeryForwardRealGeometryRecord : public edm::eventsetup::DependentRecordImplementation<
2425
VeryForwardRealGeometryRecord,
25-
edm::mpl::Vector<IdealGeometryRecord, RPRealAlignmentRecord /*, ... */> > {};
26+
edm::mpl::Vector<VeryForwardIdealGeometryRecord, IdealGeometryRecord, RPRealAlignmentRecord /*, ... */> > {};
2627

2728
#endif

Geometry/VeryForwardGeometryBuilder/interface/DetGeomDesc.h

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717

1818
#include "DetectorDescription/Core/interface/DDFilteredView.h"
1919
#include "DetectorDescription/DDCMS/interface/DDFilteredView.h"
20+
#include "CondFormats/GeometryObjects/interface/PDetGeomDesc.h"
2021

2122
#include "DataFormats/DetId/interface/DetId.h"
2223
#include <Math/Rotation3D.h>
@@ -59,7 +60,10 @@ class DetGeomDesc {
5960
// Constructor from DD4Hep DDFilteredView
6061
/// \param[in] isRun2 Switch between legacy run 2-like geometry and 2021+ scenarii
6162
DetGeomDesc(const cms::DDFilteredView& fv, const bool isRun2);
62-
63+
// Constructor from DB object PDetGeomDesc
64+
DetGeomDesc(const PDetGeomDesc& gd);
65+
// Constructor from DB object PDetGeomDesc::Item
66+
DetGeomDesc(const PDetGeomDesc::Item& item);
6367
virtual ~DetGeomDesc();
6468

6569
enum CopyMode { cmWithChildren, cmWithoutChildren };

Geometry/VeryForwardGeometryBuilder/plugins/BuildFile.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
<use name="CondFormats/AlignmentRecord"/>
22
<use name="CondFormats/PPSObjects"/>
3+
<use name="CondFormats/GeometryObjects"/>
34
<use name="DataFormats/CTPPSDetId"/>
45
<use name="DetectorDescription/Core"/>
56
<use name="DetectorDescription/DDCMS"/>

Geometry/VeryForwardGeometryBuilder/plugins/CTPPSGeometryESModule.cc

Lines changed: 102 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@
66
* Rewritten + Moved out common functionailities to DetGeomDesc(Builder) by Gabrielle Hugo.
77
* Migrated to DD4hep by Wagner Carvalho and Gabrielle Hugo.
88
*
9+
* Add the capability of reading PPS reco geometry from the database
10+
*
911
****************************************************************************/
1012

1113
#include "FWCore/ParameterSet/interface/ParameterSet.h"
@@ -19,9 +21,11 @@
1921
#include "DetectorDescription/DDCMS/interface/DDCompactView.h"
2022
#include "CondFormats/PPSObjects/interface/CTPPSRPAlignmentCorrectionsData.h"
2123

24+
#include "CondFormats/GeometryObjects/interface/PDetGeomDesc.h"
2225
#include "CondFormats/AlignmentRecord/interface/RPRealAlignmentRecord.h"
2326
#include "CondFormats/AlignmentRecord/interface/RPMisalignedAlignmentRecord.h"
2427
#include "Geometry/Records/interface/IdealGeometryRecord.h"
28+
#include "Geometry/Records/interface/VeryForwardIdealGeometryRecord.h"
2529
#include "Geometry/Records/interface/VeryForwardMisalignedGeometryRecord.h"
2630
#include "Geometry/Records/interface/VeryForwardRealGeometryRecord.h"
2731

@@ -55,68 +59,93 @@ class CTPPSGeometryESModule : public edm::ESProducer {
5559

5660
private:
5761
std::unique_ptr<DetGeomDesc> produceIdealGD(const IdealGeometryRecord&);
62+
std::unique_ptr<DetGeomDesc> produceIdealGDFromPreprocessedDB(const VeryForwardIdealGeometryRecord&);
5863
std::vector<int> fillCopyNos(TGeoIterator& it);
5964

60-
template <typename ALIGNMENT_REC>
61-
struct GDTokens {
62-
explicit GDTokens(edm::ESConsumesCollector&& iCC)
63-
: idealGDToken_{iCC.consumesFrom<DetGeomDesc, IdealGeometryRecord>(edm::ESInputTag())},
64-
alignmentToken_{iCC.consumesFrom<CTPPSRPAlignmentCorrectionsData, ALIGNMENT_REC>(edm::ESInputTag())} {}
65-
const edm::ESGetToken<DetGeomDesc, IdealGeometryRecord> idealGDToken_;
66-
const edm::ESGetToken<CTPPSRPAlignmentCorrectionsData, ALIGNMENT_REC> alignmentToken_;
67-
};
68-
6965
std::unique_ptr<DetGeomDesc> produceRealGD(const VeryForwardRealGeometryRecord&);
66+
std::unique_ptr<DetGeomDesc> produceRealGDFromPreprocessedDB(const VeryForwardRealGeometryRecord&);
7067
std::unique_ptr<CTPPSGeometry> produceRealTG(const VeryForwardRealGeometryRecord&);
7168

7269
std::unique_ptr<DetGeomDesc> produceMisalignedGD(const VeryForwardMisalignedGeometryRecord&);
70+
std::unique_ptr<DetGeomDesc> produceMisalignedGDFromPreprocessedDB(const VeryForwardMisalignedGeometryRecord&);
7371
std::unique_ptr<CTPPSGeometry> produceMisalignedTG(const VeryForwardMisalignedGeometryRecord&);
7472

75-
template <typename REC>
76-
std::unique_ptr<DetGeomDesc> produceGD(IdealGeometryRecord const&,
73+
template <typename REC , typename GEO>
74+
std::unique_ptr<DetGeomDesc> produceGD(const GEO&,
7775
const std::optional<REC>&,
78-
GDTokens<REC> const&,
76+
edm::ESGetToken<DetGeomDesc,GEO> const&,
77+
edm::ESGetToken<CTPPSRPAlignmentCorrectionsData,REC> const&,
7978
const char* name);
8079

8180
const unsigned int verbosity_;
8281
const bool isRun2_;
8382

8483
edm::ESGetToken<DDCompactView, IdealGeometryRecord> ddToken_;
8584
edm::ESGetToken<cms::DDCompactView, IdealGeometryRecord> dd4hepToken_;
86-
const bool fromDD4hep_;
85+
edm::ESGetToken<PDetGeomDesc, VeryForwardIdealGeometryRecord> dbToken_;
86+
const bool fromPreprocessedDB_, fromDD4hep_;
8787

88-
const GDTokens<RPRealAlignmentRecord> gdRealTokens_;
89-
const GDTokens<RPMisalignedAlignmentRecord> gdMisTokens_;
88+
edm::ESGetToken<DetGeomDesc, IdealGeometryRecord> idealGDToken_;
89+
edm::ESGetToken<DetGeomDesc, VeryForwardIdealGeometryRecord> idealDBGDToken_;
90+
edm::ESGetToken<CTPPSRPAlignmentCorrectionsData, RPRealAlignmentRecord> realAlignmentToken_;
91+
edm::ESGetToken<CTPPSRPAlignmentCorrectionsData, RPMisalignedAlignmentRecord> misAlignmentToken_;
9092

91-
const edm::ESGetToken<DetGeomDesc, VeryForwardRealGeometryRecord> dgdRealToken_;
92-
const edm::ESGetToken<DetGeomDesc, VeryForwardMisalignedGeometryRecord> dgdMisToken_;
93+
edm::ESGetToken<DetGeomDesc, VeryForwardRealGeometryRecord> dgdRealToken_;
94+
edm::ESGetToken<DetGeomDesc, VeryForwardMisalignedGeometryRecord> dgdMisToken_;
9395
};
9496

9597
CTPPSGeometryESModule::CTPPSGeometryESModule(const edm::ParameterSet& iConfig)
9698
: verbosity_(iConfig.getUntrackedParameter<unsigned int>("verbosity")),
9799
isRun2_(iConfig.getParameter<bool>("isRun2")),
98-
fromDD4hep_(iConfig.getUntrackedParameter<bool>("fromDD4hep", false)),
99-
gdRealTokens_{setWhatProduced(this, &CTPPSGeometryESModule::produceRealGD)},
100-
gdMisTokens_{setWhatProduced(this, &CTPPSGeometryESModule::produceMisalignedGD)},
101-
dgdRealToken_{
102-
setWhatProduced(this, &CTPPSGeometryESModule::produceRealTG).consumes<DetGeomDesc>(edm::ESInputTag())},
103-
dgdMisToken_{
104-
setWhatProduced(this, &CTPPSGeometryESModule::produceMisalignedTG).consumes<DetGeomDesc>(edm::ESInputTag())} {
105-
auto c = setWhatProduced(this, &CTPPSGeometryESModule::produceIdealGD);
106-
107-
if (!fromDD4hep_) {
100+
fromPreprocessedDB_(iConfig.getUntrackedParameter<bool>("fromPreprocessedDB", false)),
101+
fromDD4hep_(iConfig.getUntrackedParameter<bool>("fromDD4hep", false)) {
102+
if (fromPreprocessedDB_) {
103+
auto c = setWhatProduced(this, &CTPPSGeometryESModule::produceIdealGDFromPreprocessedDB);
104+
dbToken_ = c.consumes<PDetGeomDesc>(edm::ESInputTag("", iConfig.getParameter<std::string>("dbTag")));
105+
106+
auto c1 = setWhatProduced(this, &CTPPSGeometryESModule::produceRealGDFromPreprocessedDB);
107+
idealDBGDToken_ = c1.consumesFrom<DetGeomDesc, VeryForwardIdealGeometryRecord>(edm::ESInputTag());
108+
realAlignmentToken_ = c1.consumesFrom<CTPPSRPAlignmentCorrectionsData, RPRealAlignmentRecord>(edm::ESInputTag());
109+
110+
auto c2 = setWhatProduced(this, &CTPPSGeometryESModule::produceMisalignedGDFromPreprocessedDB);
111+
misAlignmentToken_ = c2.consumesFrom<CTPPSRPAlignmentCorrectionsData, RPMisalignedAlignmentRecord>(edm::ESInputTag());
112+
} else if (!fromDD4hep_) {
113+
auto c = setWhatProduced(this, &CTPPSGeometryESModule::produceIdealGD);
108114
ddToken_ = c.consumes<DDCompactView>(edm::ESInputTag("", iConfig.getParameter<std::string>("compactViewTag")));
115+
116+
auto c1 = setWhatProduced(this, &CTPPSGeometryESModule::produceRealGD);
117+
idealGDToken_ = c1.consumesFrom<DetGeomDesc, IdealGeometryRecord>(edm::ESInputTag());
118+
realAlignmentToken_ = c1.consumesFrom<CTPPSRPAlignmentCorrectionsData, RPRealAlignmentRecord>(edm::ESInputTag());
119+
120+
auto c2 = setWhatProduced(this, &CTPPSGeometryESModule::produceMisalignedGD);
121+
misAlignmentToken_ = c2.consumesFrom<CTPPSRPAlignmentCorrectionsData, RPMisalignedAlignmentRecord>(edm::ESInputTag());
109122
} else {
123+
auto c = setWhatProduced(this, &CTPPSGeometryESModule::produceIdealGD);
110124
dd4hepToken_ =
111125
c.consumes<cms::DDCompactView>(edm::ESInputTag("", iConfig.getParameter<std::string>("compactViewTag")));
126+
127+
auto c1 = setWhatProduced(this, &CTPPSGeometryESModule::produceRealGD);
128+
idealGDToken_ = c1.consumesFrom<DetGeomDesc, IdealGeometryRecord>(edm::ESInputTag());
129+
realAlignmentToken_ = c1.consumesFrom<CTPPSRPAlignmentCorrectionsData, RPRealAlignmentRecord>(edm::ESInputTag());
130+
131+
auto c2 = setWhatProduced(this, &CTPPSGeometryESModule::produceMisalignedGD);
132+
misAlignmentToken_ = c2.consumesFrom<CTPPSRPAlignmentCorrectionsData, RPMisalignedAlignmentRecord>(edm::ESInputTag());
112133
}
134+
135+
auto c_RTG = setWhatProduced(this, &CTPPSGeometryESModule::produceRealTG);
136+
dgdRealToken_ = c_RTG.consumes<DetGeomDesc>(edm::ESInputTag());
137+
138+
auto c_MTG = setWhatProduced(this, &CTPPSGeometryESModule::produceMisalignedTG);
139+
dgdMisToken_ = c_MTG.consumes<DetGeomDesc>(edm::ESInputTag());
113140
}
114141

115142
void CTPPSGeometryESModule::fillDescriptions(edm::ConfigurationDescriptions& descriptions) {
116143
edm::ParameterSetDescription desc;
117144
desc.addUntracked<unsigned int>("verbosity", 1);
118145
desc.add<bool>("isRun2", false)->setComment("Switch to legacy (2017-18) definition of diamond geometry");
146+
desc.add<std::string>("dbTag", std::string());
119147
desc.add<std::string>("compactViewTag", std::string());
148+
desc.addUntracked<bool>("fromPreprocessedDB", false);
120149
desc.addUntracked<bool>("fromDD4hep", false);
121150
descriptions.add("CTPPSGeometryESModule", desc);
122151
}
@@ -139,18 +168,32 @@ std::unique_ptr<DetGeomDesc> CTPPSGeometryESModule::produceIdealGD(const IdealGe
139168
}
140169
}
141170

142-
template <typename REC>
143-
std::unique_ptr<DetGeomDesc> CTPPSGeometryESModule::produceGD(IdealGeometryRecord const& iIdealRec,
144-
std::optional<REC> const& iAlignRec,
145-
GDTokens<REC> const& iTokens,
146-
const char* name) {
171+
std::unique_ptr<DetGeomDesc> CTPPSGeometryESModule::produceIdealGDFromPreprocessedDB(const VeryForwardIdealGeometryRecord& iRecord) {
172+
173+
// Get the PDetGeomDesc from EventSetup
174+
auto const& myDB = iRecord.get(dbToken_);
175+
176+
edm::LogInfo("CTPPSGeometryESModule") << " myDB size = " << myDB.container_.size();
177+
178+
// Build geo from PDetGeomDesc DB object.
179+
auto pdet = std::make_unique<DetGeomDesc>(myDB);
180+
return pdet;
181+
182+
}
183+
184+
template <typename REC , typename GEO>
185+
std::unique_ptr<DetGeomDesc> CTPPSGeometryESModule::produceGD(GEO const& iIdealRec,
186+
std::optional<REC> const& iAlignRec,
187+
edm::ESGetToken<DetGeomDesc,GEO> const& iGDToken,
188+
edm::ESGetToken<CTPPSRPAlignmentCorrectionsData,REC> const& iAlignToken,
189+
const char* name) {
147190
// get the input GeometricalDet
148-
auto const& idealGD = iIdealRec.get(iTokens.idealGDToken_);
191+
auto const& idealGD = iIdealRec.get(iGDToken);
149192

150193
// load alignments
151194
CTPPSRPAlignmentCorrectionsData const* alignments = nullptr;
152195
if (iAlignRec) {
153-
auto alignmentsHandle = iAlignRec->getHandle(iTokens.alignmentToken_);
196+
auto alignmentsHandle = iAlignRec->getHandle(iAlignToken);
154197
if (alignmentsHandle.isValid()) {
155198
alignments = alignmentsHandle.product();
156199
}
@@ -168,10 +211,32 @@ std::unique_ptr<DetGeomDesc> CTPPSGeometryESModule::produceGD(IdealGeometryRecor
168211
return CTPPSGeometryESCommon::applyAlignments(idealGD, alignments);
169212
}
170213

214+
std::unique_ptr<DetGeomDesc> CTPPSGeometryESModule::produceRealGDFromPreprocessedDB(const VeryForwardRealGeometryRecord& iRecord) {
215+
return produceGD(iRecord.getRecord<VeryForwardIdealGeometryRecord>(),
216+
iRecord.tryToGetRecord<RPRealAlignmentRecord>(),
217+
idealDBGDToken_,
218+
realAlignmentToken_,
219+
"CTPPSGeometryESModule::produceRealGDFromPreprocessedDB");
220+
}
221+
222+
//----------------------------------------------------------------------------------------------------
223+
224+
std::unique_ptr<DetGeomDesc> CTPPSGeometryESModule::produceMisalignedGDFromPreprocessedDB(
225+
const VeryForwardMisalignedGeometryRecord& iRecord) {
226+
return produceGD(iRecord.getRecord<VeryForwardIdealGeometryRecord>(),
227+
iRecord.tryToGetRecord<RPMisalignedAlignmentRecord>(),
228+
idealDBGDToken_,
229+
misAlignmentToken_,
230+
"CTPPSGeometryESModule::produceMisalignedGDFromPreprocessedDB");
231+
}
232+
233+
//----------------------------------------------------------------------------------------------------
234+
171235
std::unique_ptr<DetGeomDesc> CTPPSGeometryESModule::produceRealGD(const VeryForwardRealGeometryRecord& iRecord) {
172236
return produceGD(iRecord.getRecord<IdealGeometryRecord>(),
173237
iRecord.tryToGetRecord<RPRealAlignmentRecord>(),
174-
gdRealTokens_,
238+
idealGDToken_,
239+
realAlignmentToken_,
175240
"CTPPSGeometryESModule::produceRealGD");
176241
}
177242

@@ -181,7 +246,8 @@ std::unique_ptr<DetGeomDesc> CTPPSGeometryESModule::produceMisalignedGD(
181246
const VeryForwardMisalignedGeometryRecord& iRecord) {
182247
return produceGD(iRecord.getRecord<IdealGeometryRecord>(),
183248
iRecord.tryToGetRecord<RPMisalignedAlignmentRecord>(),
184-
gdMisTokens_,
249+
idealGDToken_,
250+
misAlignmentToken_,
185251
"CTPPSGeometryESModule::produceMisalignedGD");
186252
}
187253

Geometry/VeryForwardGeometryBuilder/src/DetGeomDesc.cc

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,37 @@ DetGeomDesc::DetGeomDesc(const DetGeomDesc& ref, CopyMode cm) {
7575
m_z = ref.m_z;
7676
}
7777

78+
// Constructor from DB object PDetGeomDesc::Item
79+
DetGeomDesc::DetGeomDesc(const PDetGeomDesc::Item& item)
80+
: m_name(item.name_),
81+
m_copy(item.copy_),
82+
m_isDD4hep(true),
83+
m_params(item.params_), // default unit from DD4hep (cm)
84+
m_sensorType(item.sensorType_),
85+
m_geographicalID(item.geographicalID_),
86+
m_z(item.z_) // converted from cm (DD4hep) to mm
87+
{
88+
Translation trans(item.dx_, item.dy_, item.dz_);
89+
m_trans = trans;
90+
RotationMatrix rot(item.axx_, item.axy_, item.axz_, item.ayx_, item.ayy_, item.ayz_, item.azx_, item.azy_, item.azz_);
91+
m_rot = rot;
92+
// Set the m_isABox flag for the box shaped sensors, so that m_params are properly set
93+
if( (m_name == DDD_CTPPS_PIXELS_SENSOR_NAME || m_name == DDD_CTPPS_PIXELS_SENSOR_NAME_2x2 ||
94+
m_name == DDD_CTPPS_DIAMONDS_SEGMENT_NAME || m_name == DDD_CTPPS_UFSD_SEGMENT_NAME ||
95+
m_name.substr(0,7) == DDD_TOTEM_TIMING_SENSOR_TMPL.substr(0,7)) && m_params.size()>2 )
96+
m_isABox = true;
97+
else
98+
m_isABox = false;
99+
m_diamondBoxParams = computeDiamondDimensions(m_isABox, m_isDD4hep, m_params);
100+
}
101+
102+
DetGeomDesc::DetGeomDesc(const PDetGeomDesc& pd) {
103+
for (auto i : pd.container_) {
104+
DetGeomDesc* gd = new DetGeomDesc(i);
105+
this->addComponent(gd);
106+
}
107+
}
108+
78109
DetGeomDesc::~DetGeomDesc() { deepDeleteComponents(); }
79110

80111
void DetGeomDesc::addComponent(DetGeomDesc* det) { m_container.emplace_back(det); }
Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
import FWCore.ParameterSet.Config as cms
2+
process = cms.Process("GeometryInfo")
3+
4+
# minimum of logs
5+
process.MessageLogger = cms.Service("MessageLogger",
6+
cerr = cms.untracked.PSet(
7+
enable = cms.untracked.bool(False)
8+
),
9+
cout = cms.untracked.PSet(
10+
enable = cms.untracked.bool(True),
11+
threshold = cms.untracked.string('INFO')
12+
)
13+
)
14+
15+
# geometry
16+
process.load("CondCore.CondDB.CondDB_cfi")
17+
# input database (in this case local sqlite file)
18+
#process.CondDB.connect = 'sqlite_file:../../CondTools/Geometry/PPSGeometry_oldDD_multiIOV.db'
19+
process.CondDB.connect = cms.string( 'frontier://FrontierPrep/CMS_CONDITIONS' )
20+
21+
process.PoolDBESSource = cms.ESSource("PoolDBESSource",
22+
process.CondDB,
23+
DumpStat=cms.untracked.bool(True),
24+
toGet = cms.VPSet(
25+
cms.PSet(
26+
record = cms.string('VeryForwardIdealGeometryRecord'),
27+
tag = cms.string("PPS_RecoGeometry_test_v1")
28+
)
29+
)
30+
)
31+
32+
process.ctppsGeometryESModule = cms.ESProducer("CTPPSGeometryESModule",
33+
fromPreprocessedDB = cms.untracked.bool(True),
34+
fromDD4hep = cms.untracked.bool(False),
35+
verbosity = cms.untracked.uint32(1),
36+
)
37+
38+
39+
# load alignment correction
40+
process.load("CalibPPS.ESProducers.ctppsRPAlignmentCorrectionsDataESSourceXML_cfi")
41+
process.ctppsRPAlignmentCorrectionsDataESSourceXML.RealFiles = cms.vstring(
42+
"Geometry/VeryForwardGeometryBuilder/test/alignment_file_1.xml",
43+
"Geometry/VeryForwardGeometryBuilder/test/alignment_file_2.xml",
44+
)
45+
process.ctppsRPAlignmentCorrectionsDataESSourceXML.verbosity = 1
46+
47+
# no events to process
48+
process.source = cms.Source("EmptySource",
49+
# firstRun = cms.untracked.uint32(273725), # start run for 2016-2017
50+
firstRun = cms.untracked.uint32(314747), # start run for 2018
51+
firstLuminosityBlock = cms.untracked.uint32(1),
52+
firstEvent = cms.untracked.uint32(1),
53+
numberEventsInLuminosityBlock = cms.untracked.uint32(3),
54+
numberEventsInRun = cms.untracked.uint32(30)
55+
)
56+
57+
process.maxEvents = cms.untracked.PSet(
58+
input = cms.untracked.int32(1)
59+
)
60+
61+
process.ctppsGeometryInfo = cms.EDAnalyzer("CTPPSGeometryInfo",
62+
geometryType = cms.untracked.string("real"),
63+
printRPInfo = cms.untracked.bool(True),
64+
printSensorInfo = cms.untracked.bool(True)
65+
)
66+
67+
process.p = cms.Path(
68+
process.ctppsGeometryInfo
69+
)

0 commit comments

Comments
 (0)