| Classes | Job Modules | Data Objects | Services | Algorithms | Tools | Packages | Directories | Tracs |

In This Package:

TsMultTriggerTool Class Reference

#include <TsMultTriggerTool.h>

Inheritance diagram for TsMultTriggerTool:

[legend]
Collaboration diagram for TsMultTriggerTool:
[legend]
List of all members.

Public Types

 SUCCESS
 NO_INTERFACE
 VERSMISMATCH
 LAST_ERROR
 SUCCESS
 NO_INTERFACE
 VERSMISMATCH
 LAST_ERROR
enum  Status

Public Member Functions

 TsMultTriggerTool (const std::string &type, const std::string &name, const IInterface *parent)
virtual ~TsMultTriggerTool ()
virtual StatusCode mutate (DayaBay::SimTrigHeader *trigHeader, const DayaBay::ElecHeader &elecHeader)
 Modify the event.
virtual StatusCode initialize ()
virtual StatusCode finalize ()
INTupleSvcntupleSvc () const
INTupleSvcevtColSvc () const
IDataProviderSvcdetSvc () const
IDataProviderSvcevtSvc () const
IIncidentSvcincSvc () const
IChronoStatSvcchronoSvc () const
IHistogramSvchistoSvc () const
IAlgContextSvccontextSvc () const
DataObjectput (IDataProviderSvc *svc, DataObject *object, const std::string &address, const bool useRootInTES=true) const
DataObjectput (DataObject *object, const std::string &address, const bool useRootInTES=true) const
Gaudi::Utils::GetData< TYPE
>::return_type 
get (IDataProviderSvc *svc, const std::string &location, const bool useRootInTES=true) const
Gaudi::Utils::GetData< TYPE
>::return_type 
get (const std::string &location, const bool useRootInTES=true) const
TYPE * getDet (IDataProviderSvc *svc, const std::string &location) const
TYPE * getDet (const std::string &location) const
bool exist (IDataProviderSvc *svc, const std::string &location, const bool useRootInTES=true) const
bool exist (const std::string &location, const bool useRootInTES=true) const
bool existDet (IDataProviderSvc *svc, const std::string &location) const
bool existDet (const std::string &location) const
TYPE * getOrCreate (IDataProviderSvc *svc, const std::string &location, const bool useRootInTES=true) const
TYPE * getOrCreate (const std::string &location, const bool useRootInTES=true) const
TOOL * tool (const std::string &type, const std::string &name, const IInterface *parent=0, bool create=true) const
TOOL * tool (const std::string &type, const IInterface *parent=0, bool create=true) const
SERVICE * svc (const std::string &name, const bool create=true) const
IUpdateManagerSvcupdMgrSvc () const
IDataProviderSvcfastContainersSvc () const
StatusCode Error (const std::string &msg, const StatusCode st=StatusCode::FAILURE, const size_t mx=10) const
StatusCode Warning (const std::string &msg, const StatusCode st=StatusCode::FAILURE, const size_t mx=10) const
StatusCode Print (const std::string &msg, const StatusCode st=StatusCode::SUCCESS, const MSG::Level lev=MSG::INFO) const
StatusCode Assert (const bool ok, const std::string &message="", const StatusCode sc=StatusCode(StatusCode::FAILURE, true)) const
StatusCode Assert (const bool ok, const char *message, const StatusCode sc=StatusCode(StatusCode::FAILURE, true)) const
StatusCode Exception (const std::string &msg, const GaudiException &exc, const StatusCode sc=StatusCode(StatusCode::FAILURE, true)) const
StatusCode Exception (const std::string &msg, const std::exception &exc, const StatusCode sc=StatusCode(StatusCode::FAILURE, true)) const
StatusCode Exception (const std::string &msg="no message", const StatusCode sc=StatusCode(StatusCode::FAILURE, true)) const
MsgStreammsgStream (const MSG::Level level) const
MsgStreamalways () const
MsgStreamfatal () const
MsgStreamerr () const
MsgStreamerror () const
MsgStreamwarning () const
MsgStreaminfo () const
MsgStreamdebug () const
MsgStreamverbose () const
MsgStreammsg () const
const Statisticscounters () const
StatEntitycounter (const std::string &tag) const
MSG::Level msgLevel () const
bool msgLevel (const MSG::Level level) const
void resetMsgStream () const
bool typePrint () const
bool propsPrint () const
bool statPrint () const
bool errorsPrint () const
long printStat (const MSG::Level level=MSG::ALWAYS) const
long printErrors (const MSG::Level level=MSG::ALWAYS) const
long printProps (const MSG::Level level=MSG::ALWAYS) const
void registerCondition (const std::string &condition, StatusCode(CallerClass::*mf)()=NULL)
void registerCondition (const std::string &condition, CondType *&condPtrDest, StatusCode(CallerClass::*mf)()=NULL)
void registerCondition (char *condition, StatusCode(CallerClass::*mf)()=NULL)
void registerCondition (TargetClass *condition, StatusCode(CallerClass::*mf)()=NULL)
StatusCode runUpdate ()
TransientFastContainer< T > * getFastContainer (const std::string &location, typename TransientFastContainer< T >::size_type initial=0)
StatusCode release (const IInterface *interface) const
virtual unsigned long release ()
const std::string & context () const
const std::string & rootInTES () const
double globalTimeOffset () const
virtual StatusCode queryInterface (const InterfaceID &riid, void **ppvUnknown)
virtual unsigned long addRef ()
virtual const std::string & name () const
virtual const std::string & type () const
virtual const IInterfaceparent () const
virtual StatusCode configure ()
virtual StatusCode start ()
virtual StatusCode stop ()
virtual StatusCode terminate ()
virtual StatusCode reinitialize ()
virtual StatusCode restart ()
virtual Gaudi::StateMachine::State FSMState () const
virtual Gaudi::StateMachine::State targetFSMState () const
virtual StatusCode sysInitialize ()
virtual StatusCode sysStart ()
virtual StatusCode sysStop ()
virtual StatusCode sysFinalize ()
virtual StatusCode sysReinitialize ()
virtual StatusCode sysRestart ()
virtual StatusCode setProperty (const Property &p)
virtual StatusCode setProperty (const std::string &s)
virtual StatusCode setProperty (const std::string &n, const std::string &v)
StatusCode setProperty (const std::string &name, const TYPE &value)
virtual StatusCode getProperty (Property *p) const
virtual const PropertygetProperty (const std::string &name) const
virtual StatusCode getProperty (const std::string &n, std::string &v) const
virtual const std::vector<
Property * > & 
getProperties () const
PropertyMgrgetPropertyMgr ()
ISvcLocatorserviceLocator () const
ISvcLocatorsvcLoc () const
IMessageSvcmsgSvc () const
IToolSvctoolSvc () const
StatusCode setProperties ()
StatusCode service (const std::string &name, T *&svc, bool createIf=true) const
StatusCode service (const std::string &type, const std::string &name, T *&svc) const
void declInterface (const InterfaceID &, void *)
PropertydeclareProperty (const std::string &name, T &property, const std::string &doc="none") const
PropertydeclareRemoteProperty (const std::string &name, IProperty *rsvc, const std::string &rname="") const
IAuditorSvcauditorSvc () const
IMonitorSvcmonitorSvc () const
void declareInfo (const std::string &name, const T &var, const std::string &desc) const
void declareInfo (const std::string &name, const std::string &format, const void *var, int size, const std::string &desc) const
virtual const std::string & type () const =0
virtual const IInterfaceparent () const =0
virtual StatusCode configure ()=0
virtual StatusCode start ()=0
virtual StatusCode stop ()=0
virtual StatusCode terminate ()=0
virtual StatusCode reinitialize ()=0
virtual StatusCode restart ()=0
virtual Gaudi::StateMachine::State FSMState () const =0
virtual StatusCode sysInitialize ()=0
virtual StatusCode sysStart ()=0
virtual StatusCode sysStop ()=0
virtual StatusCode sysFinalize ()=0
virtual StatusCode sysReinitialize ()=0
virtual StatusCode sysRestart ()=0
virtual unsigned long refCount () const =0
virtual const std::string & name () const =0
virtual StatusCode queryInterface (const InterfaceID &riid, void **ppvInterface)=0
virtual unsigned long addRef ()=0
virtual unsigned long release ()=0

