Skip to content
Snippets Groups Projects
Commit 7e0e68e1 authored by Marco Clemencic's avatar Marco Clemencic
Browse files

v19r4p1

parent 302e6a55
No related branches found
Tags v19r4p1
No related merge requests found
Showing
with 2247 additions and 1 deletion
......@@ -6,5 +6,5 @@ find_package(GaudiProject)
#---------------------------------------------------------------
# Declare project name and version
gaudi_project(Phys v19r4
gaudi_project(Phys v19r4p1
USE Rec v17r4)
################################################################################
# Package: DAQEvent
################################################################################
gaudi_subdir(DAQEvent v9r17)
gaudi_depends_on_subdirs(GaudiKernel
GaudiObjDesc)
include(GaudiObjDesc)
god_build_headers(xml/*.xml)
gaudi_add_library(DAQEventLib
src/*.cpp
PUBLIC_HEADERS Event
LINK_LIBRARIES GaudiKernel)
gaudi_add_dictionary(DAQEvent
xml/lcgdict/lcg_headers.h
xml/lcgdict/lcg_selection.xml
LINK_LIBRARIES GaudiKernel DAQEventLib
OPTIONS --comments)
#ifndef DAQEVENT_RAWBANK_H
#define DAQEVENT_RAWBANK_H 1
#include <string>
#include <vector>
/** @class LHCb::RawBank RawBank.h
*
* Raw data bank sent by the TELL1 boards of the LHCb DAQ.
*
* For a detailed description of the raw bank format,
* see <a href="https://edms.cern.ch/document/565851/5">EDMS-565851/5</a>
*
* Note concerning the changes done 06/03/2006:
* - The bank size is in BYTES
* - The full size of a bank in memory is long word (32 bit) aligned
* ie. a bank of 17 Bytes length actually uses 20 Bytes in memory.
* - The bank length accessors size() and setSize() do not contain
* the bank header, ie. size() = (total size) - (header size).
* - The length passed to the RawEvent::createBank should NOT
* contain the size of the header !
* - If the full padded bank size is required use the utility
* function RawBank::totalSize = size + header size + padding size.
*
* @author Helder Lopes
* @author Markus Frank
* created Tue Oct 04 14:45:20 2005
*
*/
namespace LHCb
{
class RawBankSubClass;
class RawBank {
/// Need to declare some friend to avoid compiler warnings
friend class RawBankSubClass;
private:
/// Default Constructor
RawBank() {}
/// Default Destructor
~RawBank() {}
public:
// typedef for std::vector of RawBank
typedef std::vector<RawBank*> Vector;
typedef std::vector<const RawBank*> ConstVector;
/// Define bank types for RawBank
enum BankType{ L0Calo=0, // 0
L0DU, // 1
PrsE, // 2
EcalE, // 3
HcalE, // 4
PrsTrig, // 5
EcalTrig, // 6
HcalTrig, // 7
Velo, // 8
Rich, // 9
TT, // 10
IT, // 11
OT, // 12
Muon, // 13
L0PU, // 14
DAQ, // 15
ODIN, // 16
HltDecReports, // 17
VeloFull, // 18
TTFull, // 19
ITFull, // 20
EcalPacked, // 21
HcalPacked, // 22
PrsPacked, // 23
L0Muon, // 24
ITError, // 25
TTError, // 26
ITPedestal, // 27
TTPedestal, // 28
VeloError, // 29
VeloPedestal, // 30
VeloProcFull, // 31
OTRaw, // 32
OTError, // 33
EcalPackedError, // 34
HcalPackedError, // 35
PrsPackedError, // 36
L0CaloFull, // 37
L0CaloError, // 38
L0MuonCtrlAll, // 39
L0MuonProcCand, // 40
L0MuonProcData, // 41
L0MuonRaw, // 42
L0MuonError, // 43
GaudiSerialize, // 44
GaudiHeader, // 45
TTProcFull, // 46
ITProcFull, // 47
TAEHeader, // 48
MuonFull, // 49
MuonError, // 50
TestDet, // 51
L0DUError, // 52
HltRoutingBits, // 53
HltSelReports, // 54
HltVertexReports,// 55
HltLumiSummary, // 56
L0PUFull, // 57
L0PUError, // 58
DstBank, // 59
DstData, // 60
DstAddress, // 61
FileID, // 62
VP, // 63
FTCluster, // 64
VL, // 65
UT, // 66
UTFull, // 67
UTError, // 68
UTPedestal, // 69
HC, // 70
HltTrackReports, // 71
// Add new types here. Don't forget to update also RawBank.cpp
LastType // LOOP Marker; add new bank types ONLY before!
};
/// Get any bank type as a string
static std::string typeName(LHCb::RawBank::BankType e);
/// Get this bank type as a string
inline std::string typeName(){return LHCb::RawBank::typeName( type() ); }
/// Magic pattern for Raw bank headers
enum RawPattern{ MagicPattern=0xCBCB };
/// Access to magic word for integrity check
int magic() const { return m_magic; }
/// Set magic word
void setMagic() { m_magic = MagicPattern; }
/// Header size
int hdrSize() const { return sizeof(RawBank)-sizeof(m_data);}
/// Return size of the data body part of the bank
int size() const { return m_length-hdrSize(); }
/// Set data size of the bank in bytes
void setSize(size_t val) { m_length = (val&0xFFFF)+hdrSize(); }
/// Access the full (padded) size of the bank
int totalSize() const {
typedef unsigned int T;
return m_length%sizeof(T)==0 ? m_length : (m_length/sizeof(T)+1)*sizeof(T);
}
/// Return bankType of this bank
BankType type() const { return BankType(int(m_type)); }
/// Set the bank type
void setType(BankType val) { m_type = (unsigned char)(char(val)&0xFF); }
/// Return version of this bank
int version() const { return m_version; }
/// Set the version information of this bank
void setVersion(int val) { m_version = (unsigned char)(val&0xFF); }
/// Return SourceID of this bank (TELL1 board ID)
int sourceID() const { return m_sourceID; }
/// Set the source ID of this bank (TELL1 board ID)
void setSourceID(int val) { m_sourceID = (unsigned short)(val&0xFFFF); }
/// Return pointer to begining of data body of the bank
unsigned int* data() { return &m_data[0]; }
/// Return pointer to begining of data body of the bank (const data access)
const unsigned int* data() const { return &m_data[0]; }
/// Begin iterator
template <typename T> T* begin(){ return (T*)m_data; }
/// End iterator
template <typename T> T* end() { return ((T*)m_data) + size()/sizeof(T); }
/// Begin iterator over const iteration
template <typename T> const T* begin() const {return (T*)m_data;}
/// End iterator of const iteration
template <typename T> const T* end() const {return ((T*)m_data) + size()/sizeof(T); }
private:
/// Magic word (by definition 0xCBCB)
unsigned short m_magic;
/// Bank length in bytes (must be >= 0)
unsigned short m_length;
/// Bank type (must be >= 0)
unsigned char m_type;
/// Version identifier (must be >= 0)
unsigned char m_version;
/// Source ID (valid source IDs are > 0; invalid ones 0)
short m_sourceID;
/// Opaque data block
unsigned int m_data[1];
}; // class RawBank
} // namespace LHCb
#endif ///DAQEvent_RawBank_H
#ifndef DAQEVENT_RAWEVENT_H
#define DAQEVENT_RAWEVENT_H 1
// Include files
#include "GaudiKernel/DataObject.h"
#include "Event/RawBank.h"
#include <string>
#include <vector>
#include <map>
namespace LHCb
{
// Class ID definition
static const CLID CLID_RawEvent = 1002;
// Namespace for locations in TDS
#ifdef __INTEL_COMPILER // Disable ICC remark
#pragma warning(disable:177) // variable was declared but never referenced
#endif
namespace RawEventLocation {
static const std::string& Default = "DAQ/RawEvent"; ///< Original FULL Raw Event
static const std::string& Emulated = "Emu/RawEvent";
static const std::string& Copied = "pRec/RawEvent";
static const std::string& Calo = "Calo/RawEvent"; ///< Copy of Calo banks
static const std::string& Muon = "Muon/RawEvent"; ///< Copy of Muon banks, for MDST
static const std::string& Rich = "Rich/RawEvent"; ///< Copy of Rich banks
static const std::string& Trigger = "Trigger/RawEvent"; ///< Copy of Trigger banks for Stripping and MDST
static const std::string& Other = "Other/RawEvent"; ///< Copy of all banks except Calo, Muon, Rich and Trigger (now Obsolete)
static const std::string& Velo = "Velo/RawEvent"; ///< Copy of Velo banks
static const std::string& Tracker = "Tracker/RawEvent"; ///< Copy of IT, OT and TT banks
static const std::string& Unstripped = "Unstripped/RawEvent"; ///< Miscellaneous banks not required by stripping lines.
}
/** @class LHCb::RawEvent RawEvent.h
*
* Raw event
*
* @author Helder Lopes
* @author Markus Frank
* created Tue Oct 04 14:45:29 2005
*
*/
class RawEvent : public DataObject {
public:
/** @class LHCb::RawEvent::Bank RawEvent.h Event/RawEvent.h
*
* Shadow class used to deal with persistency.
* This class is entirely internal. Do not change.
* In particular the field comments are hints to ROOT
* to support the storage of variable size C-arrays in order
* to avoid a copy of the data.
*
* Banks can be removed using the removeBank(RawBank*) member
* function. The bank to be removed must be identified by its
* pointer to ensure unambiguous bank identification also in the
* event where multiple banks if the same bank type are present.
* If no other bank of the category of the bank (Banktype)to
* be removed is anymore present in the raw event, also the
* category is removed.
*
* Note:
* - The length passed to the RawEvent::createBank should NOT
* contain the size of the header !
*
* @author M.Frank
* @version 1.0
*/
struct Bank {
int m_len; // Bank length
char m_owns; //! transient data member: ownership flag
unsigned int* m_buff; //[m_len]
/// Default constructor
Bank() : m_len(0), m_owns(1), m_buff(0) {}
/// Initializing constructor
Bank(int len, char owns, unsigned int* b) : m_len(len), m_owns(owns), m_buff(b) {}
/// Copy constructor
Bank(const Bank& c) : m_len(c.m_len), m_owns(c.m_owns), m_buff(c.m_buff) {
}
/// Assignment operator
Bank& operator=(const Bank& c) {
m_len = c.m_len;
m_owns = c.m_owns;
m_buff = c.m_buff;
return *this;
}
/// Access to memory buffer
unsigned int* buffer() { return m_buff; }
/// Access to ownership flag.
bool ownsMemory() const { return m_owns == 1; }
};
/// Default Constructor
RawEvent();
/// Default Destructor
virtual ~RawEvent();
/// Retrieve class identifier (static)
static const CLID& classID() { return CLID_RawEvent; }
/// Retrieve class identifier (virtual overload)
virtual const CLID& clID() const { return RawEvent::classID(); }
/// accessor method to the vector of Raw banks for a given bank type
const std::vector<RawBank*> & banks(RawBank::BankType bankType) {
// The optimizer should be able to deal with this...
return m_mapped ? m_eventMap[bankType] : mapBanks(bankType);
}
/// For offline use only: copy data into a set of banks, adding bank header internally.
void addBank(int sourceID,
RawBank::BankType bankType,
int version,
const std::vector<unsigned int>& data);
/// For offline use only: copy data into a bank, adding bank header internally.
void addBank(RawBank* data); // Pointer to data block (payload) of bank
/// Take ownership of a bank, including the header
void adoptBank(RawBank* bank, // Pointer to beginning of bank (i.e. bank header)
bool adopt_memory); // Flag to adopt memory
/// Remove bank identified by its pointer
/** Remove raw data bank from bankset and update bank map.
* The bank removal can fail if the specified bank was not found.
*
* @param bank [IN] Pointer to raw bank structure to be removed.
*
* @return Boolean value indicating success (=true) or failure(=false)
*/
bool removeBank(RawBank* bank);
/// Rawbank creator
/** Create raw bank and fill values
* @param srcID [IN] Source identifier
* @param typ [IN] Bank type (from RawBank::BankType enum)
* @param vsn [IN] Bank version
* @param len [IN] Length of data segment in bytes
* @param data [IN] Data buffer (if NULL, no data are copied)
*
* @return Initialized Pointer to RawBank structure
*/
static RawBank* createBank( int srcID,
RawBank::BankType typ,
int vsn,
size_t len,
const void* data=0);
/// Access the full length 32 bit aligned length of a bank in bytes
/** Access full bank length
* @param len [IN] Raw unaligned bank length
*
* @return padded bank size in bytes
*/
static size_t paddedBankLength(size_t len);
private:
/// Map banks on first request
/** @param bankType [IN] type of banks to be returned (from RawBank::BankType enum)
*
* @return vector of mapped banks corresponding to bankType
*/
const std::vector<RawBank*> & mapBanks(RawBank::BankType bankType);
std::map<RawBank::BankType,std::vector<RawBank*> > m_eventMap; //! transient Map with RawBanks (values) for each bank type
std::vector<Bank> m_banks; // Vector with persistent bank structure
bool m_mapped; //! transient
}; // class RawEvent
} // namespace LHCb
#endif /// DAQEVENT_RAWEVENT_H
package DAQEvent
version v9r17
use GaudiKernel v*
branches cmt doc Event src xml
private
use GaudiObjDesc v* -no_auto_imports
end_private
# Produce Header-Files from XML description
# ====================================================================
apply_pattern god_headers files=../xml/*.xml
apply_pattern install_more_includes more=Event
# ==================== Produce LCG dictionary ===============================
macro DAQEventGen_dependencies DAQEventObj2Doth
apply_pattern reflex_dictionary \
dictionary=DAQEvent \
headerfiles=$(DAQEVENTROOT)/xml/lcgdict/lcg_headers.h \
selectionfile=$(DAQEVENTROOT)/xml/lcgdict/lcg_selection.xml \
options=--comments
# ==================== linker library =======================================
macro DAQEventLib_dependencies DAQEventObj2Doth
library DAQEventLib *.cpp
apply_pattern linker_library library=DAQEventLib
v9r17
This diff is collapsed.
// $Id: RawBank.cpp,v 1.9 2010-01-15 13:20:13 marcin Exp $
// local
#include "Event/RawBank.h"
//-----------------------------------------------------------------------------
// Implementation file for class : RawBank
//
// 2008-02-13 : Marco Cattaneo
//-----------------------------------------------------------------------------
//=============================================================================
std::string LHCb::RawBank::typeName(LHCb::RawBank::BankType e){
switch ( e ) {
//
// Important note:
// Keep the order exactly as in the RawEvent header file!
//
case LHCb::RawBank::L0Calo : return "L0Calo";
case LHCb::RawBank::L0DU : return "L0DU";
case LHCb::RawBank::PrsE : return "PrsE";
case LHCb::RawBank::EcalE : return "EcalE";
case LHCb::RawBank::HcalE : return "HcalE";
case LHCb::RawBank::PrsTrig : return "PrsTrig";
case LHCb::RawBank::EcalTrig : return "EcalTrig";
case LHCb::RawBank::HcalTrig : return "HcalTrig";
case LHCb::RawBank::Velo : return "Velo";
case LHCb::RawBank::Rich : return "Rich";
case LHCb::RawBank::TT : return "TT";
case LHCb::RawBank::IT : return "IT";
case LHCb::RawBank::OT : return "OT";
case LHCb::RawBank::Muon : return "Muon";
case LHCb::RawBank::L0PU : return "L0PU";
case LHCb::RawBank::DAQ : return "DAQ";
case LHCb::RawBank::ODIN : return "ODIN";
case LHCb::RawBank::HltDecReports : return "HltDecReports";
case LHCb::RawBank::VeloFull : return "VeloFull";
case LHCb::RawBank::TTFull : return "TTFull";
case LHCb::RawBank::ITFull : return "ITFull";
case LHCb::RawBank::EcalPacked : return "EcalPacked";
case LHCb::RawBank::HcalPacked : return "HcalPacked";
case LHCb::RawBank::PrsPacked : return "PrsPacked";
case LHCb::RawBank::L0Muon : return "L0Muon";
case LHCb::RawBank::ITError : return "ITError";
case LHCb::RawBank::TTError : return "TTError";
case LHCb::RawBank::ITPedestal : return "ITPedestal";
case LHCb::RawBank::TTPedestal : return "TTPedestal";
case LHCb::RawBank::VeloError : return "VeloError";
case LHCb::RawBank::VeloPedestal : return "VeloPedestal";
case LHCb::RawBank::VeloProcFull : return "VeloProcFull";
case LHCb::RawBank::OTRaw : return "OTRaw";
case LHCb::RawBank::OTError : return "OTError";
case LHCb::RawBank::EcalPackedError : return "EcalPackedError";
case LHCb::RawBank::HcalPackedError : return "HcalPackedError";
case LHCb::RawBank::PrsPackedError : return "PrsPackedError";
case LHCb::RawBank::L0CaloFull : return "L0CaloFull";
case LHCb::RawBank::L0CaloError : return "L0CaloError";
case LHCb::RawBank::L0MuonCtrlAll : return "L0MuonCtrlAll";
case LHCb::RawBank::L0MuonProcCand : return "L0MuonProcCand";
case LHCb::RawBank::L0MuonProcData : return "L0MuonProcData";
case LHCb::RawBank::L0MuonRaw : return "L0MuonRaw";
case LHCb::RawBank::L0MuonError : return "L0MuonError";
case LHCb::RawBank::GaudiSerialize : return "GaudiSerialize";
case LHCb::RawBank::GaudiHeader : return "GaudiHeader";
case LHCb::RawBank::TTProcFull : return "TTProcFull";
case LHCb::RawBank::ITProcFull : return "ITProcFull";
case LHCb::RawBank::TAEHeader : return "TAEHeader";
case LHCb::RawBank::MuonFull : return "MuonFull";
case LHCb::RawBank::MuonError : return "MuonError";
case LHCb::RawBank::TestDet : return "TestDet";
case LHCb::RawBank::L0DUError : return "L0DUError";
case LHCb::RawBank::HltRoutingBits : return "HltRoutingBits";
case LHCb::RawBank::HltSelReports : return "HltSelReports";
case LHCb::RawBank::HltVertexReports: return "HltVertexReports";
case LHCb::RawBank::HltLumiSummary : return "HltLumiSummary";
case LHCb::RawBank::L0PUFull : return "L0PUFull";
case LHCb::RawBank::L0PUError : return "L0PUError";
case LHCb::RawBank::DstBank : return "DstBank";
case LHCb::RawBank::DstData : return "DstData";
case LHCb::RawBank::DstAddress : return "DstAddress";
case LHCb::RawBank::FileID : return "FileID";
case LHCb::RawBank::VP : return "VP";
case LHCb::RawBank::FTCluster : return "FTCluster";
case LHCb::RawBank::VL : return "VL";
case LHCb::RawBank::UT : return "UT";
case LHCb::RawBank::UTFull : return "UTFull";
case LHCb::RawBank::UTError : return "UTError";
case LHCb::RawBank::UTPedestal : return "UTPedestal";
case LHCb::RawBank::HC : return "HC";
case LHCb::RawBank::HltTrackReports : return "HltTrackReports";
default : return "Undefined_name";
};
}
//=============================================================================
// $Id: RawEvent.cpp,v 1.15 2010-01-07 10:25:17 frankb Exp $
#include "Event/RawEvent.h"
#include <cstring> // for memcpy with gcc 4.3
namespace {
inline LHCb::RawBank* allocateBank(size_t len) {
size_t mem_len = LHCb::RawEvent::paddedBankLength(len);
size_t new_len = mem_len/sizeof(unsigned int);
unsigned int* mem = new unsigned int[new_len];
if ( mem_len != len ) {
mem[new_len-1] = 0;
}
return (LHCb::RawBank*)mem;
}
}
// Default Constructor
LHCb::RawEvent::RawEvent()
: m_mapped(false)
{
}
// Default Destructor
LHCb::RawEvent::~RawEvent() {
for(std::vector<Bank>::iterator i=m_banks.begin(); i != m_banks.end(); ++i) {
Bank& b = *i;
if ( b.ownsMemory() && b.buffer() ) {
delete [] b.buffer();
}
}
m_banks.clear();
}
size_t LHCb::RawEvent::paddedBankLength(size_t len) {
size_t mem_len = len+sizeof(LHCb::RawBank)-sizeof(unsigned int);
if ( mem_len%sizeof(unsigned int) ) { // Need padding
mem_len = (mem_len/sizeof(unsigned int) + 1)*sizeof(unsigned int);
}
return mem_len;
}
const std::vector<LHCb::RawBank*>& LHCb::RawEvent::mapBanks(RawBank::BankType bankType) {
for(std::vector<Bank>::iterator i=m_banks.begin(); i != m_banks.end(); ++i) {
LHCb::RawBank* bank = (LHCb::RawBank*)(*i).buffer();
m_eventMap[bank->type()].push_back(bank);
}
m_mapped = true;
return m_eventMap[bankType];
}
// For offline use only: copy data into a set of banks, adding bank header internally.
void LHCb::RawEvent::addBank( int srcID,
LHCb::RawBank::BankType typ,
int vsn,
const std::vector<unsigned int>& data) {
adoptBank( createBank(srcID, typ, vsn, data.size()*sizeof(unsigned int), &(*data.begin())), true );
}
LHCb::RawBank* LHCb::RawEvent::createBank( int srcID,
LHCb::RawBank::BankType typ,
int vsn,
size_t len,
const void* data ) {
LHCb::RawBank* bank = allocateBank(len);
bank->setMagic();
bank->setType(typ);
bank->setVersion(vsn);
bank->setSourceID(srcID);
bank->setSize(len);
if ( data ) {
::memcpy(bank->data(), data, len);
}
return bank;
}
/// For offline use only: copy data into a bank, adding bank header internally.
void LHCb::RawEvent::addBank(RawBank* data) {
size_t len = data->totalSize();
LHCb::RawBank* bank = (LHCb::RawBank*)new unsigned int[len/sizeof(unsigned int)];
::memcpy(bank, data, len);
adoptBank(bank, true);
}
/// Take ownership of a bank, including the header
void LHCb::RawEvent::adoptBank(LHCb::RawBank* bank, bool adopt_memory) {
size_t len = bank->totalSize();
if ( !m_mapped ) mapBanks(bank->type());
m_eventMap[bank->type()].push_back(bank);
m_banks.push_back(Bank(len/sizeof(unsigned int), adopt_memory, (unsigned int*)bank));
}
/// Remove bank identified by its pointer
bool LHCb::RawEvent::removeBank(RawBank* bank) {
typedef std::map<RawBank::BankType,std::vector<RawBank*> > BankMap;
RawBank::BankType type = bank->type();
BankMap::iterator i=m_eventMap.find(type);
if ( i != m_eventMap.end() ) {
std::vector<RawBank*>& banks = (*i).second;
for(std::vector<RawBank*>::iterator j=banks.begin(); j!=banks.end(); ++j) {
if ( (*j) == bank ) {
// Banks to be removed found!
// First remove bank from persistent array.
for(std::vector<Bank>::iterator k=m_banks.begin(); k!=m_banks.end(); ++k) {
Bank& b = *k;
if ( !(bank == (RawBank*)b.buffer()) ) continue;
// The bank is owned by RawEvent: delete the allocated buffer
// to prevent memory leak when reading data from a ROOT file...
if ( b.ownsMemory() && b.buffer() ) delete [] b.buffer();
m_banks.erase(k);
break;
}
// Now erase bank from vector with all banks of one type.
banks.erase(j);
// Finally remove bank type from event map if no further bank is present.
if ( banks.size() == 0 ) {
m_eventMap.erase(i);
}
return true;
}
}
}
return false;
}
<?xml version="1.0" encoding="ISO-8859-1"?>
<!--- $Id: -->
<!--- Author : Marco Clemencic -->
<!--- Created : 2006-09-22 -->
<!DOCTYPE gdd SYSTEM "gdd.dtd" >
<gdd>
<package name='DAQEvent'>
<!-- ****************************************************************
* ODIN *
****************************************************************-->
<class
author="Marco Clemencic"
name="ODIN"
desc="Class for the decoding of the ODIN RawBank."
location="DAQ/ODIN"
id="1005"
allocator="NO"
>
<enum
name = 'Data'
desc = 'Fields in the ODIN bank'
value = 'RunNumber = 0,
EventType,
OrbitNumber,
L0EventIDHi,
L0EventIDLo,
GPSTimeHi,
GPSTimeLo,
Word7,
Word8,
TriggerConfigurationKey'
access = 'PUBLIC' />
<enum
name = 'EventTypeBitsEnum'
desc = ''
value = 'EventTypeBits = 0,
CalibrationStepBits = 16'
access = 'PUBLIC' />
<enum
name = 'EventTypeMasks'
desc = ''
value = 'EventTypeMask = 0x0000FFFF,
CalibrationStepMask = 0xFFFF0000,
FlaggingModeMask = 0x00008000'
access = 'PUBLIC' />
<!--
<enum
name = 'Word7Bits'
desc = ''
value = 'DetectorStatusBits = 0,
ErrorBits = 24,
SynchErrorBits = 24,
ErrorForcedBits = 25'
access = 'PUBLIC' />
-->
<enum
name = 'Word7Bits'
desc = ''
value = 'DetectorStatusBits = 0,
ErrorBits = 24'
access = 'PUBLIC' />
<enum
name = 'ErrorCodeMasks'
desc = ''
value = 'SynchError = 0x1,
SynchErrorForced = 0x2'
access = 'PUBLIC' />
<enum
name = 'Word7Masks'
desc = ''
value = 'DetectorStatusMask = 0x00FFFFFF,
ErrorMask = 0xFF000000'
access = 'PUBLIC' />
<enum
name = 'Word8Bits'
desc = ''
value = 'BunchIDBits = 0,
TAEWindowBits = 12,
TriggerTypeBits = 16,
CalibrationTypeBits = 19,
ForceBits = 21,
BXTypeBits = 22,
BunchCurrentBits = 24'
access = 'PUBLIC' />
<enum
name = 'Word8Masks'
desc = ''
value = 'BunchIDMask = 0x00000FFF,
TAEWindowMask = 0x00007000,
TriggerTypeMask = 0x00070000,
CalibrationTypeMask = 0x00180000,
ForceMask = 0x00200000,
BXTypeMask = 0x00C00000,
BunchCurrentMask = 0xFF000000'
access = 'PUBLIC' />
<enum
name = 'Word8Bits_v4'
desc = 'Provided for backward compatibility'
value = 'ReadoutTypeBits = 19'
access = 'PUBLIC' />
<enum
name = 'Word8Masks_v4'
desc = 'Provided for backward compatibility'
value = 'ReadoutTypeMask = 0x00180000'
access = 'PUBLIC' />
<enum
name = 'ReadoutTypes'
desc = ''
value = 'ZeroSuppressed = 0,
NonZeroSuppressed = 1'
access = 'PUBLIC' />
<enum
name = 'CalibrationTypes'
desc = ''
value = 'A = 0,
B = 1,
C = 2,
D = 3'
access = 'PUBLIC' />
<enum
name = 'BXTypes'
desc = ''
value = 'NoBeam = 0,
Beam1 = 1,
Beam2 = 2,
BeamCrossing = 3'
access = 'PUBLIC' />
<enum
name = 'TriggerType'
desc = 'Type of trigger broadcasted by ODIN'
value = "PhysicsTrigger,
BeamGasTrigger,
LumiTrigger,
TechnicalTrigger,
AuxiliaryTrigger,
NonZSupTrigger,
TimingTrigger,
CalibrationTrigger"
access = 'PUBLIC' />
&DataObject;
<import name="GaudiKernel/Time"/>
<import name="Event/RawBank"/>
<base name="DataObject"/>
<attribute
name="runNumber"
desc="Run number"
type="unsigned int"
init="0" />
<attribute
name="eventType"
desc="Event type"
type="unsigned int"
init="0" />
<attribute
name="orbitNumber"
desc="Orbit ID"
type="unsigned int"
init="0" />
<attribute
name="eventNumber"
desc="L0 Event ID"
type="ulonglong"
init="0" />
<attribute
name="gpsTime"
desc="GPS Time (microseconds)"
type="ulonglong"
init="0" />
<attribute
name="detectorStatus"
desc="Detector Status"
type="ulonglong"
init="0" />
<attribute
name="errorBits"
desc="Error Bits"
type="unsigned int"
init="0" />
<attribute
name="bunchId"
desc="Bunch ID"
type="unsigned int"
init="0" />
<attribute
name="triggerType"
desc="Trigger Type @see enum LHCb::ODIN::TriggerType"
type="TriggerType"
init="PhysicsTrigger" />
<attribute
name="readoutType"
desc="Readout Type (@see enum LHCb::ODIN::ReadoutTypes). Meaningful only if bank version &lt; 5."
type="ReadoutTypes"
init="ZeroSuppressed" />
<attribute
name="forceBit"
desc="Force Bit"
type="bool"
init="false" />
<attribute
name="bunchCrossingType"
desc="Bunch Crossing Type (BXType, @see enum LHCb::ODIN::BXTypes)"
type="BXTypes"
init="NoBeam" />
<attribute
name="bunchCurrent"
desc="Bunch Current"
type="unsigned int"
init="0" />
<attribute
name="version"
desc="Version of the ODIN bank"
type="unsigned int"
init="0" />
<attribute
name="calibrationStep"
desc="Calibration Step Number"
type="unsigned int"
init="0" />
<attribute
name="triggerConfigurationKey"
desc="Requested Trigger Configuration Key. The key actually used is in LHCb::HltDecReports::configuredTCK"
type="unsigned int"
init="0" />
<attribute
name="timeAlignmentEventWindow"
desc="TAE (Time Alignment Event) window size"
type="unsigned int"
init="0" />
<attribute
name="calibrationType"
desc="Calibration Type (@see enum LHCb::ODIN::CalibrationTypes). Meaningful only if bank version &gt;= 5."
type="CalibrationTypes"
init="A" />
<constructor
desc = "Copy constructor. Creates a new ODIN object with the same information"
initList = "DataObject(), m_runNumber(odin.runNumber()), m_eventType(odin.eventType()), m_orbitNumber(odin.orbitNumber()), m_eventNumber(odin.eventNumber()), m_gpsTime(odin.gpsTime()), m_detectorStatus(odin.detectorStatus()), m_errorBits(odin.errorBits()), m_bunchId(odin.bunchId()), m_triggerType(odin.triggerType()), m_readoutType(odin.readoutType()), m_forceBit(odin.forceBit()), m_bunchCrossingType(odin.bunchCrossingType()), m_bunchCurrent(odin.bunchCurrent()), m_version(odin.version()), m_calibrationStep(odin.calibrationStep()), m_triggerConfigurationKey(odin.triggerConfigurationKey()), m_timeAlignmentEventWindow(odin.timeAlignmentEventWindow()), m_calibrationType(odin.calibrationType())">
<arg const="TRUE" name="odin" type="LHCb::ODIN"/>
<code/>
</constructor>
<method name="eventTime" desc="Return the event time (converted from the GPS time)" type="Gaudi::Time" const="TRUE">
<code>
if ( gpsTime() == 0xD0DD0D0000000000ULL )
return 0;
else
return gpsTime() * 1000;
</code>
</method>
<method name="setEventTime"
desc="Set the event time (converted to GPS time)" type="void"
argList="const Gaudi::Time time" const="FALSE">
<code>
setGpsTime(time.ns()/1000);
</code>
</method>
<method type="bool" name="isFlagging" const="TRUE"
desc="">
<code>
return eventType() &amp; FlaggingModeMask;
</code>
</method>
</class>
</package>
</gdd>
<?xml version="1.0" encoding="ISO-8859-1"?>
<!--- Author : Marco Clemencic -->
<!--- Created : 2006-09-22 -->
<!DOCTYPE gdd SYSTEM "gdd.dtd" >
<gdd>
<package name='DAQEvent'>
<!-- ****************************************************************
* ODIN *
****************************************************************-->
<class
author="Olivier Deschamps"
name="RawBankReadoutStatus"
desc="Class for the status of RawBank decoding"
>
<location name = "Default" place = "Transient/DAQ/Status" />
<enum
name = 'Status'
desc = 'Status value'
value = '
OK = 0,
Corrupted = 1,
Incomplete = 2,
Missing = 4,
Empty = 8 ,
NonUnique = 16,
Tell1Sync = 32,
Tell1Link = 64,
Tell1Error = 128,
ErrorBank = 256,
MissingStatus = 512,
BadMagicPattern = 1024,
DuplicateEntry = 2048,
Unknown = 4096 '
access = 'PUBLIC' />
<!-- 'Unknown' MUST BE THE LAST ITEM -->
<base name = "KeyedObject&lt;LHCb::RawBank::BankType&gt;" />
&KeyedObject;
<import name="sstream" std="TRUE"/>
<import name="map" std="TRUE"/>
<import name="Event/RawBank"/>
<typedef
def = "Base"
type = "KeyedObject&lt;LHCb::RawBank::BankType&gt;"
desc = "RawBankReadoutStatus key (BankType)"
access = "PROTECTED"
/>
<constructor
desc = "non-default constructor"
argList = "LHCb::RawBank::BankType type"
initList = "Base ( type ), m_status()"
> <code/> </constructor>
<constructor
desc = "Copy Constructor"
argList = "LHCb::RawBankReadoutStatus rh"
initList = "Base(rh.key() ), m_status(rh.m_status)"
> <code/> </constructor>
<attribute name="status" desc=" mapping of source status" type="std::map&lt; int, long &gt;" getMeth='FALSE' setMeth='FALSE' />
<method
name = "status"
desc = "get Readout status for a given source"
argList= "int source"
type = "long">
<code>
if( 0 == m_status.size() )return Unknown;
std::map&lt;int, long&gt;::iterator it = m_status.find(source);
if( it == m_status.end() )return Unknown;
return m_status[source];
</code>
</method>
<method
name = "addStatus"
desc = "set Readout status for a given source"
argList= "int source, long stat"
type = "void">
<code>
long newStat = stat;
std::map&lt;int, long&gt;::iterator it = m_status.find(source);
if( it != m_status.end() )newStat |= status(source);
m_status[source] = newStat;
</code>
</method>
<method
name = "status"
desc = "get Readout status for the whole bank"
type = "long">
<code>
if( 0 == m_status.size() )return Unknown;
long stat = 0;
for(std::map&lt;int,long&gt;::iterator it = m_status.begin() ; it != m_status.end() ; ++it){
stat |= (*it).second;
}
return stat;
</code>
</method>
<method
name = "statusMap"
desc = "return the status map attribute"
type = "std::map&lt; int, long &gt;">
<code>
return m_status;
</code>
</method>
</class>
</package>
</gdd>
// begin include files
#include <vector>
#include "GaudiKernel/SmartRefVector.h"
#include "GaudiKernel/SmartRef.h"
#include "Event/ODIN.h"
#include "Event/RawEvent.h"
// end include files
namespace {
struct _Instantiations {
// begin instantiations
SmartRef<LHCb::ODIN> m_SmartRef_LHCb__ODIN;
SmartRefVector<LHCb::ODIN> m_SmartRefVector_LHCb__ODIN;
std::vector<SmartRef<LHCb::ODIN> > m_std_vector_SmartRef_LHCb__ODIN;
// end instantiations
};
}
<lcgdict>
<class name="LHCb::RawEvent" id="000003EA-0000-0000-0000-000000000000">
<field name="m_eventMap" transient="true"/>
<field name="m_mapped" transient="true"/>
</class>
<class name="LHCb::RawBank"/>
<class name="LHCb::RawEvent::Bank">
<field name="m_owns" transient="true"/>
</class>
<class name="std::vector<LHCb::RawEvent::Bank>"/>
<class name="std::vector<LHCb::RawBank*>"/>
<class name="std::map<LHCb::RawBank::BankType, std::vector<LHCb::RawBank*> >"/>
<!-- From generated file -->
<class name="LHCb::ODIN" id="000003ed-0000-0000-0000-000000000000"/>
<class name="SmartRef<LHCb::ODIN>"> <field name="m_target" transient="true"/> </class>
<class name="SmartRefVector<LHCb::ODIN>"> <field name="m_contd" transient="true"/> <field name="m_data" transient="true"/> </class>
<class name="std::vector<SmartRef<LHCb::ODIN> >"/>
</lcgdict>
################################################################################
# Package: DigiEvent
################################################################################
gaudi_subdir(DigiEvent v4r3)
gaudi_depends_on_subdirs(GaudiObjDesc
Kernel/LHCbKernel
Kernel/LHCbMath)
find_package(Boost)
include(GaudiObjDesc)
god_build_headers(xml/*.xml)
god_build_dictionary(xml/*.xml
EXTEND dict/lcgDict.h
INCLUDE_DIRS Boost
LINK_LIBRARIES Boost LHCbKernel LHCbMathLib)
package DigiEvent
version v4r3
branches Event xml cmt doc
use LHCbKernel v* Kernel
use LHCbMath v* Kernel
use Boost v* LCG_Interfaces
private
use GaudiObjDesc v* -no_auto_imports
end_private
# Produce Header-Files from XML description
#=====================================================================
apply_pattern god_headers files=../xml/*.xml
apply_pattern install_more_includes more=Event
# Make custom dictionary. Must be before GOD generation
#=====================================================================
document customdict DigiEventCustomDict ../dict/lcgDict.h
macro_append DigiEventObj2Dict_dependencies DigiEventCustomDict
# Generate dictionaries with lcgdict via GOD
#=====================================================================
apply_pattern god_dictionary files=../xml/*.xml
# Disable some compiler warnings in the automatically generated dict code
macro_append DigiEventDict_cppflags "" \
target-icc " -wd191 -wd1572"
v4r3
#ifndef DIGIEVENT_LCGDICT_H
#define DIGIEVENT_LCGDICT_H 1
// Additional classes to be added to automatically generated lcgdict
// begin include files
#include "Kernel/FastClusterContainer.h"
#include "Event/VeloLiteCluster.h"
#include "Event/STLiteCluster.h"
// end include files
namespace {
struct _Instantiations {
// begin instantiations
FastClusterContainer<LHCb::VeloLiteCluster, int> _i1;
FastClusterContainer<LHCb::STLiteCluster, int> _i2;
// end instantiations
};
}
#endif // DIGIEVENT_LCGDICT_H
!-----------------------------------------------------------------------------
! Package : Event/DigiEvent
! Responsible : Marco Cattaneo
! Purpose : Event model classes related to Digitization
!-----------------------------------------------------------------------------
!========================= DigiEvent v4r3 2014-12-11 =========================
! 2014-12-04 - Heinrich Schindler
- Add location for L0 HCDigits.
! 2014-11-27 - Victor Coco
- Added HCDigit to store the Herschel PMT adcs
!========================= DigiEvent v4r2 2014-05-12 =========================
! 2014-04-01 - Heinrich Schindler
- Remove VPLiteCluster.
! 2014-03-30 - Heinrich Schindler
- Remove VPLiteCluster from VPCluster, add inter-pixel fraction to VPCluster
! 2014-03-24 - Heinrich Schindler
- Remove ToT value and timestamp from VPDigit, change location name
!========================= DigiEvent v4r1 2014-03-17 =========================
! 2014-03-13 - Heinrich Schindler
- Remove ToT value from and added global x, y, z coordinates to VPCluster
- Remove unused constructor from VPCluster
- Change VPCluster location from "VPClusterLocation" to "Default"
!========================= DigiEvent v4r0 2014-02-17 =========================
! 2014-01-13 - Marco Cattaneo
- Remove VL classes
!========================= DigiEvent v3r1 2012-11-26 =========================
! 2012-11-15 - Marco Clemencic
- Added CMake configuration file.
! 2012-10-02 - Jianchun Wang
- Modify SiLiteCluster.xml so that channelID length is 25 when requested,
otherwise it is 24, compatible with existing data.
! 2012-10-01 - Jianchun Wang
- Fix multiple returns in inline functions.
!========================= DigiEvent v3r0 2012-09-28 =========================
! 2012-09-21 - Jianchun Wang
- Add UT as one of ST & Si detector, add its digits & clusters
- Number of bits to address Si cluster is increased from 24 to 25.
!!!!! ABOVE CHANGE TO BE REVIEWED, MAKES ANY EXISTING PERSISTENT !!!!!!
!!!!! LiteClusters UNREADABLE! !!!!!!
! 2012-09-13 Paul Szczypka
- Rename EVERYTHING from VeloPix to VP or corresponding string.
- Moved some *VeloPix* files to *VP*
! 2012-08-31 Pawel Jalocha
- Change VeloPix to VP in containers
!========================= DigiEvent v2r21 2012-06-25 =========================
! 2012-06-13 Heinrich Schindler
- Add VLCluster.xml and VLLiteCluster.xml
!========================= DigiEvent v2r20 2011-11-07 =========================
! 2011-10-10 M Needham
- Remove unused variable in STCluster class overlap method
!========================= DigiEvent v2r19 2011-07-25 =========================
! 2011-06-28 - Eduardo Rodrigues
- Added copy constructor and clone method to VeloCluster class
!========================= DigiEvent v2r18 2011-06-14 =========================
! 2011-05-31 - Magnus Lieng
- Added BcmDigit.xml, CLID 3001
!========================= DigiEvent v2r17 2011-01-31 =========================
! 2011-01-10 Marco Cattaneo
- Fix ICC warnings and remarks
!========================== DigiEvent v2r16 2010-03-17 =======================
| 2010-02-25 Marcin Kucharczyk
- Update container location for VeloPixCluster
!========================== DigiEvent v2r15 2010-01-20 =======================
! 2010-01-06 - Victor Coco
- VeloPixLiteCluster :hard code masks since putting them as member increase
the class sizeof (48 instead of 8 as ulonglong). Enum would solve the
problem but have win32 inconvienient (see previously)--> hardcoded
! 2009-12-15 - Victor Coco
- VeloPixLiteCluster : modify masks (from enum to single member) in
VeloPixLiteCluster since 64bits enum are not supported by win32_vc7
!========================== DigiEvent v2r14 2009-12-11 =======================
! 2009-12-04 - Victor Coco
- fix some windows warning in VeloPixLiteCluster
! 2009-12-02 - Jeroen van Tilburg
- Fix small bug in STCluster::contain method.
! 2009-12-02 - Victor Coco
- add method to VeloPixLiteCluster to get the cluster time over threshold
! 2009-11-30 - Victor Coco
- set the VeloPixLiteCluster bitfield by hand since the bitfield64 in order the
Mask that are compatible with ulonglong --> the value of the enum attributes
should be: 0x1234LL instead of 0x1234L otherwise underlying enum type is long
(which is 32 bits on 32bits machine...)
! 2009-11-28 - Victor Coco
- add some paranthesis in VeloPixLiteCluster because of warning with gcc43
! 2009-11-27 - Marcin Kucharczyk
- Add VeloPixDigit.xml, VeloPixCluster.xml and VeloPixLiteCluster.xml objects
used by pixel Velo algorithms
!========================== DigiEvent v2r13 2009-11-13 =======================
! 2009-10-25 - Vanya Belyaev
- CaloDigit:
add typedefs:
std::vector<const LHCb::CaloDigit*> ==> LHCb::CaloDigit::Vector
std::set<const LHCb::CaloDigit*> ==> LHCb::CaloDigit::Set
- cmt/requirements
version increment to v2r13
!========================== DigiEvent v2r12 2009-07-28 =======================
! 2009-07-28 - Marco Cattaneo
- In requirements, remove hack for Gaudi v21r1 to link dictionary on windows
! 2009-07-24 - Olivier Deschamps
- CaloDigit.xml : add default location for HLT1 partial digit decoding
!========================== DigiEvent v2r11p1 2009-05-28 =====================
! 2009-05-28 - Marco Cattaneo
- In requirements, add hack for Gaudi v21r1 to link dictionary on Windows
!========================== DigiEvent v2r11 2009-03-09 =======================
! 2009-03-01 M Needham
- Remove unused constructor and set functions from STCluster
- Add setDepositedCharge method to STDigit
- Add clone and copy constructor to VeloDigit
!========================== DigiEvent v2r10 2008-11-17 =======================
! 2008-03-11 M Needham
- Clean up fillStream methods in ST classes
! 2008-10-11 M Needham
- Add STChannelID ent to STDigit
- Add XXXname() functions to STChannelID.ent
- Add functionality to STCluster class [overlap, contains, ...]
- Add spill to STCluster class
- Make streamers for ST classes more friendly
!========================== DigiEvent v2r9 2008-09-30 ========================
! 2008-09-20 M Needham
- Changes to STCluster class: add clone/copy constructor+ contains method
- 2008-09-09: Add method to return max adc value of a cluster
!========================== DigiEvent v2r8 2008-09-03 ========================
! 2008-09-03 - Marco Cattaneo
- Add custom dictionary, and populate it with FastClusterContainers
! 2008-09-01 M Needham
- Add shortcuts to station, layer etc to STCluster classes
! 2008-08-23 M Needham
- Add accessor to liteCluster from Cluster class
!========================== DigiEvent v2r7 2008-07-16 ========================
! 2008-07-14 M Needham
- Add Tell1 strip number to STCluster class
!========================== DigiEvent v2r6 2008-05-05 ========================
! 2008-05-05 M Needham
- Add source id to STCluster class
!========================== DigiEvent v2r5 2008-04-03 ========================
! 2008-04-02 - Marco Cattaneo
- Adapt to new LHCb::Math namespace
!========================== DigiEvent v2r4 2008-03-03 ========================
! 2008-02-27 - Chris Jones
- Add missing STL includes in various GOD classes
!========================== DigiEvent v2r3 2007-12-05 ========================
! 2007-12-05 - Marco Cattaneo
- Remove Kernel directory:
ISTSignalToNoiseTool.h moved to STKernel package
IVeloCluster2VeloDigitTool.h is obsolete and removed
!========================== DigiEvent v2r2 2007-06-07 ========================
! 2007-06-07 - Marco Cattaneo
- Adapt requirements to new GaudiObjDesc v10r0 patterns
!========================== DigiEvent v2r1 2007-03-01 ========================
! 2007-02-22 - Olivier Deschamps
- xml/CaloADC.xml : default location for Ecal/Hcal PIN CaloAdcs
! 2007-02-14 - Marco Cattaneo
- Remove LHCbDefinitions include, add LHCbMath dependency
!========================== DigiEvent v2r0p1 2007-02-02 ======================
! 2007-02-02 - Marco Cattaneo
- Remove unneccessary rootmap for dictionary
!========================== DigiEvent v2r0 2006-12-14 =======================
! 2006-12-06 - Florence RANJARD
- replace include_dirs with apply_pattern install_more_includes
!========================= DigiEvent v1r3 2006-11-23 =========================
! 2206-11-21 - Tomasz Szumlak
- New location for emulated VeloClusters has been added
Emulated='Emu/Velo/Clusters'
!========================= DigiEvent v1r2 2006-05-10 =========================
! 2006-05-10 - Marco Cattaneo
- Add Boost dependency, needed for Boost allocators in event model
!========================= DigiEvent v1r1 2006-03-22 =========================
! 2006-03-20 - M.Needham
- Bug fix in STCluster.xml
! 2006-03-19 - Tomasz Szumlak
- Bug fix in VeloCluster.xml
! 2006-03-15 M Needham
- Functionality for fast container find added SiLiteClusters (typedefs)
! 2006-03-14 - Kurt Rinnert
- fixed bug in VeloLiteCluster.xml, the insterstrip position was encoded
using only two bits, instead of three
! 2006-03-13 - Jeroen van Tilburg
- SiLiteCluster.ent: Added STLiteClusters typedef for FastContainer.
!========================= DigiEvent v1r0 2006-03-06 =========================
! 2006-03-06 - Marco Cattaneo
- Add Kernel/IVeloCluster2VeloDigitTool.h interface
! 2006-02-23 - Olivier Deschamps
- add CaloDigitLocation::Default in CaloDigit.xml
! 2006-02-21 - Tomasz Szumlak
- noise data member has been removed from VeloDigit.xml as well as setters,
getters and signalToNoise() methods
! 2006-02-21 - Marco Cattaneo
- Change name of default location for Velo classes to ::Default
! 2006-02-17 - Chris Parkes
- new VeloCluster, VeloLiteCluster added
! 2006-02-17 - Marco Cattaneo
- Fix various default locations to all follow the same convention
! 2006-02-16 M Needham
- More bug fixes in the light cluster class
- also allow the velo to have 3 bits precision
- Bug fix in STCluster.xml (< instead of >)
! 2006-02-15 - Marco Cattaneo
- First version, from migration of classes from VeloEvent, STEvent, OTEvent,
RichEvent, CaloEvent, MuonEvent
<?xml version="1.0" encoding="ISO-8859-1"?>
<!--- $Id: -->
<!--- Author : M. Lieng -->
<!--- Created : 2010-06-22 -->
<!DOCTYPE gdd SYSTEM "gdd.dtd" [
<!ENTITY CLID_BcmDigit "3001">
<!ENTITY className "BcmDigit">
<!ENTITY location "Raw/Bcm/Digits">
]>
<gdd>
<package name = "DigiEvent">
<class name = "&className;"
location = "&location;"
id = "&CLID_BcmDigit;"
author = "M Lieng"
desc = "BCM digit class">
<base name="KeyedObject&lt;int&gt;"/>
&KeyedContainer;
<attribute type = "unsigned int"
name = "station"
desc = "Station number" />
<attribute type = "unsigned int"
name = "sensor"
desc = "Sensor number" />
<attribute type = "double"
name = "signal"
desc = "Signal value" />
</class>
</package>
</gdd>
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE gdd SYSTEM "gdd.dtd"[
<!ENTITY CLID_CaloAdc "2007" >
]>
<gdd>
<package name="DigiEvent">
<!-- **************************************************************************
* $Id: CaloAdc.xml,v 1.4 2007-02-22 23:49:53 odescham Exp $
*****************************************************************************
* XML-description of CaloAdc class *
* author: Olivier Callot *
* date: 01.12.05 *
************************************************************************* -->
<class
name = "CaloAdc"
desc = "@brief The ADC content for given cell"
id = "&CLID_CaloAdc;"
author = "Olivier Callot"
>
<desc> *
*
* The class represents the digitisez value
* in a calorimeter cell
*
*</desc>
<import name = "Kernel/CaloCellIDKeyTraits" />
<template name="KeyedObjectDict" t1="LHCb::CaloCellID"/>
<base name = "KeyedObject&lt;LHCb::CaloCellID&gt;" />
&KeyedObject;
<location name = "Spd" place = "Raw/Spd/Adcs" />
<location name = "Prs" place = "Raw/Prs/Adcs" />
<location name = "Ecal" place = "Raw/Ecal/Adcs" />
<location name = "Hcal" place = "Raw/Hcal/Adcs" />
<location name = "EcalPin" place = "Raw/Ecal/PinAdcs" />
<location name = "HcalPin" place = "Raw/Hcal/PinAdcs" />
<location name = "FullEcal" place = "Raw/Ecal/FullAdcs" />
<location name = "FullHcal" place = "Raw/Hcal/FullAdcs" />
<constructor
desc = "Non-default constructor"
argList = "LHCb::CaloCellID id, int adc "
initList = "KeyedObject&lt;LHCb::CaloCellID&gt; ( id ) , m_adc ( adc ) "
> <code/> </constructor>
<constructor
desc = "Copy Constructor"
argList = "CaloAdc src"
initList = "KeyedObject&lt;LHCb::CaloCellID&gt;( src.cellID() ) , m_adc ( src.adc() ) "
> <code/> </constructor>
<attribute
name = "adc"
desc = "ADC value for the given cell"
type = "int"
/>
<method
desc = "Retrieve cell identifier/key @attention alias to Base::key() method!"
name = "cellID"
type = "const LHCb::CaloCellID&amp;"
const = "TRUE"
access = "PUBLIC">
<code> return key (); </code>
</method>
</class>
</package>
</gdd>
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment