ATLAS Offline Software
Loading...
Searching...
No Matches
TileTBDump.h
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
3*/
4
5//****************************************************************************
6// Filename : TileTBDump.h
7// Author : Alexander Solodkov
8// Created : May, 2004
9//
10// DESCRIPTION
11//
12// To dump contents of TestBeam ByteStream file
13// Old TileDump program converter to Athena Algorithm
14//
15// Properties (JobOption Parameters):
16// drawerList - vector of frag IDs present in data (hex numbers as strings)
17// drawerType - type for every frag from drawerList
18// 1=B+, 2=B-, 3=EB+, 4=EB-
19// these parameters are needed only for 2003 data
20// (when 0x102 and 0x202 were ext.barrel modules)
21// correct values for 2004 are set by default
22//
23// BUGS:
24//
25// History:
26//
27//
28//****************************************************************************
29
30/* @class TileTBDump
31 @brief Class to dump TileCal bytestream fragments in a formatted way.
32 */
33
34#ifndef TileTBDump_H
35#define TileTBDump_H
36
37// Gaudi includes
38#include "GaudiKernel/ToolHandle.h"
39#include "GaudiKernel/ServiceHandle.h"
40
41// Athena includes
43
44// Tile includes
48#include <vector>
49#include <map>
50
56
57
58
59class TileTBDump: public AthAlgorithm {
60 public:
61 //Constructor
62 TileTBDump(const std::string& name, ISvcLocator* pSvcLocator);
63
64 //Destructor
65 virtual ~TileTBDump();
66
67 //Gaudi Hooks
68 StatusCode initialize();
69 StatusCode execute();
70 StatusCode finalize();
71
72 private:
73
74 int m_statFrag5[200]{};
75
77
80
81 std::vector<std::string> m_drawerList; // list of frag IDs in correct order
82 std::vector<int> m_drawerType; // type of every drawer 1-4: B+, B-, EB+, EB-
83 std::map<unsigned int, unsigned int, std::less<unsigned int> > m_drawerMap; // map for frag IDs -> index
84 typedef std::map<unsigned int, unsigned int, std::less<unsigned int> >::iterator drawerMap_iterator;
85 typedef std::vector<std::vector<unsigned int> > FelixData_t;
86
87 ToolHandle<TileCondToolTiming> m_tileToolTiming;
88 ToolHandle<TileCondToolOfcCool> m_tileCondToolOfcCool;
89 ToolHandle<TileCondToolEmscale> m_tileToolEmscale;
90
99 unsigned int m_sizeOverhead;
101
113
114 std::vector<int> m_all_lvl1_trigger_types;
115
116 /* the ROD data sub-fragment */
117 typedef struct T_RodDataFrag {
118 unsigned int size;
119 unsigned int id;
120 unsigned int data[1];
122
123#ifndef MAX_CHAN_SAMP
124#define MAX_CHAN_SAMP 36
125#endif
126
127 typedef struct T_TileDigiChannel {
128 int chan;
129 unsigned int head;
130 unsigned int first;
131 unsigned int crc;
132 unsigned int id;
133 unsigned int gain;
134 unsigned int flag;
135 unsigned int bcid;
136 unsigned int err;
137 unsigned int par;
138 unsigned short sample[MAX_CHAN_SAMP];
140
141 typedef struct T_TileRecoQuality {
142 uint16_t dspbcid;
143 uint16_t global_crc;
144 uint16_t bcid;
145 uint16_t memory;
146 uint16_t Sstrobe;
147 uint16_t Dstrobe;
148 uint16_t headformat;
149 uint16_t headparity;
150 uint16_t sampleformat;
151 uint16_t sampleparity;
152 uint16_t fe_chip_mask;
155
156 typedef struct T_TileRecoChannel {
157 int chan;
158 unsigned int word;
159 unsigned short gain;
160 unsigned short amp;
161 unsigned short time;
162 unsigned short quality;
163 double d_amp;
164 double d_time;
165 double d_quality;
167
168 typedef struct T_TileRawComp { // Baxo
169 unsigned int words[4];
170 bool verif;
171 int chan;
172 unsigned short gain;
173 unsigned short samples[7];
175
176 typedef struct T_TileRecoCalib { // Baxo
177 int chan;
178 unsigned int word;
179 unsigned short gain;
180 unsigned short amp;
181 unsigned short time;
182 unsigned short bad;
183 unsigned short quality;
184 double d_amp;
185 double d_time;
186 double d_quality;
188
189
190/* void dump_TMDB(uint32_t subdet_id, const uint32_t* roddata, unsigned int rodsize
191 , uint32_t version, int verbosity, int robsource_id);*/
192
193 void dump_data(const uint32_t* data, unsigned int size, unsigned int version, int verbosity);
194
195 void dump_digi(unsigned int subdet_id, const uint32_t* data, unsigned int size, unsigned int version, int verbosity, unsigned int robsourceid, const EventContext& ctx);
196
197 void dump_it(unsigned int nw, unsigned int* data);
198
199 void find_frag(const uint32_t* rod, unsigned int size, unsigned int version, int verbosity, const T_RodDataFrag* frag[], int& nfrag);
200
201 int tile_unpack_raw_comp(const T_RodDataFrag* frag, T_TileRawComp* rawcomp, int nchannel_max
202 , unsigned int version, int verbosity, int* ngain, int* nchannel, int* nsample); // Baxo
203
204 int tile_unpack_digi(const T_RodDataFrag* frag, T_TileDigiChannel* channel, int nchannel_max
205 , unsigned int version, int verbosity, int* ngain, int* nchannel, int* nsample);
206
207 int tile_unpack_reco(const T_RodDataFrag* frag, T_TileRecoChannel* channel, int nchannel_max
208 , unsigned int version, int verbosity, int* ngain, int* nchannel);
209
210 int tile_unpack_reco_calib(const T_RodDataFrag* frag, T_TileRecoCalib* recocalib, int nchannel_max
211 , unsigned int version
212 , unsigned int unit
213 , int verbosity, int* ngain, int* nchannel); // Baxo
214
215 int tile_unpack_quality(const T_RodDataFrag* frag, T_TileRecoQuality & DQword);
216
217 void unpack_frag6(const uint32_t* data, unsigned int size, FelixData_t & digitsHighGain, FelixData_t & digitsLowGain, FelixData_t & digitsMetaData) const;
218
219 unsigned int tile_check_parity(const unsigned int* frame, int length);
220
221 unsigned int tile_check_startbit(const unsigned int* frame, int length, unsigned int startbit);
222
223 unsigned int tile_check_CRC(const unsigned int* frame, int framelen, int delta);
224
225 void tile_min_max(const unsigned short* frame, int frame_length, unsigned short* smin, unsigned short* smax);
226
227 std::vector<uint32_t> get_correct_data(const uint32_t* p, unsigned int size) const;
228
232};
233
234#endif
const PlainObject unit() const
This is a plugin that makes Eigen look like CLHEP & defines some convenience methods.
double length(const pvec &v)
char data[hepevt_bytes_allocation_ATLAS]
Definition HepEvt.cxx:11
#define MAX_CHAN_SAMP
Definition TileTBDump.h:124
AthAlgorithm(const std::string &name, ISvcLocator *pSvcLocator)
Constructor with parameters:
Interface class for managing ROB for both online and offline.
Calibration of TileCal channels and access to calibration factors.
extracts OFCs from database
Converts the TileRawChannel object into bytes as it is defined at the testbeam.
Converts the TileRawChannel object into bytes as it is defined at the commissioning 2007.
Converts the TileRawChannel object into bytes as it.
int m_statFrag5[200]
Definition TileTBDump.h:74
ToolHandle< TileCondToolTiming > m_tileToolTiming
Definition TileTBDump.h:87
unsigned int tile_check_startbit(const unsigned int *frame, int length, unsigned int startbit)
void dump_digi(unsigned int subdet_id, const uint32_t *data, unsigned int size, unsigned int version, int verbosity, unsigned int robsourceid, const EventContext &ctx)
int tile_unpack_digi(const T_RodDataFrag *frag, T_TileDigiChannel *channel, int nchannel_max, unsigned int version, int verbosity, int *ngain, int *nchannel, int *nsample)
int m_lumi_block
Definition TileTBDump.h:107
void find_frag(const uint32_t *rod, unsigned int size, unsigned int version, int verbosity, const T_RodDataFrag *frag[], int &nfrag)
bool m_dumpUnknown
Definition TileTBDump.h:95
int tile_unpack_raw_comp(const T_RodDataFrag *frag, T_TileRawComp *rawcomp, int nchannel_max, unsigned int version, int verbosity, int *ngain, int *nchannel, int *nsample)
ServiceHandle< IROBDataProviderSvc > m_RobSvc
Definition TileTBDump.h:76
void tile_min_max(const unsigned short *frame, int frame_length, unsigned short *smin, unsigned short *smax)
TileRawChannel2Bytes4 m_rc2bytes4
Definition TileTBDump.h:230
int m_bc_time_nanoseconds
Definition TileTBDump.h:103
int tile_unpack_quality(const T_RodDataFrag *frag, T_TileRecoQuality &DQword)
int m_runPeriod
Definition TileTBDump.h:79
struct TileTBDump::T_TileDigiChannel T_TileDigiChannel
TileTBDump(const std::string &name, ISvcLocator *pSvcLocator)
unsigned int tile_check_parity(const unsigned int *frame, int length)
ToolHandle< TileCondToolOfcCool > m_tileCondToolOfcCool
Definition TileTBDump.h:88
StatusCode execute()
void unpack_frag6(const uint32_t *data, unsigned int size, FelixData_t &digitsHighGain, FelixData_t &digitsLowGain, FelixData_t &digitsMetaData) const
struct TileTBDump::T_TileRecoQuality T_TileRecoQuality
std::vector< int > m_all_lvl1_trigger_types
Definition TileTBDump.h:114
ToolHandle< TileCondToolEmscale > m_tileToolEmscale
Definition TileTBDump.h:89
int m_global_id
Definition TileTBDump.h:104
const TileCablingService * m_cabling
Definition TileTBDump.h:78
std::vector< uint32_t > get_correct_data(const uint32_t *p, unsigned int size) const
std::vector< std::string > m_drawerList
Definition TileTBDump.h:81
void dump_it(unsigned int nw, unsigned int *data)
std::vector< std::vector< unsigned int > > FelixData_t
Definition TileTBDump.h:85
int m_nlvl1_trigger_info
Definition TileTBDump.h:111
bool m_dumpOnce
Definition TileTBDump.h:94
bool m_dumpData
Definition TileTBDump.h:92
bool m_dumpHeader
Definition TileTBDump.h:91
unsigned int tile_check_CRC(const unsigned int *frame, int framelen, int delta)
struct TileTBDump::T_TileRawComp T_TileRawComp
bool m_dumpStatus
Definition TileTBDump.h:93
bool m_frag5found
Definition TileTBDump.h:98
std::map< unsigned int, unsigned int, std::less< unsigned int > > m_drawerMap
Definition TileTBDump.h:83
bool m_showUnknown
Definition TileTBDump.h:96
int tile_unpack_reco(const T_RodDataFrag *frag, T_TileRecoChannel *channel, int nchannel_max, unsigned int version, int verbosity, int *ngain, int *nchannel)
int m_digi_mode
Definition TileTBDump.h:112
std::vector< int > m_drawerType
Definition TileTBDump.h:82
int m_lvl1_trigger_type
Definition TileTBDump.h:110
std::map< unsignedint, unsignedint, std::less< unsignedint > >::iterator drawerMap_iterator
Definition TileTBDump.h:84
StatusCode finalize()
void dump_data(const uint32_t *data, unsigned int size, unsigned int version, int verbosity)
bool m_v3Format
Definition TileTBDump.h:97
unsigned int m_sizeOverhead
Definition TileTBDump.h:99
TileRawChannel2Bytes2 m_rc2bytes2
Definition TileTBDump.h:229
struct TileTBDump::T_TileRecoChannel T_TileRecoChannel
struct TileTBDump::T_TileRecoCalib T_TileRecoCalib
StatusCode initialize()
TileRawChannel2Bytes5 m_rc2bytes5
Definition TileTBDump.h:231
virtual ~TileTBDump()
int m_bc_time_seconds
Definition TileTBDump.h:102
int tile_unpack_reco_calib(const T_RodDataFrag *frag, T_TileRecoCalib *recocalib, int nchannel_max, unsigned int version, unsigned int unit, int verbosity, int *ngain, int *nchannel)
struct TileTBDump::T_RodDataFrag T_RodDataFrag
unsigned short sample[MAX_CHAN_SAMP]
Definition TileTBDump.h:138
unsigned short samples[7]
Definition TileTBDump.h:173
unsigned int words[4]
Definition TileTBDump.h:169