Static Public Member Functions

static const InterfaceIDinterfaceID ()
static const InterfaceIDinterfaceID ()
static const InterfaceIDinterfaceID ()
static const InterfaceIDinterfaceID ()
 Retrieve interface ID.

Public Attributes

 SUCCESS
 NO_INTERFACE
 VERSMISMATCH
 LAST_ERROR

Protected Types

typedef std::map< std::string,
StatEntity
Statistics
typedef std::map< std::string,
unsigned int > 
Counter
typedef std::vector< IAlgTool * > AlgTools
typedef std::pair< IInterface *,
std::string > 
ServiceEntry
typedef std::vector< ServiceEntryServices

Protected Member Functions

StatusCode releaseTool (const IAlgTool *tool) const
StatusCode releaseSvc (const IInterface *svc) const
int outputLevel () const
virtual unsigned long refCount () const
IntegerPropertyoutputLevelProperty ()
void initOutputLevel (Property &prop)

Static Protected Attributes

static const bool IgnoreRootInTES
static const bool UseRootInTES

Private Member Functions

virtual StatusCode fillTriggers (DayaBay::SimTrigHeader *trigHeader, const DayaBay::ElecHeader &elecHeader)
unsigned int getThreshold (DayaBay::Detector det)
DayaBay::Trigger::TriggerType_t getTriggerType (DayaBay::Detector det)

