|
|
Go to the documentation of this file.
49 : _card(card), _geom(
geom), _config(conf) {
56 cout <<
"DTBtiChip constructor called for BTI number " <<
n;
57 cout <<
" in superlayer " << supl << endl;
167 cout <<
"Position: R=" <<
gp.perp() <<
"cm, Phi=" <<
gp.phi() * 180 / 3.14159;
168 cout <<
" deg, Z=" <<
gp.z() <<
" cm" << endl;
178 float fktmin =
tan(
theta) * distp2 + K0;
180 float fktmax =
tan(
theta) * distp2 + K0 + 1;
215 if (cell < 1 || cell > 9) {
216 cout <<
"DTBtiChip::add_digi : wrong cell number: " << cell;
217 cout <<
". Digi not added!" << endl;
226 _digis[cell - 1].push_back(digi);
230 cout <<
"DTBtiChip::add_digi: DTBtiChip # " <<
_id.
bti() <<
" cell " << cell
231 <<
" --> drift time (tdc units)= " << digi->
countsTDC() << endl;
237 cout <<
"DTBtiChip::add_digi: DTBtiChip # " <<
_id.
bti() <<
" cell " << cell
238 <<
" in dead time -> digi not added! " << endl;
243 if (cell < 1 || cell > 9) {
244 cout <<
"DTBtiChip::add_digi_clock : wrong cell number: " << cell;
245 cout <<
". Digi not added!" << endl;
256 cout <<
"DTBtiChip::add_digi_clock: DTBtiChip # " <<
number() <<
" cell " << cell <<
" --> clock time = " << digi
261 cout <<
"DTBtiChip::add_digi_clock: DTBtiChip # " <<
number() <<
" cell " << cell
262 <<
" in dead time -> digi not added! " << endl;
274 cout <<
n <<
" cells with hits found:" << endl;
277 for (
i = 0;
i < 9;
i++) {
279 cout <<
"DTBtiChip # " <<
_id.
bti() <<
" cell " <<
i + 1;
280 cout <<
" --> drift time (tdc units): " <<
d->countsTDC() << endl;
317 cout <<
"DTBtiChip: adding trigger..." << endl;
321 cout <<
"DTBtiChip::addTrig: step " <<
step;
322 cout <<
" outside range. Trigger not added" << endl;
329 cout <<
"DTBtiChip::nTrig: step out of range: " <<
step;
330 cout <<
" 0 returned" << endl;
338 cout <<
"DTBtiChip::trigList: step out of range: " <<
step;
339 cout <<
" empty pointer returned" << endl;
347 cout <<
"DTBtiChip::trigger: step out of range: " <<
step;
348 cout <<
" empty pointer returned" << endl;
352 cout <<
"DTBtiChip::trigger: requested trigger does not exist: " <<
n;
353 cout <<
" empty pointer returned!" << endl;
357 return (*(
p +
n - 1)).get();
362 cout <<
"DTBtiChip::triggerData: step out of range: " <<
step;
363 cout <<
" dummy trigger returned" << endl;
367 cout <<
"DTBtiChip::triggerData: requested trig. doesn't exist: " <<
n;
368 cout <<
" dummy trigger returned!" << endl;
372 return (*(
p +
n - 1))->data();
377 cout <<
"DTBtiChip::eraseTrigger: step out of range: " <<
step;
378 cout <<
" trigger not deleted!" << endl;
381 cout <<
"DTBtiChip::trigger: requested trigger does not exist: " <<
n;
382 cout <<
" trigger not deleted!" << endl;
390 cout <<
"DTBtiChip::clear()" << endl;
409 cout <<
"DTBtiChip::init() -> initializing bti chip" << endl;
412 for (
int i = 0;
i < 25;
i++) {
417 for (
int cell = 0; cell < 9; cell++) {
421 vector<const DTDigi*>::const_iterator
p;
431 vector<DTBtiHit*>::const_iterator
p1;
433 cout <<
" Filling hit in cell " << cell + 1;
434 if ((*p1)->curTime() != 4000)
435 cout <<
" raw time in trigger: " << (*p1)->curTime() << endl;
436 cout <<
" time (clock units): " << (*p1)->clockTime() << endl;
446 cout <<
"DTBtiChip::init_clock() -> initializing bti chip" << endl;
451 for (
int i = 0;
i < 25;
i++) {
456 for (
int cell = 0; cell < 9; cell++) {
468 vector<DTBtiHit*>::const_iterator
p1;
470 cout <<
" Filling hit in cell " << cell + 1;
471 if ((*p1)->curTime() != 4000)
472 cout <<
" time: " << (*p1)->curTime() << endl;
474 cout <<
" time (clock units): " << (*p1)->clockTime() << endl;
485 cout <<
"DTBtiChip::run: Processing BTI " <<
_id.
bti() << endl;
492 cout <<
"DTBtiChip::run : wrong BTI number: " <<
_id.
bti() << endl;
543 for (
int cell = 0; cell < 9; cell++) {
545 for (
auto&
h :
_hits[cell]) {
551 for (
auto&
h :
_hits[cell]) {
552 if (
h->isDrifting()) {
554 }
else if (
h->isInsideReg()) {
559 if (
h->curTime() != 4000)
560 cout <<
"DTBtiChip::tick: hit in register: time=" <<
h->curTime();
562 cout <<
"DTBtiChip::tick: hit in register! " << endl;
563 cout <<
" jtrig=" <<
h->jtrig() << endl;
590 cout <<
"Do LTS" << endl;
604 if (
trigger(is, 1)->code() == 8) {
606 for (
int js = is + 1; (js <= is + nbxlts && js <=
DTConfig::NSTEPL); js++) {
609 if (tr->
code() < 8 && (lts == 1 || lts == 3)) {
611 cout <<
"LTS: erasing trigger!" << endl;
619 if (tr->
code() < 8 && (lts == 2 || lts == 3)) {
621 cout <<
"LTS: erasing trigger!" << endl;
665 float Keq[6] = {KeqAB, KeqBC, KeqCD, KeqAC, KeqBD, KeqAD};
667 auto trg = std::make_unique<DTBtiTrig>(
this, code, K,
X, trig_step, eq, strobe, Keq);
672 const DTDigi* digi =
h->hitDigi();
690 cout <<
"DTBtiChip::store, REJECTED TRIGGER at step " <<
currentStep();
691 cout <<
" allowed K range in theta view is: [";
693 cout <<
"K value is " << K << endl;
707 ST2 =
int((
double(
ST43) * 3. / 4. +
double(
RE43) * 1. / 4.) * 2.);
708 ST3 =
int((
double(
ST43) * 3. / 4. +
double(
RE43) * 1. / 4.) * 3.);
709 ST4 =
int((
double(
ST43) * 3. / 4. +
double(
RE43) * 1. / 4.) * 4.);
710 ST5 =
int((
double(
ST43) * 3. / 4. +
double(
RE43) * 1. / 4.) * 5.);
711 ST7 =
int((
double(
ST43) * 3. / 4. +
double(
RE43) * 1. / 4.) * 7.);
714 cout <<
"Snap register dump: " << endl;
719 cout <<
"ST = " <<
ST << endl;
720 cout <<
"ST2 = " <<
ST2 << endl;
721 cout <<
"ST3 = " <<
ST3 << endl;
722 cout <<
"ST4 = " <<
ST4 << endl;
723 cout <<
"ST5 = " <<
ST5 << endl;
724 cout <<
"ST7 = " <<
ST7 << endl;
void add_digi_clock(int cell, int clock_digi)
Add a clock digi to the DTBtiChip.
void addTrig(int step, std::unique_ptr< DTBtiTrig > btitrig)
void eraseTrigger(int step, unsigned n)
float cellH() const
Height of a cell (cm)
DTConfigBti * config() const
Configuration set.
DTBtiTrigData triggerData(int step, unsigned n) const
Return the data part of the requested trigger.
std::array< std::vector< int >, 9 > _digis_clock
std::array< std::vector< DTBtiHit * >, 9 > _hits
std::vector< std::unique_ptr< DTBtiTrig > > const & trigList(int step) const
void clear()
delete hits and triggers
static const int NSTEPL
Constants: first and last step to start trigger finding.
DTBtiTrig const * trigger(int step, unsigned n) const
Return the requested trigger.
std::array< std::vector< std::unique_ptr< DTBtiTrig > >, DTConfig::NSTEPL - DTConfig::NSTEPF+1 > _trigs
int CH() const
K right limit for center traco.
The Signals That Services Can Subscribe To This is based on ActivityRegistry h
Helper function to determine trigger accepts.
void run()
Run DTBtiChip algorithm.
std::array< float, 25 > _sums
int nCellHit() const
Number of cells with hits.
std::array< DTBtiHit *, 9 > _thisStepUsedHit
Geom::Theta< T > theta() const
GlobalPoint CMSPosition() const
Position in CMS frame.
int32_t countsTDC() const
Get raw TDC count.
DTBtiChip(DTBtiCard *card, DTTrigGeom *geom, int supl, int n, DTConfigBti *_config)
original constructor
int CL() const
K left limit for center traco.
int nCell(int sl) const
Number of BTIs in a required superlayer (i.e. nCells in lay 1)
int code() const
Return trigger code.
Tan< T >::type tan(const T &t)
void print() const
Print content of digi.
std::array< std::vector< const DTDigi * >, 9 > _digis
float cellPitch() const
Width of a cell (cm) i.e. distance between ywo wires.
int superlayer() const
Return superlayer.
int store(const int eq, const int code, const int K, const int X, float KeqAB=0., float KeqBC=0., float KeqCD=0., float KeqAC=0., float KeqBD=0., float KeqAD=0.)
int debug() const
Debug flag.
int currentIntStep() const
GlobalPoint CMSPosition(const DTBtiId obj) const
CMS position of a BTI.
float ST() const
Max drift time in 12.5 ns steps.
int KAccTheta() const
BTI angular acceptance in theta view.
bool useAcceptParamFlag()
Return acceptance flag.
int DEADpar() const
Wire DEAD time parameter.
DTChamberId statId() const
Identifier of the associated chamber.
std::array< int, 9 > _busyStart_clock
int WENflag(int wire) const
Wire mask flag.
int bti() const
Returns the bti.
static const float _stepTimeTdc
int nTrig(int step) const
Number of triggers found.
int number() const
Return DTBtiChip number.
void add_digi(int cell, const DTDigi *digi)
Add a digi to the DTBtiChip.
std::array< float, 25 > _difs
int ST43() const
ST and RE parameters for drift velocity.
int superlayer() const
Returns the superlayer.