1#ifndef BMNTRIGRAWTODIGIT_H
2#define BMNTRIGRAWTODIGIT_H
9#include <unordered_map>
13#include <TClonesArray.h>
27#define CHANNEL_COUNT_MAX 72u
28#define TDC72_CHANNEL_COUNT 72u
29#define TQDC16_CHANNEL_COUNT 16u
30#define TDC_BIN_COUNT 1024
31#define HPTIMEBIN 0.02344
32#define INVHPTIMEBIN 42.6666
33#define ADC_CLOCK_TQDC16VS 8.0
35#define ADC_CLOCK_OLD 12.5
37#define TDC_CLOCK_OLD 25.0
76 BmnTrigRaw2Digit(TString mappingFile, TString INLFile, std::function<
void(TString, TClonesArray*)> BranchRegFun);
80 for (TClonesArray* ar : trigArrays)
85 for (
auto& el : fPlacementMap) {
88 fPlacementMap.clear();
91 vector<BmnTrigChannelData>*
GetMap() {
return &fMap; }
99 map<std::pair<uint32_t, uint16_t>, uint16_t>&
GetScaler2IdxMap() {
return scalers2index_map; }
117 for (
auto& itPl : fPlacementMap)
118 if (itPl.second->IsT0)
119 return itPl.second->CrateSerial;
128 TString Serial2FileName(TString boardName, UInt_t serial)
130 UShort_t h = serial >> 16;
131 UShort_t l = serial & 0x0000FFFF;
132 TString inlFileName = Form(
"%s-%04X-%04X.ini", boardName.Data(), h, l);
136 UInt_t ChanCntByName(TString channelCountStr)
139 TPRegexp reBoardName(
"(\\D+)(\\d+)(.*)");
142 if (reBoardName.MatchB(channelCountStr)) {
145 reBoardName.Substitute(channelCountStr,
"$2");
146 channelCount = strtoul(channelCountStr.Data(),
nullptr, 10);
152 void ProcessWave(int16_t* iValue,
const uint16_t& nVals, Bool_t& isNeg);
154 Double_t GetBaseline(int16_t* iValue,
const uint16_t& nVals);
156 map<PlMapKey, BmnTrigParameters*> fPlacementMap;
160 vector<BmnTrigChannelData> fMap;
162 TString fMapFileName;
163 vector<TClonesArray*> trigArrays;
165 unique_ptr<TH1I> fWorkHist;
170 map<std::pair<uint32_t, uint16_t>, uint16_t> scalers2index_map;
171 map<uint16_t, uint16_t> trcIdx2scalerIdx;
174 vector<string> scalers_index2name_map;
std::unordered_map< std::string, std::pair< uint32_t, uint16_t > > Name2SerCh
std::map< std::pair< uint32_t, uint16_t >, std::string > SerCh2Name
std::map< T0MapKey, uint16_t > T0ChMap
std::unordered_map< std::string, uint16_t > NameChMap
BmnStatus ReadINLFromFile(BmnTrigParameters *par)
BmnTrigRaw2Digit(TString mappingFile, TString INLFile, std::function< void(TString, TClonesArray *)> BranchRegFun)
vector< string > & GetScalerIdx2NameMap()
BmnStatus ReadChannelMap(TString mappingFile)
vector< TClonesArray * > * GetTrigArrays()
NameChMap & GetScalerName2IdxMap()
virtual ~BmnTrigRaw2Digit()
BmnStatus FillEvent(TClonesArray *tdc, TClonesArray *adc, unordered_map< UInt_t, Long64_t > &tsMap)
Name2SerCh & GetScalerMap()
void SetSetup(BmnSetup stp)
SerCh2Name & GetScaler2NameMap()
map< uint16_t, uint16_t > & GetTrcIdx2ScalerIdxMap()
BmnTrigRaw2Digit(TString mappingFile, TString INLFile, TTree *digiTree=NULL)
map< std::pair< uint32_t, uint16_t >, uint16_t > & GetScaler2IdxMap()
BmnStatus FillEvent(TClonesArray *tdc, unordered_map< UInt_t, Long64_t > &tsMap)
BmnStatus ReadPlacementMap(TString mappingFile)
vector< BmnTrigChannelData > * GetMap()
Define enumerations used in tracking.
const UShort_t kNCHANNELS
#define CHANNEL_COUNT_MAX
TClonesArray * branchArrayPtr
Double_t INL[CHANNEL_COUNT_MAX][TDC_BIN_COUNT]
Bool_t NegativeMap[CHANNEL_COUNT_MAX]
TClonesArray * branchArrayPtr[CHANNEL_COUNT_MAX]
UShort_t ChannelMap[CHANNEL_COUNT_MAX]
Double_t t[CHANNEL_COUNT_MAX]