17 #include "CLHEP/Random/RandFlat.h"
41 std::cout <<
"FP420TrackMain constructor::" << std::endl;
42 std::cout <<
"sn0=" << sn0_ <<
" pn0=" << pn0_ <<
" xytype=" << xytype_ << std::endl;
43 std::cout <<
"trackMode = " << trackMode_ << std::endl;
44 std::cout <<
"dXX=" << dXX_ <<
" dYY=" << dYY_ << std::endl;
45 std::cout <<
"chiCutX=" << chiCutX_ <<
" chiCutY=" << chiCutY_ << std::endl;
51 UseHalfPitchShiftInX_ =
true;
52 UseHalfPitchShiftInXW_ =
true;
53 UseHalfPitchShiftInY_ =
true;
54 UseHalfPitchShiftInYW_ =
true;
67 double gapSupplane = 1.6;
68 ZSiPlane_ = 2 * zBlade_ + gapBlade_ + gapSupplane;
71 ZSiStep_ = ZSiPlane_ + ZKapton;
73 double ZBoundDet = 0.020;
74 double ZSiElectr = 0.250;
75 double ZCeramDet = 0.500;
79 zinibeg_ = (eee1 - eee2) / 2.;
83 ZGapLDet_ = zBlade_ / 2 - (ZSiDet_ + ZSiElectr + ZBoundDet + ZCeramDet / 2);
86 std::cout <<
"FP420TrackMain constructor::" << std::endl;
87 std::cout <<
" zD2=" << zD2_ <<
" zD3=" << zD3_ <<
" zinibeg =" << zinibeg_ << std::endl;
88 std::cout <<
" UseHalfPitchShiftInX=" << UseHalfPitchShiftInX_ <<
" UseHalfPitchShiftInY=" << UseHalfPitchShiftInY_
90 std::cout <<
" UseHalfPitchShiftInXW=" << UseHalfPitchShiftInXW_
91 <<
" UseHalfPitchShiftInYW=" << UseHalfPitchShiftInYW_ << std::endl;
92 std::cout <<
" pitchX=" << pitchX_ <<
" pitchY=" << pitchY_ << std::endl;
93 std::cout <<
" pitchXW=" << pitchXW_ <<
" pitchYW=" << pitchYW_ << std::endl;
94 std::cout <<
" zBlade_=" << zBlade_ <<
" gapBlade_=" << gapBlade_ << std::endl;
95 std::cout <<
" ZKapton=" << ZKapton <<
" ZBoundDet=" << ZBoundDet << std::endl;
96 std::cout <<
" ZSiElectr=" << ZSiElectr <<
" ZCeramDet=" << ZCeramDet << std::endl;
97 std::cout <<
" ZSiDet=" << ZSiDet_ <<
" gapSupplane=" << gapSupplane << std::endl;
101 if (trackMode_ ==
"TrackProducerSophisticatedFP420") {
127 UseHalfPitchShiftInX_,
128 UseHalfPitchShiftInY_,
129 UseHalfPitchShiftInXW_,
130 UseHalfPitchShiftInYW_,
139 validTrackerizer_ =
true;
141 std::cout <<
"ERROR:FP420TrackMain: No valid finder selected" << std::endl;
142 validTrackerizer_ =
false;
147 if (finderParameters_ !=
nullptr) {
148 delete finderParameters_;
153 if (validTrackerizer_) {
154 int number_detunits = 0;
155 int number_localelectroderechits = 0;
185 for (
int det = 1; det < dn0; det++) {
190 std::vector<TrackFP420> collector;
208 if (trackMode_ ==
"TrackProducerSophisticatedFP420") {
209 collector = finderParameters_->trackFinderSophisticated(input, det);
216 if (!collector.empty()) {
218 inputRange.first = collector.begin();
219 inputRange.second = collector.end();
224 unsigned int StID0 = 0;
225 toutput->
put(inputRange, StID0);
229 toutput->
put(inputRange, StID);
231 number_localelectroderechits += collector.size();
236 std::cout <<
"FP420TrackMain: execution in mode " << trackMode_ <<
" generating " << number_localelectroderechits
237 <<
" tracks in " << number_detunits <<
" detectors" << std::endl;
243 for (
int det = 1; det < dn0; det++) {
247 std::vector<TrackFP420> collector;
250 outputRange = toutput->
get(StID);
254 for (; sort_begin != sort_end; ++sort_begin) {
255 collector.push_back(*sort_begin);
259 std::cout <<
"=======FP420TrackMain:check size = " << collector.size() <<
" det = " << det << std::endl;
262 vector<TrackFP420>::const_iterator simHitIter = collector.begin();
263 vector<TrackFP420>::const_iterator simHitIterEnd = collector.end();
265 for (; simHitIter != simHitIterEnd; ++simHitIter) {
269 <<
" nclustery = " << itrack.
nclustery() << std::endl;
270 std::cout <<
" ax = " << itrack.
ax() <<
" bx = " << itrack.
bx() << std::endl;
271 std::cout <<
" ay = " << itrack.
ay() <<
" by = " << itrack.
by() << std::endl;
275 std::cout <<
" =======================" << std::endl;
281 std::cout <<
"======= FP420TrackMain: end of check " << std::endl;
T getUntrackedParameter(std::string const &, T const &) const
std::pair< ContainerIterator, ContainerIterator > Range
static std::string const input
FP420TrackMain(const edm::ParameterSet &conf)
std::vector< TrackFP420 >::const_iterator ContainerIterator
const Range get(unsigned int stationID) const
T getParameter(std::string const &) const
void put(Range input, unsigned int stationID)
void run(edm::Handle< ClusterCollectionFP420 > &input, TrackCollectionFP420 *toutput) const
Runs the algorithm.