Private Attributes

unsigned int m_recoveryCycles
unsigned int m_ADThreshold
unsigned int m_FarIWSThreshold
unsigned int m_FarOWSThreshold
unsigned int m_NearIWSThreshold
unsigned int m_NearOWSThreshold
std::vector< std::string > m_detectorsToProcess
std::map< std::string, int > m_NHitThresholdMap

Detailed Description

Definition at line 28 of file TsMultTriggerTool.h.


Constructor & Destructor Documentation

TsMultTriggerTool::TsMultTriggerTool ( const std::string &  type,
const std::string &  name,
const IInterface parent 
)

Definition at line 15 of file TsMultTriggerTool.cc.

00018     : GaudiTool(type,name,parent)
00019 {
00020   declareInterface< ITsTriggerTool >(this) ;
00021   // for now add all but RPC's as default.
00022   m_detectorsToProcess.push_back("DayaBayAD1");
00023   m_detectorsToProcess.push_back("DayaBayAD2");
00024   m_detectorsToProcess.push_back("DayaBayIWS");
00025   m_detectorsToProcess.push_back("DayaBayOWS");
00026   m_detectorsToProcess.push_back("LingAoAD1");
00027   m_detectorsToProcess.push_back("LingAoAD2");
00028   m_detectorsToProcess.push_back("LingAoIWS");
00029   m_detectorsToProcess.push_back("LingAoOWS"); 
00030   m_detectorsToProcess.push_back("FarAD1");
00031   m_detectorsToProcess.push_back("FarAD2");
00032   m_detectorsToProcess.push_back("FarAD3");
00033   m_detectorsToProcess.push_back("FarAD4");
00034   m_detectorsToProcess.push_back("FarIWS");
00035   m_detectorsToProcess.push_back("FarOWS");
00036   
00037   m_NHitThresholdMap["DayaBayAD1"]=DayaBay::Trigger::kADthreshold;
00038   m_NHitThresholdMap["DayaBayAD2"]=DayaBay::Trigger::kADthreshold;
00039   m_NHitThresholdMap["DayaBayIWS"]=DayaBay::Trigger::kNearIWSthreshold;
00040   m_NHitThresholdMap["DayaBayOWS"]=DayaBay::Trigger::kNearOWSthreshold;
00041   m_NHitThresholdMap["LingAoAD1"]=DayaBay::Trigger::kADthreshold;
00042   m_NHitThresholdMap["LingAoAD2"]=DayaBay::Trigger::kADthreshold;
00043   m_NHitThresholdMap["LingAoIWS"]=DayaBay::Trigger::kNearIWSthreshold;
00044   m_NHitThresholdMap["LingAoOWS"]=DayaBay::Trigger::kNearOWSthreshold;
00045   m_NHitThresholdMap["FarAD1"]=DayaBay::Trigger::kADthreshold;
00046   m_NHitThresholdMap["FarAD2"]=DayaBay::Trigger::kADthreshold;
00047   m_NHitThresholdMap["FarAD3"]=DayaBay::Trigger::kADthreshold;
00048   m_NHitThresholdMap["FarAD4"]=DayaBay::Trigger::kADthreshold;
00049   m_NHitThresholdMap["FarIWS"]=DayaBay::Trigger::kFarIWSthreshold;
00050   m_NHitThresholdMap["FarOWS"]=DayaBay::Trigger::kFarOWSthreshold;
00051   
00052   
00053   declareProperty("DetectorsToProcess",m_detectorsToProcess,
00054                   "List of detectors to process with this tool");
00055   declareProperty("RecoveryTime",m_recoveryCycles=8,
00056                   "Number of nhit (80MHz) clock cycles for trigger dead time");
00057   declareProperty("NHitTriggerThreshold",m_NHitThresholdMap,
00058                   "Map indexed by detector name with Nhit Thresold");
00059   
00060   declareProperty("ADThreshold", 
00061                   m_ADThreshold = DayaBay::Trigger::kADthreshold,
00062                                   "DEPRICATED NHit threshold for AD Multiplicty Trigger");       
00063   declareProperty("FarIWSThreshold",
00064                   m_FarIWSThreshold=DayaBay::Trigger::kFarIWSthreshold,
00065                                   "DEPRICATED NHit threshold for FarIWS Multiplicity Trigger");
00066   declareProperty("FarOWSThreshold",
00067                    m_FarOWSThreshold=DayaBay::Trigger::kFarOWSthreshold,
00068                                   "DEPRICATED NHit threshold for FarOWS Multiplicity Trigger");
00069   declareProperty("NearIWSThreshold",
00070                   m_NearIWSThreshold=DayaBay::Trigger::kNearIWSthreshold,
00071                                   "NHit threshold for NearIWS Multiplicity Trigger");
00072   declareProperty("NearOWSThreshold",
00073                    m_NearOWSThreshold=DayaBay::Trigger::kNearOWSthreshold,
00074                               "DEPRICATED NHit threshold for NearOWS Multiplicity Trigger");
00075 }

