30 std::unique_ptr<TFile>
f( TFile::Open(
fileName.c_str()) );
32 TTree*
t =
f->Get<TTree>(
"mapping");
34 unsigned long long scid = 0;
35 std::pair<int,int>
coord = {0,0};
36 std::pair<int,int> slot;
37 t->SetBranchAddress(
"scid",&scid);
38 t->SetBranchAddress(
"etaIndex",&
coord.first);
39 t->SetBranchAddress(
"phiIndex",&
coord.second);
40 t->SetBranchAddress(
"slot1",&slot.first);
41 t->SetBranchAddress(
"slot2",&slot.second);
42 for(Long64_t
i=0;
i<
t->GetEntries();
i++) {
44 m_scMap[std::make_pair(
coord,slot.first)].first.insert(scid);
45 m_scMap[std::make_pair(
coord,slot.second)].first.insert(scid);
50 for(
auto id : scs.first) {
74 return StatusCode::FAILURE;
86 if(larBadChan.isValid()) {
87 timeSince = ctx.eventID().time_stamp() - larBadChan.getRange().start().time_stamp();
88 timeUntil = larBadChan.getRange().stop().time_stamp() - ctx.eventID().time_stamp();
89 timeUntilCapped =
std::min(
int(timeUntil),199);
104 bool isPrescaled = (((
GetEventInfo(ctx)->extendedLevel1ID()&0xffffff) % 200) != 0);
107 fill(
"errors",
Decision,timeSince,timeUntil,evtNumber,lbnString,TowerId,Towereta,Towerphi,Toweremstatus,Towerhadstatus,TowerSlot,TowerCount,TowerRefCount,SlotSCID);
110 fill(
"errors",
Decision,timeSince,timeUntil,evtNumber,lbnString,TowerId,Towereta,Towerphi,Toweremstatus,Towerhadstatus,TowerSlot,TowerCount,TowerRefCount,SlotSCID);
117 auto etaIndex = [](
float eta) {
return int(
eta*10 ) + ((
eta<0) ? -1 : 1); };
120 bool missingLAr =
false;
121 if (eFexTowerContainerRef.isValid()) {
122 if(eFexTowerContainerRef->empty()) missingLAr=
true;
123 for (
auto eTower: *eFexTowerContainerRef) {
124 refTowers[std::pair(etaIndex(eTower->eta() + 0.025),
phiIndex(eTower->phi() + 0.025))] = eTower;
126 Towereta = eTower->eta(); Towerphi = eTower->phi();
127 std::vector<uint16_t> Toweret_count=eTower->et_count();
128 for(
size_t i=0;
i<Toweret_count.size();
i++) {
129 TowerRefCount = Toweret_count[
i];
130 if (TowerRefCount==1025) missingLAr=
true;
131 if(TowerRefCount==1025 || TowerRefCount==1022) TowerRefCount=0;
132 fill((
i<10) ?
"ecal" :
"hcal",
lbn,Towereta,TowerRefCount);
138 fill(
"errors",
Decision,timeSince,timeUntil,evtNumber,lbnString,TowerId,Towereta,Towerphi,Toweremstatus,Towerhadstatus,TowerSlot,TowerCount,TowerRefCount,SlotSCID);
147 std::set<std::pair<std::pair<int,int>,
int>> doneCounts;
150 TowerId = eTower->id();
151 Towereta=eTower->eta();
152 Towerphi=eTower->phi();
153 if(eTower->em_status()) {
155 fill(
"errors",
Decision,timeSince,timeUntil,evtNumber,lbnString,TowerId,Towereta,Towerphi,Toweremstatus,Towerhadstatus,TowerSlot,TowerCount,TowerRefCount,SlotSCID);
157 if(eTower->had_status()) {
159 fill(
"errors",
Decision,timeSince,timeUntil,evtNumber,lbnString,TowerId,Towereta,Towerphi,Toweremstatus,Towerhadstatus,TowerSlot,TowerCount,TowerRefCount,SlotSCID);
161 std::vector<uint16_t> counts=eTower->et_count();
162 std::vector<uint16_t> refcounts;
163 auto coord = std::pair(etaIndex(eTower->eta() + 0.025),
phiIndex(eTower->phi() + 0.025));
164 if(!refTowers.empty()) {
165 if(
auto itr = refTowers.find(
coord); itr != refTowers.end()) {
166 refcounts = itr->second->et_count();
169 for(
size_t i=0;
i<counts.size();
i++) {
170 if (eTower->disconnectedCount(
i))
continue;
172 if (doneCounts.find(std::pair(
coord,
i))==doneCounts.end()) {
173 doneCounts.insert(std::pair(
coord,
i));
177 bool isLAr = !(
i==10 && std::abs(Towereta)<=1.5);
179 TowerCount = counts[
i];
182 if(!refTowers.empty()) {
183 if(refcounts.size() != counts.size()) {
186 TowerRefCount = refcounts.at(
i);
188 if(TowerCount==1022) {
190 }
else if(!TowerCount && TowerRefCount) {
192 }
else if(TowerCount && !TowerRefCount) {
194 }
else if(TowerCount != TowerRefCount) {
198 }
else if(TowerCount != TowerRefCount) {
202 if(!std::string(
Decision).empty()) {
205 SlotSCID = itr->second.second;
208 fill(
"errors",
Decision,timeSince,timeUntil,evtNumber,lbnString,TowerId,Towereta,Towerphi,Toweremstatus,Towerhadstatus,TowerSlot,TowerCount,TowerRefCount,SlotSCID);
211 fill((
i<10) ?
"ecal" :
"hcal",
lbn,Towereta,TowerCount);
216 return StatusCode::SUCCESS;