#include <DTTracoCard.h>
Public Member Functions | |
void | clearCache () |
Clear all traco stuff (cache & map) | |
DTConfigLUTs * | config_luts () const |
Return LUTS config for this chamber (=minicrate) | |
bool | debug () |
Return TU debug flag. | |
DTTracoCard (DTTrigGeom *, DTBtiCard *, DTTSTheta *) | |
Constructor. | |
DTTracoChip * | getTRACO (const DTTracoId &tracoid) const |
Returns the required DTTracoChip. Return 0 if it doesn't exist. | |
DTTracoChip * | getTRACO (int n) const |
Returns the required DTTracoChip. Return 0 if it doesn't exist. | |
LocalVector | localDirection (const DTTrigData *) const |
NEWGEO Local direction in chamber of a trigger-data object. | |
LocalPoint | localPosition (const DTTrigData *) const |
NEWGEO Local position in chamber of a trigger-data object. | |
bool | lutFromDBFlag () |
Return lut computation option (DB/geometry) | |
virtual void | reconstruct () |
Load BTIs triggers and run TRACOs algorithm. | |
void | setConfig (const DTConfigManager *conf) |
Set configuration. | |
DTTracoTrig * | storeTrigger (DTTracoTrigData) |
std::vector< DTTracoChip * > | tracoList () |
Returns the active TRACO list. | |
DTTSTheta * | TSTh () const |
Return TSTheta. | |
bool | useAcceptParamFlag () |
Return acceptance flag. | |
~DTTracoCard () | |
Destructor. | |
Private Member Functions | |
DTTracoChip * | activeGetTRACO (int) |
Returns the required DTTracoChip. Create it if it doesn't exist. | |
DTTracoChip * | activeGetTRACO (const DTTracoId &tracoid) |
Returns the required DTTracoChip. Create it if it doesn't exist. | |
DTConfigTraco * | config_traco (const DTTracoId &tracoid) const |
Return single TRACO config. | |
void | loadTRACO () |
store BTI triggers in TRACO's | |
void | localClear () |
clear the TRACO map | |
void | runTRACO () |
run TRACO algorithm | |
Private Attributes | |
DTBtiCard * | _bticard |
DTConfigLUTs * | _conf_luts |
ConfTracoMap | _conf_traco_map |
bool | _debug |
bool | _flag_acc |
bool | _lut_from_db |
TRACOContainer | _tracomap |
DTTSTheta * | _tstheta |
Contains active DTTracoChips
Modifications: III/07 : SV configuration with DTConfigManager
Definition at line 60 of file DTTracoCard.h.
DTTracoCard::DTTracoCard | ( | DTTrigGeom * | geo, |
DTBtiCard * | bticard, | ||
DTTSTheta * | tstheta | ||
) |
Constructor.
Definition at line 49 of file DTTracoCard.cc.
: DTGeomSupplier(geo) , _bticard(bticard), _tstheta(tstheta) { }
DTTracoCard::~DTTracoCard | ( | ) |
Destructor.
Definition at line 59 of file DTTracoCard.cc.
References localClear().
{ localClear(); }
DTTracoChip * DTTracoCard::activeGetTRACO | ( | int | n | ) | [private] |
Returns the required DTTracoChip. Create it if it doesn't exist.
Definition at line 289 of file DTTracoCard.cc.
References _tracomap, config_traco(), DTGeomSupplier::geom(), n, evf::utils::sid, and DTTrigGeom::statId().
Referenced by activeGetTRACO(), loadTRACO(), and storeTrigger().
{ // the traco identifier DTChamberId sid = geom()->statId(); DTTracoId _id = DTTracoId(sid,n); DTTracoChip* traco = 0; TRACO_iter ptraco = _tracomap.find(n); if( ptraco!=_tracomap.end() ) { traco=(*ptraco).second; } else { traco = new DTTracoChip(this,n,config_traco(_id)); _tracomap[n]=traco; } return traco; }
DTTracoChip* DTTracoCard::activeGetTRACO | ( | const DTTracoId & | tracoid | ) | [inline, private] |
Returns the required DTTracoChip. Create it if it doesn't exist.
Definition at line 130 of file DTTracoCard.h.
References activeGetTRACO(), and DTTracoId::traco().
{ return activeGetTRACO(tracoid.traco()); }
void DTTracoCard::clearCache | ( | ) |
Clear all traco stuff (cache & map)
Reimplemented from DTCache< T, Coll >.
Definition at line 70 of file DTTracoCard.cc.
References localClear().
Referenced by reconstruct(), and DTTrig::triggerReco().
{ TRACOCache::clearCache(); localClear(); }
DTConfigLUTs* DTTracoCard::config_luts | ( | ) | const [inline] |
Return LUTS config for this chamber (=minicrate)
Definition at line 110 of file DTTracoCard.h.
References _conf_luts.
Referenced by DTTracoChip::DTTracoChip().
{ return _conf_luts; }
DTConfigTraco * DTTracoCard::config_traco | ( | const DTTracoId & | tracoid | ) | const [private] |
Return single TRACO config.
Definition at line 464 of file DTTracoCard.cc.
References _conf_traco_map, gather_cfg::cout, DTGeomSupplier::geom(), DTTracoId::sector(), evf::utils::sid, DTTrigGeom::statId(), DTTracoId::station(), DTTracoId::traco(), and DTTracoId::wheel().
Referenced by activeGetTRACO(), localDirection(), and localPosition().
{ // the traco identifier DTChamberId sid = geom()->statId(); //loop on map to find traco ConfTracoMap::const_iterator titer = _conf_traco_map.find(tracoid); if (titer == _conf_traco_map.end()){ std::cout << "DTTracoCard::config_traco : TRACO (" << tracoid.wheel() << "," << tracoid.sector() << "," << tracoid.station() << "," << tracoid.traco() << ") not found, return 0" << std::endl; return 0; } return const_cast<DTConfigTraco*>(&(*titer).second); }
bool DTTracoCard::debug | ( | ) | [inline] |
Return TU debug flag.
Definition at line 78 of file DTTracoCard.h.
References _debug.
Referenced by loadTRACO(), localDirection(), and runTRACO().
{return _debug;}
DTTracoChip * DTTracoCard::getTRACO | ( | int | n | ) | const |
Returns the required DTTracoChip. Return 0 if it doesn't exist.
Definition at line 307 of file DTTracoCard.cc.
References _tracomap.
Referenced by getTRACO(), and DTTracoChip::setFlag().
{ TRACO_const_iter ptraco = _tracomap.find(n); if( ptraco==_tracomap.end() ) return 0; return (*ptraco).second; }
DTTracoChip* DTTracoCard::getTRACO | ( | const DTTracoId & | tracoid | ) | const [inline] |
Returns the required DTTracoChip. Return 0 if it doesn't exist.
Definition at line 87 of file DTTracoCard.h.
References getTRACO(), and DTTracoId::traco().
void DTTracoCard::loadTRACO | ( | ) | [private] |
store BTI triggers in TRACO's
Definition at line 107 of file DTTracoCard.cc.
References _bticard, _flag_acc, activeGetTRACO(), DTTracoChip::add_btiT(), DTCache< T, Coll >::begin(), DTConfigBti::CH(), DTConfigBti::CL(), DTBtiCard::config_bti(), gather_cfg::cout, debug(), DTCache< T, Coll >::end(), DTGeomSupplier::geom(), DTConfigBti::LH(), DTConfigBti::LL(), localClear(), DTConfig::NBTITC, AlCaHLTBitMon_ParallelJobs::p, pos, DTConfigBti::RH(), DTConfigBti::RL(), DTGeomSupplier::sector(), DTGeomSupplier::station(), launcher::step, and DTGeomSupplier::wheel().
Referenced by reconstruct().
{ localClear(); if(debug()){ std::cout << "DTTracoCard::loadTRACO called for wheel=" << wheel() ; std::cout << ", station=" << station(); std::cout << ", sector=" << sector() << std::endl; } int maxtc = int(ceil( float(geom()->nCell(1)) / float(DTConfig::NBTITC) )); // loop on all BTI triggers std::vector<DTBtiTrigData>::const_iterator p; std::vector<DTBtiTrigData>::const_iterator pend=_bticard->end(); for(p=_bticard->begin();p!=pend;p++){ if(debug()){ std::cout << "Found bti trigger: "; (*p).print(); } // BTI data int nbti = (*p).btiNumber(); int nsl = (*p).btiSL(); int step = (*p).step(); int K = (*p).K(); DTBtiId id_bti = (*p).parentId(); DTConfigBti* conf_bti = _bticard->config_bti( id_bti ); int LL = conf_bti->LL(); int LH = conf_bti->LH(); int CL = conf_bti->CL(); int CH = conf_bti->CH(); int RL = conf_bti->RL(); int RH = conf_bti->RH(); /* if(debug()) std::cout << "Bti trigger acceptances: \n" << " LL " << LL << ", LH " << LH << "\n" << " CL " << CL << ", CH " << CH << "\n" << " RL " << RL << ", RH " << RH << std::endl; */ // assign BTI to TRACO (central TRACO for sl=3); ntc=1,2...maxtc int ntc = static_cast<int>((nbti-1)/DTConfig::NBTITC)+1; if( ntc<1 || ntc>maxtc ) continue; if(debug()) std::cout << "Bti trigger assigned to traco " << ntc << " (maxtc " << maxtc << ")" << std::endl; // TRACO information DTTracoId tracoid = DTTracoId(wheel(),station(),sector(),ntc); // position inside TRACO: int pos = nbti-(ntc-1)*DTConfig::NBTITC; // store trigger in TRACO. Create TRACO if it doesn't exist // SV tb2003 : check if traco is connected! // SV 091103 : add bti trigger filtering in acceptance windows // if flag is useAcceptParam() = true // Load master TRACO plane if( nsl==1 ) { if( !_flag_acc || (K>=CL && K<=CH) ) activeGetTRACO(ntc)->add_btiT( step, pos, &(*p) ); else if(debug()) std::cout << "ATTENTION: in TRACO n. " << ntc << " bti pos " << pos << " trigger K= " << K << " outside acceptance " << CL << "<K<" << CH << std::endl; } // Load slave TRACO plane if( nsl==3 ) { // 3 TRACO's //for(int tci=-1;tci<=1;tci++) { // if( (ntc+tci)>0 && (ntc+tci)<=maxtc ) // activeGetTRACO(ntc+tci)->add_btiT( step, pos+8-4*tci, &(*p) ); // else{ // if(debug()) // std::cout << "ATTENTION: traco " << ntc+tci << " is disconnected!" << std::endl; // } // Left Traco if( (ntc-1)>0 && (ntc-1)<=maxtc ) { if( !_flag_acc || (K>=LL && K<=LH) ) { activeGetTRACO(ntc-1)->add_btiT( step, pos+8-4*(-1), &(*p) ); } else { if(debug()) { std::cout << "ATTENTION: in TRACO n. " << ntc-1 << " bti pos " << pos+8-4*(-1) << " trigger K= " << K << " outside acceptance " << LL << "<K<" << LH << std::endl; } } } // Central Traco if( (ntc)>0 && (ntc)<=maxtc ) { if( !_flag_acc || (K>=CL && K<=CH) ) { activeGetTRACO(ntc)->add_btiT( step, pos+8-4*(0), &(*p) ); } else { if(debug()) std::cout << "ATTENTION: in TRACO n. " << ntc << " bti pos " << pos+8-4*(0) << " trigger K= " << K << " outside acceptance " << CL << "<K<" << CH << std::endl; } } // Right Traco if( (ntc+1)>0 && (ntc+1)<=maxtc ) { if( !_flag_acc || (K>=RL && K<=RH) ) { activeGetTRACO(ntc+1)->add_btiT( step, pos+8-4*(+1), &(*p) ); } else { if(debug()) std::cout << "ATTENTION: in TRACO n. " << ntc+1 << " bti pos " << pos+8-4*(+1) << " trigger K= " << K << " outside acceptance " << RL << "<K<" << RH << std::endl; } } } // Filter Theta BTIs -> this is done in DTBtiChip }//end loop on bti trigs }
void DTTracoCard::localClear | ( | ) | [private] |
clear the TRACO map
Definition at line 98 of file DTTracoCard.cc.
References _tracomap, and AlCaHLTBitMon_ParallelJobs::p.
Referenced by clearCache(), loadTRACO(), and ~DTTracoCard().
LocalVector DTTracoCard::localDirection | ( | const DTTrigData * | tr | ) | const [virtual] |
NEWGEO Local direction in chamber of a trigger-data object.
Implements DTGeomSupplier.
Definition at line 429 of file DTTracoCard.cc.
References DTTrigGeom::cellPitch(), config_traco(), funct::cos(), gather_cfg::cout, debug(), DTTrigGeom::distSL(), DTGeomSupplier::geom(), DTTracoTrigData::K(), DTTracoTrigData::parentId(), and funct::sin().
Referenced by DTTracoChip::calculateAngles(), and DTTSPhi::localDirection().
{ //NEWGEO DTTracoTrigData* trig = dynamic_cast<DTTracoTrigData*>(const_cast<DTTrigData*>(tr)); if(!trig) { std::cout << "DTtracoCard::localDirection called with wrong argument!" << std::endl; return LocalVector(0,0,0); } //FE position //int FE = geom()->posFE(3); float psi = atan((float)(trig->K())*geom()->cellPitch() /( geom()->distSL() * config_traco(trig->parentId())->BTIC()) ); if(config_traco(trig->parentId())->debug()==4) std::cout << "K " << trig->K() << " == psi " << psi << " in FE frame " << std::endl; // (xd,yd,zd) in chamber frame float xd=-sin(psi); float yd=0; float zd=-cos(psi); // 10/07/06 Not needed anymore (chages in geometry) // if(FE==1){//FE in negative y // xd = - xd; //} if(config_traco(trig->parentId())->debug()==4) std::cout << "Direction in chamber frame is (" << xd << "," << yd << "," << zd << ")" << std::endl; return LocalVector(xd,yd,zd); }
LocalPoint DTTracoCard::localPosition | ( | const DTTrigData * | tr | ) | const [virtual] |
NEWGEO Local position in chamber of a trigger-data object.
Implements DTGeomSupplier.
Definition at line 376 of file DTTracoCard.cc.
References DTTrigGeom::cellPitch(), config_traco(), gather_cfg::cout, DTTrigGeom::distSL(), DTGeomSupplier::geom(), DTTrigGeom::localPosition(), DTTracoTrigData::parentId(), DTTracoTrigData::posIn(), DTTracoTrigData::posOut(), DTTracoTrigData::X(), x, detailsBasic3DVector::y, and z.
Referenced by DTTSPhi::localPosition().
{ //NEWGEO DTTracoTrigData* trig = dynamic_cast<DTTracoTrigData*>(const_cast<DTTrigData*>(tr)); if(!trig) { std::cout << "DTTracoCard::localPosition called with wrong argument!" << std::endl; return LocalPoint(0,0,0); } float x = geom()->localPosition(trig->parentId()).x(); float y = geom()->localPosition(trig->parentId()).y(); float z = geom()->localPosition(trig->parentId()).z(); float trig_pos = geom()->cellPitch() * ( (float)trig->X() / (float)(config_traco(trig->parentId())->BTIC())); // 10/7/06 May be not needed anymore in new geometry // if(geom()->posFE(1)==1) // trig_pos = -trig_pos; x += trig_pos; // If not correlated get the position of the SL instead of the chamber center // z axis toward vertex if(trig->posIn()==0 ) { z -= 0.5 * geom()->distSL(); // no inner ==> only outer } else if(trig->posOut()==0) { z += 0.5 * geom()->distSL(); // no outer ==> only inner } return LocalPoint(x,y,z); }
bool DTTracoCard::lutFromDBFlag | ( | ) | [inline] |
Return lut computation option (DB/geometry)
Definition at line 116 of file DTTracoCard.h.
References _lut_from_db.
Referenced by DTTracoChip::calculateAngles(), DTTracoChip::DTTracoChip(), and DTTracoChip::~DTTracoChip().
{ return _lut_from_db; }
virtual void DTTracoCard::reconstruct | ( | ) | [inline, virtual] |
Load BTIs triggers and run TRACOs algorithm.
Reimplemented from DTCache< T, Coll >.
Definition at line 107 of file DTTracoCard.h.
References clearCache(), loadTRACO(), and runTRACO().
Referenced by DTTrig::triggerReco().
{ clearCache(); loadTRACO(); runTRACO(); }
void DTTracoCard::runTRACO | ( | ) | [private] |
run TRACO algorithm
Definition at line 235 of file DTTracoCard.cc.
References DTCache< T, Coll >::_cache, _tracomap, gather_cfg::cout, debug(), DTConfig::NSTEPF, DTConfig::NSTEPL, DTTracoChip::nTrig(), DTTracoChip::run(), DTGeomSupplier::sector(), DTGeomSupplier::station(), launcher::step, DTTracoChip::triggerData(), DTTracoChip::useSecondTrack(), and DTGeomSupplier::wheel().
Referenced by reconstruct().
{ if(debug()){ std::cout << "DTTracoCard:runTRACO called for wheel=" << wheel() ; std::cout << ", station=" << station(); std::cout << ", sector=" << sector(); std::cout << ", " << _tracomap.size() << " TRACOs with signal" << std::endl; } // run TRACO algorithm on all non-empty TRACO if(_tracomap.size()>0){ if(debug()){ std::cout << "====================================================" << std::endl; std::cout << " TRACO triggers " << std::endl; } TRACO_iter ptraco; for(ptraco=_tracomap.begin(); ptraco!=_tracomap.end(); ptraco++) { DTTracoChip* traco = (*ptraco).second; traco->run(); for(int step=DTConfig::NSTEPF; step<=DTConfig::NSTEPL; step++){ if( traco->nTrig(step)>0 ){ _cache.push_back( traco->triggerData(step,1) ); /* std::cout<<"first bti sl3: "<<geom()->localPosition(DTBtiId(wheel(),station(),sector(),3,1))<<std::endl; std::cout<<"traco pos: " << geom()->localPosition((traco->triggerData(step,1).parentId()))<<std::endl; traco->triggerData(step,1).print(); std::cout<<"pos: " << localPosition(&(traco->triggerData(step,1))) << std::endl; std::cout<<"dir: " << localDirection(&(traco->triggerData(step,1))) << std::endl; std::cout << std::endl; */ } // Store second track only if no first track at previous BX if( traco->nTrig(step)>1 && traco->useSecondTrack(step) ){ _cache.push_back( traco->triggerData(step,2) ); /* std::cout<<"first bti sl3: "<<geom()->localPosition(DTBtiId(wheel(),station(),sector(),3,1))<<std::endl; std::cout<<"traco pos: " << geom()->localPosition((traco->triggerData(step,2).parentId()))<<std::endl; traco->triggerData(step,2).print(); std::cout<<"pos: " << localPosition(&(traco->triggerData(step,2))) << std::endl; std::cout<<"dir: " << localDirection(&(traco->triggerData(step,2))) << std::endl; std::cout << std::endl; */ } } } if(debug()) std::cout << "====================================================" << std::endl; } }
void DTTracoCard::setConfig | ( | const DTConfigManager * | conf | ) |
Set configuration.
Definition at line 78 of file DTTracoCard.cc.
References _conf_luts, _conf_traco_map, _debug, _flag_acc, _lut_from_db, DTGeomSupplier::ChamberId(), DTConfigManager::getDTConfigLUTs(), DTConfigManager::getDTConfigTracoMap(), DTConfigManager::getDTTPGDebug(), DTConfigManager::lutFromDB(), evf::utils::sid, and DTConfigManager::useAcceptParam().
Referenced by DTSCTrigUnit::setConfig().
{ // get traco configuration map DTChamberId sid = ChamberId(); _conf_traco_map = conf->getDTConfigTracoMap(sid); _debug = conf->getDTTPGDebug(); // get bti acceptance flag _flag_acc = conf->useAcceptParam(); // get lut computation flag _lut_from_db = conf->lutFromDB(); // get lut configuration for this chamber // 100511 SV only if luts are read from OMDS if(_lut_from_db) _conf_luts = conf->getDTConfigLUTs(sid); }
DTTracoTrig * DTTracoCard::storeTrigger | ( | DTTracoTrigData | td | ) |
Returns a DTTracoTrig corresponding to a DTTracoTrigData. Creates the corresponding TRACO chip if needed and stores the trigger
Definition at line 328 of file DTTracoCard.cc.
References activeGetTRACO(), DTTracoChip::addTrig(), gather_cfg::cout, DTTracoTrigData::parentId(), DTTracoId::sector(), DTGeomSupplier::sector(), DTTracoId::station(), DTGeomSupplier::station(), DTTracoTrigData::step(), DTTracoId::traco(), DTGeomSupplier::wheel(), and DTTracoId::wheel().
{ DTTracoId tracoid = td.parentId(); if(!(tracoid.wheel()==wheel() && tracoid.sector()==sector() && tracoid.station()==station()) ) return 0; std::cout << "DTTracoChip::trigger: trigger not belonging to this card! "; std::cout << "card=(" << wheel() << "," << station() << "," << sector() << ") "; std::cout << "trig=(" << tracoid.wheel() << "," << tracoid.station() << "," << tracoid.sector() << ")"; // get the appropriate Traco DTTracoChip* traco = activeGetTRACO(tracoid.traco()); // create a new trigger in the Traco DTTracoTrig* trig = new DTTracoTrig(traco,td); // add the trigger to the Traco traco->addTrig(td.step(),trig); // return the trigger return trig; }
std::vector< DTTracoChip * > DTTracoCard::tracoList | ( | ) |
Returns the active TRACO list.
Definition at line 314 of file DTTracoCard.cc.
References _tracomap, AlCaHLTBitMon_ParallelJobs::p, and DTCache< T, Coll >::size().
DTTSTheta* DTTracoCard::TSTh | ( | ) | const [inline] |
Return TSTheta.
Definition at line 81 of file DTTracoCard.h.
References _tstheta.
Referenced by DTTracoChip::storeUncorr().
{ return _tstheta; }
bool DTTracoCard::useAcceptParamFlag | ( | ) | [inline] |
Return acceptance flag.
Definition at line 113 of file DTTracoCard.h.
References _flag_acc.
Referenced by DTTracoChip::add_btiT().
{ return _flag_acc; }
DTBtiCard* DTTracoCard::_bticard [private] |
Definition at line 142 of file DTTracoCard.h.
Referenced by loadTRACO().
DTConfigLUTs* DTTracoCard::_conf_luts [private] |
Definition at line 148 of file DTTracoCard.h.
Referenced by config_luts(), and setConfig().
ConfTracoMap DTTracoCard::_conf_traco_map [private] |
Definition at line 146 of file DTTracoCard.h.
Referenced by config_traco(), and setConfig().
bool DTTracoCard::_debug [private] |
Definition at line 150 of file DTTracoCard.h.
Referenced by debug(), and setConfig().
bool DTTracoCard::_flag_acc [private] |
Definition at line 152 of file DTTracoCard.h.
Referenced by loadTRACO(), setConfig(), and useAcceptParamFlag().
bool DTTracoCard::_lut_from_db [private] |
Definition at line 153 of file DTTracoCard.h.
Referenced by lutFromDBFlag(), and setConfig().
TRACOContainer DTTracoCard::_tracomap [private] |
Definition at line 145 of file DTTracoCard.h.
Referenced by activeGetTRACO(), getTRACO(), localClear(), runTRACO(), and tracoList().
DTTSTheta* DTTracoCard::_tstheta [private] |
Definition at line 143 of file DTTracoCard.h.
Referenced by TSTh().