TsMultTriggerTool::~TsMultTriggerTool (  )  [virtual]

Definition at line 77 of file TsMultTriggerTool.cc.

00077 {}


Member Function Documentation

StatusCode TsMultTriggerTool::mutate ( DayaBay::SimTrigHeader trigHeader,
const DayaBay::ElecHeader elecHeader 
) [virtual]

Modify the event.

Implements ITsTriggerTool.

Definition at line 214 of file TsMultTriggerTool.cc.

00216 {     
00217   return fillTriggers(trigHeader,elecHeader);
00218 }

StatusCode TsMultTriggerTool::initialize (  )  [virtual]

Reimplemented from GaudiTool.

Definition at line 79 of file TsMultTriggerTool.cc.

00080 {
00081   std::vector<std::string>::iterator it;
00082 
00083   // loop over detectors 
00084   for(it = m_detectorsToProcess.begin(); 
00085       it != m_detectorsToProcess.end(); 
00086       ++it){    
00087                 short int detId =  DayaBay::Detector::siteDetPackedFromString(*it);
00088             DayaBay::Detector det(detId);
00089             info() << det 
00090                            << " is setup with threshold " 
00091                            << getThreshold(det) 
00092                            << endreq;   
00093         }
00094         
00095         if(m_ADThreshold != (int) DayaBay::Trigger::kADthreshold){
00096             warning() << "ADThreshold Depricated use NHitTriggerThreshold"
00097             << endreq;
00098         }
00099         if(m_NearIWSThreshold != (int) DayaBay::Trigger::kNearIWSthreshold){
00100             warning() << "NearIWSThreshold Depricated use NHitTriggerThreshold"
00101             << endreq;
00102         }
00103         if(m_NearOWSThreshold != (int) DayaBay::Trigger::kNearOWSthreshold){
00104             warning() << "NearOWSThreshold Depricated use NHitTriggerThreshold"
00105             << endreq;
00106         }
00107         if(m_FarIWSThreshold != (int) DayaBay::Trigger::kFarIWSthreshold){
00108             warning() << "FarIWSThreshold Depricated use NHitTriggerThreshold"
00109             << endreq;
00110         }
00111         if(m_FarOWSThreshold != (int) DayaBay::Trigger::kFarOWSthreshold){
00112             warning() << "FarOWSThreshold Depricated use NHitTriggerThreshold"
00113             << endreq;
00114         }
00115 
00116         return StatusCode::SUCCESS;
00117 }

