Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
17 commits
Select commit Hold shift + click to select a range
4b267f1
Files created for cyclotron frequency reconstruction of cavity events…
Sep 12, 2025
720f972
Added code to cavity event processor that iterates through MPTs in ev…
Sep 16, 2025
96179c3
Implemented cyclotron frequency reconstruction algorithm logic. Still…
Sep 16, 2025
5d366ad
Implemented logic to reconstruct the axial frequency of the first MPT…
Sep 18, 2025
c8d815c
In previous commit I forgot to mention that I also implemented config…
Sep 18, 2025
2f283d5
Writing error was a result of not having initialized ProcessedCavityE…
Sep 19, 2025
10f59df
Pulled out cycl. and ax. freq. reconstruction algorithms from inside …
Dec 16, 2025
6165e99
Cleaned up guards for both reconstruction algorithms.
Dec 16, 2025
4b0e15a
Added vectors to KTProcessedCavityEventData to store cycl and ax freq…
Dec 18, 2025
41fa10b
Added data storage of individual track (ids, event seq ids, and sideb…
Jan 13, 2026
9eff712
Added band classification data storage, so users do not have to extra…
Jan 30, 2026
8f18af6
Added comment on configurable parameter in KTCavityEventProcessing.
Jan 30, 2026
685f13f
Merge remote-tracking branch 'origin/develop' into freqRecon_mergeBranch
Apr 19, 2026
f44a396
Updated variable and parameter name for configurable parameter in KTC…
May 4, 2026
44ca300
Added example Katydid config file used on Locust-Kass simulated noise…
May 18, 2026
0dcee67
Added a more precise description of the KTCavityEventProcessing proce…
May 23, 2026
5bc23a6
Corrected a typo in KTCavityEventProcessing.hh comment
May 23, 2026
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
416 changes: 416 additions & 0 deletions Examples/ConfigFiles/KatydidNoiselessCCAFreqReco.yaml

Large diffs are not rendered by default.

2 changes: 2 additions & 0 deletions Source/Data/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@ set (DATA_HEADERFILES
EventAnalysis/KTMultiTrackEventData.hh
EventAnalysis/KTPowerFitData.hh
EventAnalysis/KTProcessedMPTData.hh
EventAnalysis/KTProcessedCavityEventData.hh
EventAnalysis/KTProcessedTrackData.hh
EventAnalysis/KTRPTrackData.hh
EventAnalysis/KTSequentialLineData.hh
Expand Down Expand Up @@ -96,6 +97,7 @@ set (DATA_SOURCEFILES
EventAnalysis/KTMultiTrackEventData.cc
EventAnalysis/KTPowerFitData.cc
EventAnalysis/KTProcessedMPTData.cc
EventAnalysis/KTProcessedCavityEventData.cc
EventAnalysis/KTProcessedTrackData.cc
EventAnalysis/KTRPTrackData.cc
EventAnalysis/KTSequentialLineData.cc
Expand Down
81 changes: 81 additions & 0 deletions Source/Data/EventAnalysis/KTProcessedCavityEventData.cc
Original file line number Diff line number Diff line change
@@ -0,0 +1,81 @@
/*
* KTProcessedCavityEventData.cc
*
* Created on: Sep 11, 2025
* Author: juniorpe
*/

#include "KTProcessedCavityEventData.hh"

#include "KTLogger.hh"

namespace Katydid
{

const std::string KTProcessedCavityEventData::sName("proc-cavity-event");

KTProcessedCavityEventData::KTProcessedCavityEventData() :
KTExtensibleData< KTProcessedCavityEventData >(),
fComponent(0),
fAcquisitionID(0.),
fEventID(0),
fTotalEventSequences(0),
fFirstTrackStartCyclotronFrequency(0.),
fFirstTrackAxialFrequency(0.),
fFirstTrackBandIDs(),
fFirstTrackBandClassifications(),
fMPTEventSequenceID(),
fMPTStartCyclotronFrequency(),
fMPTAxialFrequency(),
fAllTrackIDs(),
fAllTrackEventSequenceIDs(),
fAllTrackBandClassifications()

{
}

KTProcessedCavityEventData::KTProcessedCavityEventData(const KTProcessedCavityEventData& orig) :
KTExtensibleData< KTProcessedCavityEventData >(orig),

fComponent(orig.fComponent),
fAcquisitionID(orig.fAcquisitionID),
fEventID(orig.fEventID),
fTotalEventSequences(orig.fTotalEventSequences),
fFirstTrackStartCyclotronFrequency(orig.fFirstTrackStartCyclotronFrequency),
fFirstTrackAxialFrequency(orig.fFirstTrackAxialFrequency),
fFirstTrackBandIDs(orig.fFirstTrackBandIDs),
fFirstTrackBandClassifications(orig.fFirstTrackBandClassifications),
fMPTEventSequenceID(orig.fMPTEventSequenceID),
fMPTStartCyclotronFrequency(orig.fMPTStartCyclotronFrequency),
fMPTAxialFrequency(orig.fMPTAxialFrequency),
fAllTrackIDs(orig.fAllTrackIDs),
fAllTrackEventSequenceIDs(orig.fAllTrackEventSequenceIDs),
fAllTrackBandClassifications(orig.fAllTrackBandClassifications)
{
}

KTProcessedCavityEventData::~KTProcessedCavityEventData()
{
}

KTProcessedCavityEventData& KTProcessedCavityEventData::operator=(const KTProcessedCavityEventData& rhs)
{
KTExtensibleData< KTProcessedCavityEventData >::operator=(rhs);
fComponent = rhs.fComponent;
fAcquisitionID = rhs.fAcquisitionID;
fEventID = rhs.fEventID;
fTotalEventSequences = rhs.fTotalEventSequences;
fFirstTrackStartCyclotronFrequency = rhs.fFirstTrackStartCyclotronFrequency;
fFirstTrackAxialFrequency = rhs.fFirstTrackAxialFrequency;
fFirstTrackBandIDs = rhs.fFirstTrackBandIDs;
fFirstTrackBandClassifications = rhs.fFirstTrackBandClassifications;
fMPTEventSequenceID = rhs.fMPTEventSequenceID;
fMPTStartCyclotronFrequency = rhs.fMPTStartCyclotronFrequency;
fMPTAxialFrequency = rhs.fMPTAxialFrequency;
fAllTrackIDs = rhs.fAllTrackIDs;
fAllTrackEventSequenceIDs = rhs.fAllTrackEventSequenceIDs;
fAllTrackBandClassifications = rhs.fAllTrackBandClassifications;
return *this;
}

}
112 changes: 112 additions & 0 deletions Source/Data/EventAnalysis/KTProcessedCavityEventData.hh
Original file line number Diff line number Diff line change
@@ -0,0 +1,112 @@
/*
* KTProcessedCavityEventData.hh
*
* Created on: Sep 11, 2025
* Author: juniorpe
*/

#ifndef KTPROCESSEDCAVITYEVENTDATA_HH_
#define KTPROCESSEDCAVITYEVENTDATA_HH_

#include "KTData.hh"
#include "KTMultiTrackEventData.hh"
#include "KTMemberVariable.hh"

#include <vector>
#include <set>

namespace Katydid
{

class KTProcessedCavityEventData : public Nymph::KTExtensibleData< KTProcessedCavityEventData >
{
public:
KTProcessedCavityEventData();
KTProcessedCavityEventData(const KTProcessedCavityEventData& orig);
virtual ~KTProcessedCavityEventData();

KTProcessedCavityEventData& operator=(const KTProcessedCavityEventData& rhs);

MEMBERVARIABLE(unsigned, Component);
MEMBERVARIABLE(uint64_t, AcquisitionID);
MEMBERVARIABLE(unsigned, EventID);
MEMBERVARIABLE(unsigned, TotalEventSequences);

MEMBERVARIABLE(double, FirstTrackStartCyclotronFrequency);
MEMBERVARIABLE(double, FirstTrackAxialFrequency);
MEMBERVARIABLE(std::vector<int>, FirstTrackBandIDs);
MEMBERVARIABLE(std::vector<int>, FirstTrackBandClassifications);

MEMBERVARIABLEREF(std::vector<int>, MPTEventSequenceID);
MEMBERVARIABLEREF(std::vector<double>, MPTStartCyclotronFrequency);
MEMBERVARIABLEREF(std::vector<double>, MPTAxialFrequency);

MEMBERVARIABLEREF(std::vector<int>, AllTrackIDs);
MEMBERVARIABLEREF(std::vector<int>, AllTrackEventSequenceIDs);
MEMBERVARIABLEREF(std::vector<int>, AllTrackBandClassifications);

void ClearProcessedEvent();

void AddFirstTrackBandInfo(int trackID, int classification);
void ClearFirstTrackBandInfo();

void AddProcessedMPT(int seqID, double startCyclFreq, double axialFreq);

void AddClassificationData(int trackID, int seqID, int bandClassification);
void AddClassificationData(const std::vector<AllTrackData>& tracksInMPT, int seqID, int bandClassification);

public:
static const std::string sName;
};

inline void KTProcessedCavityEventData::ClearProcessedEvent()
{
fFirstTrackBandIDs.clear();
fFirstTrackBandClassifications.clear();

fMPTEventSequenceID.clear();
fMPTStartCyclotronFrequency.clear();
fMPTAxialFrequency.clear();

fAllTrackIDs.clear();
fAllTrackEventSequenceIDs.clear();
fAllTrackBandClassifications.clear();
}

inline void KTProcessedCavityEventData::AddFirstTrackBandInfo(int trackID, int classification)
{
fFirstTrackBandIDs.push_back(trackID);
fFirstTrackBandClassifications.push_back(classification);
}

inline void KTProcessedCavityEventData::ClearFirstTrackBandInfo()
{
fFirstTrackBandIDs.clear();
fFirstTrackBandClassifications.clear();
}

inline void KTProcessedCavityEventData::AddProcessedMPT(int seqID, double startCyclFreq, double axialFreq)
{
fMPTEventSequenceID.push_back(seqID);
fMPTStartCyclotronFrequency.push_back(startCyclFreq);
fMPTAxialFrequency.push_back(axialFreq);
}

inline void KTProcessedCavityEventData::AddClassificationData(int trackID, int seqID, int bandClassification)
{
fAllTrackIDs.push_back(trackID);
fAllTrackEventSequenceIDs.push_back(seqID);
fAllTrackBandClassifications.push_back(bandClassification);
}

inline void KTProcessedCavityEventData::AddClassificationData(const std::vector<AllTrackData>& tracksInMPT, int seqID, int bandClassification)
{
for (const auto& trk : tracksInMPT)
{
AddClassificationData(trk.fProcTrack.GetTrackID(), seqID, bandClassification);
}
}

}
#endif

2 changes: 2 additions & 0 deletions Source/EventAnalysis/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@ set (EVENTANALYSIS_HEADERFILES
KTIterativeTrackClustering.hh
KTMultiPeakEventBuilder.hh
KTMultiPeakTrackProcessing.hh
KTCavityEventProcessing.hh
KTMultiPeakTrackBuilder.hh
KTMultiSliceClustering.hh
KTOverlappingTrackClustering.hh
Expand Down Expand Up @@ -73,6 +74,7 @@ set (EVENTANALYSIS_SOURCEFILES
KTIterativeTrackClustering.cc
KTMultiPeakEventBuilder.cc
KTMultiPeakTrackProcessing.cc
KTCavityEventProcessing.cc
KTMultiPeakTrackBuilder.cc
KTMultiSliceClustering.cc
KTOverlappingTrackClustering.cc
Expand Down
Loading
Loading