Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions include/MGUIOptionsEventSaver.h
Original file line number Diff line number Diff line change
Expand Up @@ -81,6 +81,9 @@ class MGUIOptionsEventSaver : public MGUIOptions
//! Checkbutton to save or reject bad events
TGCheckButton* m_SaveBadEvents;

//! Checkbutton to save or reject quality flag events
TGCheckButton* m_SavePoorQualityEvents;

//! Checkbutton to save veto events
TGCheckButton* m_SaveVetoEvents;

Expand Down
8 changes: 8 additions & 0 deletions include/MModuleEventSaver.h
Original file line number Diff line number Diff line change
Expand Up @@ -63,6 +63,11 @@ class MModuleEventSaver : public MModule
//! Set whether the Bad events should be saved
void SetSaveBadEvents(bool SaveBadEvents) { m_SaveBadEvents = SaveBadEvents; }

//! Return true if the Poor Quality events should be saved
bool GetSavePoorQualityEvents() const { return m_SavePoorQualityEvents; }
//! Set whether the Poor Quality events should be saved
void SetSavePoorQualityEvents(bool SavePoorQualityEvents) { m_SavePoorQualityEvents = SavePoorQualityEvents; }

//! Return true if the Veto events should be saved
bool GetSaveVetoEvents() const { return m_SaveVetoEvents; }
//! Set whether the Veto events should be saved
Expand Down Expand Up @@ -193,6 +198,9 @@ class MModuleEventSaver : public MModule
//! Save bad events
bool m_SaveBadEvents;

//! Save poor quality events
bool m_SavePoorQualityEvents;

//! Save Veto events
bool m_SaveVetoEvents;

Expand Down
2 changes: 2 additions & 0 deletions include/MReadOutAssembly.h
Original file line number Diff line number Diff line change
Expand Up @@ -249,6 +249,8 @@ class MReadOutAssembly : public MReadOutSequence
bool IsGood() const;
//! Returns true if any of the "bad" or "Error" flags has been set
bool IsBad() const;
//! Returns true if any of the Quality flags have been set
bool IsPoorQuality() const;

//! Set a specific analysis progress
void SetAnalysisProgress(uint64_t Progress) { m_AnalysisProgress |= Progress; }
Expand Down
5 changes: 5 additions & 0 deletions src/MGUIOptionsEventSaver.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -108,6 +108,10 @@ void MGUIOptionsEventSaver::Create()
m_SaveBadEvents->SetOn(dynamic_cast<MModuleEventSaver*>(m_Module)->GetSaveBadEvents());
GeneralFrame->AddFrame(m_SaveBadEvents, FirstLabelLayout);

m_SavePoorQualityEvents = new TGCheckButton(GeneralFrame, "Save events with quality flag (QA)", 1);
m_SavePoorQualityEvents->SetOn(dynamic_cast<MModuleEventSaver*>(m_Module)->GetSavePoorQualityEvents());
GeneralFrame->AddFrame(m_SavePoorQualityEvents, TightButtonLayout);

m_SaveVetoEvents = new TGCheckButton(GeneralFrame, "Save guard ring and shield veto events (Veto)", 1);
m_SaveVetoEvents->SetOn(dynamic_cast<MModuleEventSaver*>(m_Module)->GetSaveVetoEvents());
GeneralFrame->AddFrame(m_SaveVetoEvents, TightButtonLayout);
Expand Down Expand Up @@ -229,6 +233,7 @@ bool MGUIOptionsEventSaver::OnApply()
dynamic_cast<MModuleEventSaver*>(m_Module)->SetFileName(m_FileSelector->GetFileName());