StatusCode TsMultTriggerTool::finalize (  )  [virtual]

Reimplemented from GaudiTool.

Definition at line 119 of file TsMultTriggerTool.cc.

00120 {
00121   return StatusCode::SUCCESS;
00122 }

StatusCode TsMultTriggerTool::fillTriggers ( DayaBay::SimTrigHeader trigHeader,
const DayaBay::ElecHeader elecHeader 
) [private, virtual]

Definition at line 124 of file TsMultTriggerTool.cc.

00126 {
00127   debug() << "running fillTriggers()" << endreq;
00128   DayaBay::SimTrigCommandHeader* trigCH 
00129           = const_cast<DayaBay::SimTrigCommandHeader*>(trigHeader->commandHeader());
00130   
00131   const DayaBay::ElecCrateHeader* crateHeader = elecHeader.crateHeader();
00132   DayaBay::ElecCrateHeader::CrateMap cmap = crateHeader->crates();
00133   DayaBay::ElecCrateHeader::CrateMap::iterator detIterator;
00134   
00135   std::vector<std::string>::iterator it;
00136   debug() << "processing " << m_detectorsToProcess.size() << " detectors." << endreq;
00137   
00138   // loop over detectors 
00139   for(it = m_detectorsToProcess.begin(); 
00140       it != m_detectorsToProcess.end(); 
00141       ++it){
00142     short int detId =  DayaBay::Detector::siteDetPackedFromString(*it);
00143     DayaBay::Detector det(detId);
00144     verbose() << "Processing " << *it << " which is " << det << endreq;
00145     
00146     const DayaBay::SimTrigCommandHeader::detCollMap trigCollMap = trigCH->collections();
00147     
00148     detIterator = cmap.find(det);
00149     if(detIterator != cmap.end()){
00150       // A crate was found for this detector
00151       debug() << "A crate was found for " << det 
00152               << " processing..." << endreq;
00153       
00154       // Only create and add triggers if there is a crate for it...
00155       
00156       if(trigCollMap.find(det) == trigCollMap.end()){
00157           DayaBay::SimTrigCommandCollection *tcc = new DayaBay::SimTrigCommandCollection();
00158           tcc->setHeader(trigCH);
00159           tcc->setDetector(det);
00160           trigCH->addCollection(tcc);
00161       }
00162       // Get the crate from the header object
00163       DayaBay::ElecFeeCrate *crate 
00164                         = dynamic_cast<DayaBay::ElecFeeCrate*>(cmap[det]);
00165       
00166       DayaBay::ElecFeeCrate::DigitalMap hits = crate->nhit();
00167       DayaBay::ElecFeeCrate::DigitalMap::iterator brIt;
00168       DayaBay::DigitalSignal bSum; 
00169       
00170       // make running sum over all boards
00171       for(brIt = hits.begin(); brIt != hits.end(); ++brIt){
00172         if(bSum.empty()) bSum.resize((brIt->second).size(),0);
00173         DayaBay::DigitalSignal bSig= brIt->second;
00174         
00175         for(size_t i = 0; i != bSig.size(); ++i){
00176           //info() << *it << "\t" << endreq;
00177           bSum.at(i)+=bSig.at(i);
00178         }
00179       } // end make running sum
00180       
00181       unsigned int threshold = getThreshold(det);
00182       verbose() << "Trigger Threshold " << threshold 
00183                 << " Board Sum Size " << bSum.size() << endreq;
00184       
00185 
00186       int maxNsum = -1;
00187       for(unsigned int i=0; i < bSum.size(); ++i){      
00188         if( maxNsum < bSum[i] ) maxNsum = bSum[i];
00189       }
00190       debug() << "Max multiplicity for " << det << " is " << maxNsum << endreq; 
00191 
00192       // issue trigger if detector goes over threshold
00193       for(unsigned int i=0; i < bSum.size(); ++i){
00194               verbose() << "Board sum entry for cycle #"<< i << "\t is " << bSum[i] << endreq;
00195           if ( (unsigned int)bSum[i] >= threshold ){ 
00196               DayaBay::Trigger::TriggerType_t type = getTriggerType(det);
00199               DayaBay::SimTrigCommand *tc = new DayaBay::SimTrigCommand(det,type,i,bSum[i],0,0);
00200               debug() << "Adding Trigger at cycle\t" <<  i
00201                       << " With type " << type <<  endreq;
00202               verbose() << "Waiting " << m_recoveryCycles << " cycles to recover" << endreq;
00203               i += m_recoveryCycles;
00204               trigCH->addCommand(tc);
00205           }
00206       }// end issue trigger
00207     
00208     }// end if crate exists
00209   }
00210   return StatusCode::SUCCESS;                               
00211 }

