Skip to content
Snippets Groups Projects
Commit c65c8cd8 authored by James Beacham's avatar James Beacham
Browse files

Merge branch 'cherry-pick-f9c7936a' into '21.0-mc16d'

Merge branch '21.0-LArNoisyROMon-dev' into '21.0-mc16d'

See merge request atlas/athena!7247

Former-commit-id: 403ec66a4e74db346ff762543a286f5fc41fb727
parents a3b7467b 498493ac
No related branches found
No related tags found
No related merge requests found
...@@ -25,6 +25,20 @@ class BadFEBCut(JobProperty): ...@@ -25,6 +25,20 @@ class BadFEBCut(JobProperty):
StoredValue=5 StoredValue=5
pass pass
class MNBLooseCut(JobProperty):
#Number of channels to declare MNB-Loose
statusOn=True
allowedTypes=['int']
StoredValue=5
pass
class MNBTightCut(JobProperty):
#Number of channels to declare MNB-Loose
statusOn=True
allowedTypes=['int']
StoredValue=17
pass
class KnownMNBFEBs(JobProperty): class KnownMNBFEBs(JobProperty):
#Number of bad febs per partition #Number of bad febs per partition
statusOn=True statusOn=True
...@@ -51,6 +65,8 @@ jobproperties.add_Container(LArNoisyROFlags) ...@@ -51,6 +65,8 @@ jobproperties.add_Container(LArNoisyROFlags)
jobproperties.LArNoisyROFlags.add_JobProperty(CellQualityCut) jobproperties.LArNoisyROFlags.add_JobProperty(CellQualityCut)
jobproperties.LArNoisyROFlags.add_JobProperty(BadChanPerFEB) jobproperties.LArNoisyROFlags.add_JobProperty(BadChanPerFEB)
jobproperties.LArNoisyROFlags.add_JobProperty(BadFEBCut) jobproperties.LArNoisyROFlags.add_JobProperty(BadFEBCut)
jobproperties.LArNoisyROFlags.add_JobProperty(MNBLooseCut)
jobproperties.LArNoisyROFlags.add_JobProperty(MNBTightCut)
jobproperties.LArNoisyROFlags.add_JobProperty(KnownMNBFEBs) jobproperties.LArNoisyROFlags.add_JobProperty(KnownMNBFEBs)
larNoisyROFlags = jobproperties.LArNoisyROFlags larNoisyROFlags = jobproperties.LArNoisyROFlags
...@@ -42,7 +42,9 @@ class LArNoisyROSummaryGetter ( Configured ) : ...@@ -42,7 +42,9 @@ class LArNoisyROSummaryGetter ( Configured ) :
CellQualityCut=larNoisyROFlags.CellQualityCut(), CellQualityCut=larNoisyROFlags.CellQualityCut(),
BadChanPerFEB=larNoisyROFlags.BadChanPerFEB(), BadChanPerFEB=larNoisyROFlags.BadChanPerFEB(),
BadFEBCut=larNoisyROFlags.BadFEBCut(), BadFEBCut=larNoisyROFlags.BadFEBCut(),
KnownMNBFEBs=larNoisyROFlags.KnownMNBFEBs() KnownMNBFEBs=larNoisyROFlags.KnownMNBFEBs(),
MNBLooseCut=larNoisyROFlags.MNBLooseCut(),
MNBTightCut=larNoisyROFlags.MNBTightCut()
) )
......
...@@ -30,7 +30,7 @@ LArNoisyROTool::LArNoisyROTool( const std::string& type, ...@@ -30,7 +30,7 @@ LArNoisyROTool::LArNoisyROTool( const std::string& type,
{ {
declareInterface<ILArNoisyROTool >(this); declareInterface<ILArNoisyROTool >(this);
declareProperty( "BadChanPerFEB", m_BadChanPerFEB=30 ); declareProperty( "BadChanPerFEB", m_BadChanPerFEB=30 );
declareProperty( "BadChanPerPA", m_BadChanPerPA=2 ); // declareProperty( "BadChanPerPA", m_BadChanPerPA=2 );
declareProperty( "CellQualityCut", m_CellQualityCut=4000 ); declareProperty( "CellQualityCut", m_CellQualityCut=4000 );
declareProperty( "IgnoreMaskedCells", m_ignore_masked_cells=false ); declareProperty( "IgnoreMaskedCells", m_ignore_masked_cells=false );
declareProperty( "IgnoreFrontInnerWheelCells", m_ignore_front_innerwheel_cells=true ); declareProperty( "IgnoreFrontInnerWheelCells", m_ignore_front_innerwheel_cells=true );
...@@ -122,10 +122,6 @@ std::unique_ptr<LArNoisyROSummary> LArNoisyROTool::process(const CaloCellContain ...@@ -122,10 +122,6 @@ std::unique_ptr<LArNoisyROSummary> LArNoisyROTool::process(const CaloCellContain
unsigned int NsaturatedTightCutBarrelC = 0; unsigned int NsaturatedTightCutBarrelC = 0;
unsigned int NsaturatedTightCutEMECA = 0; unsigned int NsaturatedTightCutEMECA = 0;
unsigned int NsaturatedTightCutEMECC = 0; unsigned int NsaturatedTightCutEMECC = 0;
unsigned int NsaturatedTightCutHECA = 0;
unsigned int NsaturatedTightCutHECC = 0;
unsigned int NsaturatedTightCutFCALA = 0;
unsigned int NsaturatedTightCutFCALC = 0;
CaloCellContainer::const_iterator cellItr = cellContainer->begin(); CaloCellContainer::const_iterator cellItr = cellContainer->begin();
...@@ -160,16 +156,6 @@ std::unique_ptr<LArNoisyROSummary> LArNoisyROTool::process(const CaloCellContain ...@@ -160,16 +156,6 @@ std::unique_ptr<LArNoisyROSummary> LArNoisyROTool::process(const CaloCellContain
if ( sideA ) { NsaturatedTightCutEMECA++; } if ( sideA ) { NsaturatedTightCutEMECA++; }
else { NsaturatedTightCutEMECC++; } else { NsaturatedTightCutEMECC++; }
} }
else if ( m_calo_id->is_hec(id) )
{
if ( sideA ) { NsaturatedTightCutHECA++; }
else { NsaturatedTightCutHECC++; }
}
else if ( m_calo_id->is_fcal(id) )
{
if ( sideA ) { NsaturatedTightCutFCALA++; }
else { NsaturatedTightCutFCALC++; }
}
} }
...@@ -185,15 +171,11 @@ std::unique_ptr<LArNoisyROSummary> LArNoisyROTool::process(const CaloCellContain ...@@ -185,15 +171,11 @@ std::unique_ptr<LArNoisyROSummary> LArNoisyROTool::process(const CaloCellContain
} }
} }
// exclude FCAL for now
// And also HEC (since 08/2015 - B.Trocme)
uint8_t SatTightPartitions = 0; uint8_t SatTightPartitions = 0;
if ( NsaturatedTightCutBarrelA >= m_SaturatedCellTightCut ) SatTightPartitions |= LArNoisyROSummary::EMBAMask; if ( NsaturatedTightCutBarrelA >= m_SaturatedCellTightCut ) SatTightPartitions |= LArNoisyROSummary::EMBAMask;
if ( NsaturatedTightCutBarrelC >= m_SaturatedCellTightCut ) SatTightPartitions |= LArNoisyROSummary::EMBCMask; if ( NsaturatedTightCutBarrelC >= m_SaturatedCellTightCut ) SatTightPartitions |= LArNoisyROSummary::EMBCMask;
if ( NsaturatedTightCutEMECA >= m_SaturatedCellTightCut ) SatTightPartitions |= LArNoisyROSummary::EMECAMask; if ( NsaturatedTightCutEMECA >= m_SaturatedCellTightCut ) SatTightPartitions |= LArNoisyROSummary::EMECAMask;
if ( NsaturatedTightCutEMECC >= m_SaturatedCellTightCut ) SatTightPartitions |= LArNoisyROSummary::EMECCMask; if ( NsaturatedTightCutEMECC >= m_SaturatedCellTightCut ) SatTightPartitions |= LArNoisyROSummary::EMECCMask;
// if ( NsaturatedTightCutHECA >= m_SaturatedCellTightCut ) SatTightPartitions |= LArNoisyROSummary::HECAMask;
// if ( NsaturatedTightCutHECC >= m_SaturatedCellTightCut ) SatTightPartitions |= LArNoisyROSummary::HECCMask;
bool badSaturatedTightCut = (SatTightPartitions != 0); bool badSaturatedTightCut = (SatTightPartitions != 0);
if ( badSaturatedTightCut ) noisyRO-> SetSatTightFlaggedPartitions(SatTightPartitions); if ( badSaturatedTightCut ) noisyRO-> SetSatTightFlaggedPartitions(SatTightPartitions);
...@@ -203,8 +185,6 @@ std::unique_ptr<LArNoisyROSummary> LArNoisyROTool::process(const CaloCellContain ...@@ -203,8 +185,6 @@ std::unique_ptr<LArNoisyROSummary> LArNoisyROTool::process(const CaloCellContain
m_SaturatedCellTightCutEvents++; m_SaturatedCellTightCutEvents++;
} }
// are there any bad FEB or preamp ? // are there any bad FEB or preamp ?
for ( FEBEvtStatMapCstIt it = FEBStats.begin(); it != FEBStats.end(); it++ ) { for ( FEBEvtStatMapCstIt it = FEBStats.begin(); it != FEBStats.end(); it++ ) {
ATH_MSG_DEBUG(" bad FEB " << it->first << " with " << it->second.badChannels() << " bad channels"); ATH_MSG_DEBUG(" bad FEB " << it->first << " with " << it->second.badChannels() << " bad channels");
...@@ -213,6 +193,7 @@ std::unique_ptr<LArNoisyROSummary> LArNoisyROTool::process(const CaloCellContain ...@@ -213,6 +193,7 @@ std::unique_ptr<LArNoisyROSummary> LArNoisyROTool::process(const CaloCellContain
if (m_printSummary) m_badFEB_counters[it->first]++; if (m_printSummary) m_badFEB_counters[it->first]++;
//BadFEBCount++; //BadFEBCount++;
} }
// Tight MNBs // Tight MNBs
if ( it->second.badChannels() > m_MNBTightCut ){ if ( it->second.badChannels() > m_MNBTightCut ){
noisyRO->add_MNBTight_feb(HWIdentifier(it->first)); noisyRO->add_MNBTight_feb(HWIdentifier(it->first));
...@@ -223,15 +204,17 @@ std::unique_ptr<LArNoisyROSummary> LArNoisyROTool::process(const CaloCellContain ...@@ -223,15 +204,17 @@ std::unique_ptr<LArNoisyROSummary> LArNoisyROTool::process(const CaloCellContain
noisyRO->add_MNBLoose_feb(HWIdentifier(it->first)); noisyRO->add_MNBLoose_feb(HWIdentifier(it->first));
} }
const unsigned int* PAcounters = it->second.PAcounters(); // // Noisy preamp removed as no used currently
for ( size_t i = 0; i < 32; i++ ) { // // Kept here just in case we may want to revive it
if ( PAcounters[i] > m_BadChanPerPA ) { // const unsigned int* PAcounters = it->second.PAcounters();
uint64_t PAid = static_cast<uint64_t>(1000000000)*static_cast<uint64_t>(i)+static_cast<uint64_t>(it->first); // for ( size_t i = 0; i < 32; i++ ) {
ATH_MSG_DEBUG(" bad preamp " << i << " in FEB " << it->first << " ID " << PAid); // if ( PAcounters[i] > m_BadChanPerPA ) {
noisyRO->add_noisy_preamp(HWIdentifier(it->first),4*i); // uint64_t PAid = static_cast<uint64_t>(1000000000)*static_cast<uint64_t>(i)+static_cast<uint64_t>(it->first);
if (m_printSummary) m_badPA_counters[PAid]++; // ATH_MSG_DEBUG(" bad preamp " << i << " in FEB " << it->first << " ID " << PAid);
} // noisyRO->add_noisy_preamp(HWIdentifier(it->first),4*i);
} // if (m_printSummary) m_badPA_counters[PAid]++;
// }
// }
}//end loop over m_FEBats }//end loop over m_FEBats
...@@ -256,10 +239,8 @@ std::unique_ptr<LArNoisyROSummary> LArNoisyROTool::process(const CaloCellContain ...@@ -256,10 +239,8 @@ std::unique_ptr<LArNoisyROSummary> LArNoisyROTool::process(const CaloCellContain
// If the FEB is known to be subject to noise burst (list defiend as property) // If the FEB is known to be subject to noise burst (list defiend as property)
// give a weight 2 // give a weight 2
const unsigned int int_id = febid.get_identifier32().get_compact(); const unsigned int int_id = febid.get_identifier32().get_compact();
//if (knownFEB(int_id)) weight = 2;
if (m_knownBadFEBs.find(int_id)!=m_knownBadFEBs.end()) weight=2; if (m_knownBadFEBs.find(int_id)!=m_knownBadFEBs.end()) weight=2;
if ( m_onlineID->isEMBchannel(chanID) ) if ( m_onlineID->isEMBchannel(chanID) )
{ {
if ( m_onlineID->pos_neg(chanID) == 1 ){ if ( m_onlineID->pos_neg(chanID) == 1 ){
...@@ -343,15 +324,15 @@ StatusCode LArNoisyROTool::finalize() { ...@@ -343,15 +324,15 @@ StatusCode LArNoisyROTool::finalize() {
ATH_MSG_INFO( "FEB " << it->first << " declared noisy in " << it->second << " events " ); ATH_MSG_INFO( "FEB " << it->first << " declared noisy in " << it->second << " events " );
} }
ATH_MSG_INFO( "List of bad preamps found in at least max(2,0.1%) events" ); // ATH_MSG_INFO( "List of bad preamps found in at least max(2,0.1%) events" );
unsigned int cut = static_cast<unsigned int>(0.001*static_cast<float>(m_invocation_counter)); // unsigned int cut = static_cast<unsigned int>(0.001*static_cast<float>(m_invocation_counter));
if ( cut < 2 ) cut = 2; // if ( cut < 2 ) cut = 2;
uint64_t PAfactor = 1000000000L; // uint64_t PAfactor = 1000000000L;
for ( std::map<uint64_t, unsigned int>::const_iterator it = m_badPA_counters.begin(); it != m_badPA_counters.end(); it++ ) // for ( std::map<uint64_t, unsigned int>::const_iterator it = m_badPA_counters.begin(); it != m_badPA_counters.end(); it++ )
{ // {
if ( it->second > cut ) // if ( it->second > cut )
ATH_MSG_INFO( "Preamplifier " << (it->first)/PAfactor << " of FEB " << (it->first)%PAfactor << " declared noisy in " << it->second << " events " ); // ATH_MSG_INFO( "Preamplifier " << (it->first)/PAfactor << " of FEB " << (it->first)%PAfactor << " declared noisy in " << it->second << " events " );
} // }
ATH_MSG_INFO( "Number of events with too many saturated QFactor cells (Tight cuts): " << m_SaturatedCellTightCutEvents ); ATH_MSG_INFO( "Number of events with too many saturated QFactor cells (Tight cuts): " << m_SaturatedCellTightCutEvents );
} }
......
...@@ -83,6 +83,7 @@ private: ...@@ -83,6 +83,7 @@ private:
/**declaration histo summary*/ /**declaration histo summary*/
TH2F_LW* m_summary; TH2F_LW* m_summary;
TH2F_LW* m_summaryGain;
/** Define the monitoring histograms used for each partitions of the LArCalorimeter*/ /** Define the monitoring histograms used for each partitions of the LArCalorimeter*/
......
...@@ -5,7 +5,7 @@ ...@@ -5,7 +5,7 @@
/** /**
* @class LArNoisyROMon * @class LArNoisyROMon
* @author Laurent Duflot <duflot at lal.in2p3.fr> * @author Laurent Duflot <duflot at lal.in2p3.fr>
* * 2017 : major upgrade/rewriting by B.Trocme (LPSC Grenoble)
*/ */
#ifndef LArNoisyROMon_h #ifndef LArNoisyROMon_h
...@@ -15,15 +15,19 @@ ...@@ -15,15 +15,19 @@
#include "TrigDecisionTool/TrigDecisionTool.h" #include "TrigDecisionTool/TrigDecisionTool.h"
#include "TTree.h" #include "TTree.h"
#include "Identifier/HWIdentifier.h"
#include "LArIdentifier/LArOnlineID.h"
#include <string> #include <string>
#include <array>
class TH1I_LW; class TH1I_LW;
class TH1F_LW; class TH1F_LW;
class TH2I_LW;
class TH2F_LW; class TH2F_LW;
class LWHist2D; class LWHist2D;
class LWHist1D; class LWHist1D;
class LArOnlineID; //class LArOnlineID;
class LArOnlineIDStrHelper; class LArOnlineIDStrHelper;
class LArNoisyROMon: public ManagedMonitorToolBase class LArNoisyROMon: public ManagedMonitorToolBase
...@@ -41,6 +45,8 @@ public: ...@@ -41,6 +45,8 @@ public:
StatusCode fillHistograms(); StatusCode fillHistograms();
StatusCode checkHists(bool fromFinalize); StatusCode checkHists(bool fromFinalize);
StatusCode procHistograms(); StatusCode procHistograms();
size_t partitionNumber(const HWIdentifier);
private: private:
...@@ -76,12 +82,13 @@ private: ...@@ -76,12 +82,13 @@ private:
TH1F_LW* h_SaturatedNoisyEventFrac=nullptr; TH1F_LW* h_SaturatedNoisyEventFrac=nullptr;
TH1F_LW* h_MNBTightEventFrac=nullptr; TH1F_LW* h_MNBTightEventFrac=nullptr;
TH1F_LW* h_MNBLooseEventFrac=nullptr; TH1F_LW* h_MNBLooseEventFrac=nullptr;
TH1F_LW* h_NoisyWEventFrac=nullptr; // TH1F_LW* h_NoisyWEventFrac=nullptr;
TH1F_LW* h_NoisyEventTimeVetoFrac=nullptr; TH1F_LW* h_NoisyEventTimeVetoFrac=nullptr;
TH1F_LW* h_SaturatedNoisyEventTimeVetoFrac=nullptr; TH1F_LW* h_SaturatedNoisyEventTimeVetoFrac=nullptr;
TH1F_LW* h_MNBTightEventTimeVetoFrac=nullptr; TH1F_LW* h_MNBTightEventTimeVetoFrac=nullptr;
TH1F_LW* h_MNBLooseEventTimeVetoFrac=nullptr; TH1F_LW* h_MNBLooseEventTimeVetoFrac=nullptr;
TH1F_LW* h_NoisyWEventTimeVetoFrac=nullptr; // TH1F_LW* h_NoisyWEventTimeVetoFrac=nullptr;
TH2I_LW* h_MNBKnownFEB=nullptr;
TH1I_LW* h_NoisyEventTrigger=nullptr; TH1I_LW* h_NoisyEventTrigger=nullptr;
TH1I_LW* h_NoisyEventTriggerL1=nullptr; TH1I_LW* h_NoisyEventTriggerL1=nullptr;
...@@ -97,44 +104,24 @@ private: ...@@ -97,44 +104,24 @@ private:
TH1I_LW* h_SaturatedNoisyEvent=nullptr; TH1I_LW* h_SaturatedNoisyEvent=nullptr;
TH1I_LW* h_MNBTightEvent=nullptr; TH1I_LW* h_MNBTightEvent=nullptr;
TH1I_LW* h_MNBLooseEvent=nullptr; TH1I_LW* h_MNBLooseEvent=nullptr;
TH1I_LW* h_NoisyWEvent=nullptr; // TH1I_LW* h_NoisyWEvent=nullptr;
TH1I_LW* h_NoisyEventTimeVeto=nullptr; TH1I_LW* h_NoisyEventTimeVeto=nullptr;
TH1I_LW* h_SaturatedNoisyEventTimeVeto=nullptr; TH1I_LW* h_SaturatedNoisyEventTimeVeto=nullptr;
TH1I_LW* h_MNBTightEventTimeVeto=nullptr; TH1I_LW* h_MNBTightEventTimeVeto=nullptr;
TH1I_LW* h_MNBLooseEventTimeVeto=nullptr; TH1I_LW* h_MNBLooseEventTimeVeto=nullptr;
TH1I_LW* h_NoisyWEventTimeVeto=nullptr; //TH1I_LW* h_NoisyWEventTimeVeto=nullptr;
}; };
TH1I_LW* m_h_NoisyFEB=nullptr; TH1I_LW* m_h_NoisyFEB=nullptr;
TH1F_LW* m_h_NoisyEventFrac=nullptr;
TH1F_LW* m_h_NoisyEventTimeVetoFrac=nullptr;
TH1I_LW* m_h_MNBTightFEB=nullptr;
TH1F_LW* m_h_MNBTightEventFrac=nullptr;
TH1F_LW* m_h_MNBTightEventTimeVetoFrac=nullptr;
TH1I_LW* m_h_MNBLooseFEB=nullptr;
TH1F_LW* m_h_MNBLooseEventFrac=nullptr;
TH1F_LW* m_h_MNBLooseEventTimeVetoFrac=nullptr;
TH1I_LW* m_h_CandidateMNBTightFEB=nullptr;
TH1I_LW* m_h_CandidateMNBLooseFEB=nullptr;
TH1F_LW* m_h_SaturatedTightFrac=nullptr;
TH1I_LW* m_h_NoisyEvent=nullptr;
TH1I_LW* m_h_NoisyEventTimeVeto=nullptr;
TH1I_LW* m_h_MNBTightEvent=nullptr;
TH1I_LW* m_h_MNBTightEventTimeVeto=nullptr;
TH1I_LW* m_h_MNBLooseEvent=nullptr;
TH1I_LW* m_h_MNBLooseEventTimeVeto=nullptr;
TH1I_LW* m_h_SaturatedTight=nullptr;
TH1I_LW* m_h_SaturatedTightTimeVeto=nullptr;
TH1F_LW* m_h_SaturatedTightTimeVetoFrac=nullptr;
TH1I_LW* m_h_LBN=nullptr; TH1I_LW* m_h_LBN=nullptr;
void bookPartitionHistos(partitionHistos&, const std::string& name, MonGroup& group, MonGroup& groupfrac, MonGroup& groupfracbin); void bookPartitionHistos(partitionHistos&, const std::string& name, MonGroup& group, MonGroup& groupfrac, MonGroup& groupfracbin);
void CopyHisto(LWHist2D* from,LWHist2D* to); void copyHisto(LWHist2D* from,LWHist2D* to);
void CopyHisto(LWHist1D* from,LWHist1D* to); void copyHisto(LWHist1D* from,LWHist1D* to);
// divide num by denom and store in to, assuming num is a subset of denom // divide num by denom and store in to, assuming num is a subset of denom
void Divide(LWHist1D* to,LWHist1D* num,LWHist1D* denom); void divideHisto(LWHist1D* to,LWHist1D* num,LWHist1D* denom);
// fill histogram of triggers // fill histogram of triggers
void fillTriggerHisto(partitionHistos& partition, uint8_t triggerbits, uint8_t L1triggerbits); void fillTriggerHisto(partitionHistos& partition, uint8_t triggerbits, uint8_t L1triggerbits);
...@@ -143,7 +130,9 @@ private: ...@@ -143,7 +130,9 @@ private:
bool m_doTrigger; bool m_doTrigger;
unsigned int m_eventCounter; unsigned int m_eventCounter;
partitionHistos m_BarrelA, m_BarrelC, m_EMECA, m_EMECC; // partitionHistos m_BarrelA, m_BarrelC, m_EMECA, m_EMECC;
std::vector<partitionHistos> m_partHistos;
const LArOnlineID* m_LArOnlineIDHelper; const LArOnlineID* m_LArOnlineIDHelper;
LArOnlineIDStrHelper* m_strHelper; LArOnlineIDStrHelper* m_strHelper;
...@@ -151,6 +140,9 @@ private: ...@@ -151,6 +140,9 @@ private:
std::string m_NoisyFEBDefStr; std::string m_NoisyFEBDefStr;
std::string m_MNBTightFEBDefStr;
std::string m_MNBLooseFEBDefStr;
std::vector<unsigned int> m_knownMNBFEBs;
unsigned int m_BadFEBCut; unsigned int m_BadFEBCut;
std::vector<std::string> m_EF_NoiseBurst_Triggers; std::vector<std::string> m_EF_NoiseBurst_Triggers;
...@@ -160,5 +152,23 @@ private: ...@@ -160,5 +152,23 @@ private:
std::string m_inputKey; std::string m_inputKey;
}; };
inline size_t LArNoisyROMon::partitionNumber(const HWIdentifier hwid) {
int pn=m_LArOnlineIDHelper->pos_neg(hwid);
if (m_LArOnlineIDHelper->isEMECchannel(hwid)) {
if (pn)
return 0; //positive EMECA side
else
return 3; //negative EMECC side
}
if (m_LArOnlineIDHelper->isEMBchannel(hwid)) {
if (pn)
return 1; //positive EMBA side
else
return 2; //negative EMBC side
}
return 4;//Anything else
}
#endif #endif
...@@ -19,8 +19,11 @@ from LArCellRec.LArNoisyROFlags import larNoisyROFlags ...@@ -19,8 +19,11 @@ from LArCellRec.LArNoisyROFlags import larNoisyROFlags
theLArNoisyROMon = LArNoisyROMon(name="LArNoisyROMon") theLArNoisyROMon = LArNoisyROMon(name="LArNoisyROMon")
theLArNoisyROMon.IsOnline = OnlineMode theLArNoisyROMon.IsOnline = OnlineMode
theLArNoisyROMon.ProcessNEvents= EventBlockSize theLArNoisyROMon.ProcessNEvents= EventBlockSize
theLArNoisyROMon.NoisyFEBDefStr = '(>'+str(larNoisyROFlags.BadChanPerFEB())+' chan with Q>'+str(larNoisyROFlags.CellQualityCut())+')' #LArNoisyROCutHelper('BadChanPerFEB') theLArNoisyROMon.NoisyFEBDefStr = '(>'+str(larNoisyROFlags.BadChanPerFEB())+' chan with Q>'+str(larNoisyROFlags.CellQualityCut())+')'
theLArNoisyROMon.BadFEBCut = larNoisyROFlags.BadFEBCut() #LArNoisyROFEBCutHelper() theLArNoisyROMon.MNBLooseFEBDefStr = '(>'+str(larNoisyROFlags.MNBLooseCut())+' chan with Q>'+str(larNoisyROFlags.CellQualityCut())+')'
theLArNoisyROMon.MNBTightFEBDefStr = '(>'+str(larNoisyROFlags.MNBTightCut())+' chan with Q>'+str(larNoisyROFlags.CellQualityCut())+')'
theLArNoisyROMon.KnownMNBFEBs = larNoisyROFlags.KnownMNBFEBs()
theLArNoisyROMon.BadFEBCut = larNoisyROFlags.BadFEBCut()
from RecExConfig.RecFlags import rec from RecExConfig.RecFlags import rec
if rec.doTrigger or LArNoisyROMonForceTrigger: if rec.doTrigger or LArNoisyROMonForceTrigger:
......
...@@ -252,30 +252,47 @@ LArDigitMon::bookHistograms() ...@@ -252,30 +252,47 @@ LArDigitMon::bookHistograms()
/**Book summary histo*/ /**Book summary histo*/
MonGroup generalGroup( this, "/LAr/Digits", run, ATTRIB_MANAGED ); MonGroup generalGroup( this, "/LAr/Digits", run, ATTRIB_MANAGED );
const char * hName = "summary"; const char * hName = "summary";
const char * hTitle = "High Energy Digit Summary"; const char * hTitle = "LArDigit Summary";
m_summary = TH2F_LW::create(hName, hTitle,4,0.,4.,8,0.,8.); m_summary = TH2F_LW::create(hName, hTitle,4,0.,4.,8,0.,8.);
m_summary->GetXaxis()->SetTitle("Status"); m_summary->GetXaxis()->SetTitle("Status");
m_summary->GetYaxis()->SetTitle("Sub Detector"); m_summary->GetYaxis()->SetTitle("Partition");
m_summary->GetYaxis()->SetBinLabel(1,"Barrel C"); m_summary->GetYaxis()->SetBinLabel(1,"EMBC");
m_summary->GetYaxis()->SetBinLabel(2,"Barrel A"); m_summary->GetYaxis()->SetBinLabel(2,"EMBA");
m_summary->GetYaxis()->SetBinLabel(3,"EMEC C"); m_summary->GetYaxis()->SetBinLabel(3,"EMECC");
m_summary->GetYaxis()->SetBinLabel(4,"EMEC A"); m_summary->GetYaxis()->SetBinLabel(4,"EMECA");
m_summary->GetYaxis()->SetBinLabel(5,"HEC C"); m_summary->GetYaxis()->SetBinLabel(5,"HECC");
m_summary->GetYaxis()->SetBinLabel(6,"HEC A"); m_summary->GetYaxis()->SetBinLabel(6,"HECA");
m_summary->GetYaxis()->SetBinLabel(7,"FCAL C"); m_summary->GetYaxis()->SetBinLabel(7,"FCalC");
m_summary->GetYaxis()->SetBinLabel(8,"FCAL A"); m_summary->GetYaxis()->SetBinLabel(8,"FCalA");
m_summary->GetXaxis()->SetBinLabel(1,"OutOfRange"); m_summary->GetXaxis()->SetBinLabel(1,"OutOfRange");
m_summary->GetXaxis()->SetBinLabel(2,"Saturation"); m_summary->GetXaxis()->SetBinLabel(2,"Saturation");
m_summary->GetXaxis()->SetBinLabel(3,"Null Digits"); m_summary->GetXaxis()->SetBinLabel(3,"Null Digits");
m_summary->GetXaxis()->SetBinLabel(4,"Mean Time"); m_summary->GetXaxis()->SetBinLabel(4,"Mean Time");
m_summary->GetXaxis()->SetLabelSize(0.055); m_summary->GetXaxis()->SetLabelSize(0.055);
//Not supported in LWHists: m_summary->GetXaxis()->SetTitleOffset(1.2); m_summary->GetYaxis()->SetLabelSize(0.055);
m_summary->GetYaxis()->SetLabelSize(0.055);
//Not supported in LWHists: m_summary->GetYaxis()->SetTitleOffset(3);
generalGroup.regHist(m_summary).ignore(); generalGroup.regHist(m_summary).ignore();
hName = "summaryGain";
hTitle = "Gain per partition (only cells with LArDigit available)";
m_summaryGain = TH2F_LW::create(hName, hTitle,3,0.,3.,8,0.,8.);
m_summaryGain->GetXaxis()->SetTitle("Gain");
m_summaryGain->GetYaxis()->SetTitle("Sub Detector");
m_summaryGain->GetYaxis()->SetTitle("Partition");
m_summaryGain->GetYaxis()->SetBinLabel(1,"EMBC");
m_summaryGain->GetYaxis()->SetBinLabel(2,"EMBA");
m_summaryGain->GetYaxis()->SetBinLabel(3,"EMECC");
m_summaryGain->GetYaxis()->SetBinLabel(4,"EMECA");
m_summaryGain->GetYaxis()->SetBinLabel(5,"HECC");
m_summaryGain->GetYaxis()->SetBinLabel(6,"HECA");
m_summaryGain->GetYaxis()->SetBinLabel(7,"FCalC");
m_summaryGain->GetYaxis()->SetBinLabel(8,"FCalA");
m_summaryGain->GetXaxis()->SetBinLabel(1,"HIGH");
m_summaryGain->GetXaxis()->SetBinLabel(2,"MEDIUM");
m_summaryGain->GetXaxis()->SetBinLabel(3,"LOW");
m_summaryGain->GetXaxis()->SetLabelSize(0.055);
m_summaryGain->GetYaxis()->SetLabelSize(0.055);
generalGroup.regHist(m_summaryGain).ignore();
//} //}
...@@ -472,6 +489,10 @@ LArDigitMon::fillHistograms() ...@@ -472,6 +489,10 @@ LArDigitMon::fillHistograms()
/** Determine to which partition this channel belongs to*/ /** Determine to which partition this channel belongs to*/
LArDigitMon::partition &ThisPartition=WhatPartition(id); LArDigitMon::partition &ThisPartition=WhatPartition(id);
/** Fill the gain*/
m_summaryGain->Fill(gain,ThisPartition.sumpos);
/** Retrieve samples*/ /** Retrieve samples*/
const std::vector<short>* digito = &pLArDigit->samples(); const std::vector<short>* digito = &pLArDigit->samples();
......
This diff is collapsed.
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