dynamic_cast<MModuleEventSaver*>(m_Module)->SetSaveBadEvents(m_SaveBadEvents->IsOn());
dynamic_cast<MModuleEventSaver*>(m_Module)->SetSavePoorQualityEvents(m_SavePoorQualityEvents->IsOn());
dynamic_cast<MModuleEventSaver*>(m_Module)->SetSaveVetoEvents(m_SaveVetoEvents->IsOn());
dynamic_cast<MModuleEventSaver*>(m_Module)->SetAddTimeTag(m_AddTimeTag->IsOn());
dynamic_cast<MModuleEventSaver*>(m_Module)->SetSplitFile(m_SplitFile->IsOn());
Expand Down
10 changes: 10 additions & 0 deletions src/MModuleEventSaver.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -75,6 +75,7 @@ MModuleEventSaver::MModuleEventSaver() : MModule()
m_InternalFileName = "";
m_Zip = false;
m_SaveBadEvents = true;
m_SavePoorQualityEvents = true;
m_SaveVetoEvents = true;
m_AddTimeTag = false;

Expand Down Expand Up @@ -345,6 +346,10 @@ bool MModuleEventSaver::AnalyzeEvent(MReadOutAssembly* Event)
if (Event->IsBad() == true) return true;
}

if (m_SavePoorQualityEvents == false) {
if (Event->IsPoorQuality() == true) return true;
}

if (m_SaveVetoEvents == false) {
if (Event->IsVeto() == true) return true;
}
Expand Down Expand Up @@ -415,6 +420,10 @@ bool MModuleEventSaver::ReadXmlConfiguration(MXmlNode* Node)
if (SaveBadEventsNode != 0) {
m_SaveBadEvents = SaveBadEventsNode->GetValueAsBoolean();
}
MXmlNode* SavePoorQualityEventsNode = Node->GetNode("SavePoorQualityEvents");
if (SavePoorQualityEventsNode != 0) {
m_SavePoorQualityEvents = SavePoorQualityEventsNode->GetValueAsBoolean();
}
MXmlNode* SaveVetoEventsNode = Node->GetNode("SaveVetoEvents");
if (SaveVetoEventsNode != 0) {
m_SaveVetoEvents = SaveVetoEventsNode->GetValueAsBoolean();
Expand Down Expand Up @@ -480,6 +489,7 @@ MXmlNode* MModuleEventSaver::CreateXmlConfiguration()
new MXmlNode(Node, "FileName", m_FileName);
new MXmlNode(Node, "Mode", m_Mode);
new MXmlNode(Node, "SaveBadEvents", m_SaveBadEvents);
new MXmlNode(Node, "SavePoorQualityEvents", m_SavePoorQualityEvents);
new MXmlNode(Node, "SaveVetoEvents", m_SaveVetoEvents);
new MXmlNode(Node, "AddTimeTag", m_AddTimeTag);
new MXmlNode(Node, "SplitFile", m_SplitFile);
Expand Down
27 changes: 25 additions & 2 deletions src/MReadOutAssembly.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -618,7 +618,13 @@ void MReadOutAssembly::StreamEvta(ostream& S)
}

for (unsigned int h = 0; h < m_Hits.size(); ++h) {
m_Hits[h]->StreamEvta(S);
// Don't print Guard Ring hits as normal strip hits as they don't have positions defined
// the corresponding energy is saved in the StripPairing QA message
if (m_Hits[h]->GetGuardRingHitFlag() == true) {
continue;
} else {
m_Hits[h]->StreamEvta(S);
}
}

S<<"CC NStripHits "<<m_StripHits.size()<<endl;
Expand Down Expand Up @@ -804,7 +810,24 @@ bool MReadOutAssembly::IsBad() const

return false;
}



////////////////////////////////////////////////////////////////////////////////


bool MReadOutAssembly::IsPoorQuality() const
{
//! Returns true if none of the Quality flag has been set

// Let's not filter out the strips below threshold events since these aren't less quality
//if (m_StripHitBelowThreshold_QualityFlag == true) return true;
if (m_StripPairing_QualityFlag == true) return true;

if (m_FilteredOut == true) return true;

return false;
}


//////////////////////////////////////////////////////////////////////////////

Expand Down