unsigned int TsMultTriggerTool::getThreshold ( DayaBay::Detector  det  )  [private]

Definition at line 222 of file TsMultTriggerTool.cc.

00222                                                                {
00223       if( m_NHitThresholdMap.find(det.detName()) 
00224                      != m_NHitThresholdMap.end() ){
00225           return m_NHitThresholdMap[det.detName()];
00226       }
00227       warning() << "Requesting a NHit threshold for " << det.detName() 
00228                 << " but none was specified in input map " << endreq;
00229       warning() << "Using default value as defined in Conventions/Trigger.h"
00230                 << endreq;
00231     if(det.detectorId() == DetectorId::kAD1 || 
00232        det.detectorId() == DetectorId::kAD2 ||
00233        det.detectorId() == DetectorId::kAD3 || 
00234        det.detectorId() == DetectorId::kAD4 ){
00235       return DayaBay::Trigger::kADthreshold;
00236     }
00237     if(det.detectorId() == DetectorId::kIWS){
00238       if(det.site() == Site::kFar){
00239          return DayaBay::Trigger::kFarIWSthreshold;
00240       }else{
00241          return DayaBay::Trigger::kNearIWSthreshold;
00242       }
00243     }
00244     if(det.detectorId() == DetectorId::kOWS){
00245       if(det.site() == Site::kFar){
00246          return DayaBay::Trigger::kFarOWSthreshold;
00247       }else{
00248          return DayaBay::Trigger::kNearOWSthreshold;
00249       }
00250     }
00251   return 0;
00252 }

DayaBay::Trigger::TriggerType_t TsMultTriggerTool::getTriggerType ( DayaBay::Detector  det  )  [private]

Definition at line 254 of file TsMultTriggerTool.cc.

const InterfaceID & ITsTriggerTool::interfaceID (  )  [static, inherited]

Retrieve interface ID.

Reimplemented from IAlgTool.

Definition at line 8 of file ITsTriggerTool.cc.

00009 { 
00010     return IID_ITsTriggerTool; 
00011 }


Member Data Documentation

unsigned int TsMultTriggerTool::m_recoveryCycles [private]

Definition at line 45 of file TsMultTriggerTool.h.

unsigned int TsMultTriggerTool::m_ADThreshold [private]

Definition at line 46 of file TsMultTriggerTool.h.

unsigned int TsMultTriggerTool::m_FarIWSThreshold [private]

Definition at line 47 of file TsMultTriggerTool.h.

unsigned int TsMultTriggerTool::m_FarOWSThreshold [private]

Definition at line 48 of file TsMultTriggerTool.h.

unsigned int TsMultTriggerTool::m_NearIWSThreshold [private]

Definition at line 49 of file TsMultTriggerTool.h.

unsigned int TsMultTriggerTool::m_NearOWSThreshold [private]

Definition at line 50 of file TsMultTriggerTool.h.

std::vector<std::string> TsMultTriggerTool::m_detectorsToProcess [private]

Definition at line 55 of file TsMultTriggerTool.h.

std::map<std::string,int> TsMultTriggerTool::m_NHitThresholdMap [private]

Definition at line 56 of file TsMultTriggerTool.h.


The documentation for this class was generated from the following files:
| Classes | Job Modules | Data Objects | Services | Algorithms | Tools | Packages | Directories | Tracs |

Generated on Mon Apr 11 20:50:05 2011 for TrigSim by doxygen 1.4.7