Skip to content

Commit 4e393ef

Browse files
committed
Changed the interface of AtFitter, changed the name of namespace from AtFITTER to EventFit.
1 parent 1282163 commit 4e393ef

6 files changed

Lines changed: 57 additions & 65 deletions

File tree

Lines changed: 17 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,22 @@
11
#include "AtFitter.h"
22

3-
ClassImp(AtFITTER::AtFitter);
3+
#include "AtPatternEvent.h"
4+
#include "AtTrackingEvent.h"
45

5-
void AtFITTER::AtFitter::Reset()
6+
ClassImp(EventFit::AtFitter);
7+
8+
void EventFit::AtFitter::FitEvent(AtTrackingEvent *trackingEvent, AtPatternEvent *patternEvent,
9+
AtFitMetadata *fitMetadata, AtRawEvent *rawEvent, AtEvent *event)
610
{
7-
fPatternEvent = nullptr;
8-
fFitMetadata = nullptr;
9-
fRawEvent = nullptr;
10-
fEvent = nullptr;
11+
// Extract the candidate AtTracks.
12+
std::vector<AtTrack> tracks = patternEvent->GetTrackCand();
13+
14+
// Save the original AtTracks to the AtTrackingEvent.
15+
trackingEvent->SetTrackArray(&tracks);
16+
17+
// Iterate over the AtTracks and store the AtFittedTracks in the AtTrackingEvent.
18+
for (auto track : tracks) {
19+
std::unique_ptr<AtFittedTrack> fittedTrack(GetFittedTrack(&track, fitMetadata, rawEvent, event));
20+
trackingEvent->AddFittedTrack(std::move(fittedTrack));
21+
}
1122
}

AtReconstruction/AtFitter/AtFitter.h

Lines changed: 14 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -20,9 +20,12 @@ class TClass;
2020
class TMemberInspector;
2121
class AtRawEvent;
2222
class AtEvent;
23+
class AtFitMetadata;
2324
class AtPatternEvent;
25+
class AtRawEvent;
26+
class AtTrackingEvent;
2427

25-
namespace AtFITTER {
28+
namespace EventFit {
2629

2730
class AtFitter : public TObject {
2831
public:
@@ -31,44 +34,26 @@ class AtFitter : public TObject {
3134
using TrackMetadatasSet =
3235
std::set<TrackMetadataPtr, std::function<bool(const TrackMetadataPtr &, const TrackMetadataPtr &)>>;
3336

34-
protected:
35-
// Pointer to the AtPatternEvent to be fitted.
36-
AtPatternEvent *fPatternEvent{nullptr};
37-
38-
// Pointer to the AtFitResult object in which store the fit metadata.
39-
AtFitMetadata *fFitMetadata{nullptr};
40-
41-
// Pointers to AtRawEvent and AtEvent. In case some specific fitter needs to access information
42-
// in any of those branches.
43-
AtRawEvent *fRawEvent{nullptr};
44-
AtEvent *fEvent{nullptr};
45-
46-
// Compare function that will be used to sort the fit results for a given track.
47-
virtual bool
48-
CompareTrackFitsFunction(const TrackMetadataPtr &trackMetadataA, const TrackMetadataPtr &trackMetadataB) = 0;
49-
5037
public:
5138
AtFitter() = default;
5239
~AtFitter() = default;
5340

54-
virtual std::vector<std::unique_ptr<AtFittedTrack>> ProcessEvent() = 0;
41+
virtual void FitEvent(AtTrackingEvent *trackingEvent, AtPatternEvent *patternEvent,
42+
AtFitMetadata *fitMetadata = nullptr, AtRawEvent *rawEvent = nullptr,
43+
AtEvent *event = nullptr);
5544
virtual void Init() = 0;
5645

57-
// Mandatory to set.
58-
void SetPatternEvent(AtPatternEvent *patternEvent) { fPatternEvent = patternEvent; }
59-
void SetFitMetadata(AtFitMetadata *fitMetadata) { fFitMetadata = fitMetadata; }
60-
61-
// Optional to set.
62-
void SetRawEvent(AtRawEvent *rawEvent) { fRawEvent = rawEvent; }
63-
void SetEvent(AtEvent *event) { fEvent = event; }
46+
protected:
47+
virtual AtFittedTrack *GetFittedTrack(AtTrack *track, AtFitMetadata *fitMetadata = nullptr,
48+
AtRawEvent *rawEvent = nullptr, AtEvent *event = nullptr) = 0;
6449

65-
// Reset pointers to AtPatternEvent, AtRawEvent and AtEvent.
66-
void Reset();
50+
// Compare function that will be used to sort the fit results for a given track.
51+
virtual bool
52+
CompareTrackFitsFunction(const TrackMetadataPtr &trackMetadataA, const TrackMetadataPtr &trackMetadataB) = 0;
6753

68-
protected:
6954
ClassDef(AtFitter, 2);
7055
};
7156

72-
} // namespace AtFITTER
57+
} // namespace EventFit
7358

7459
#endif

AtReconstruction/AtFitter/AtGenfit.h

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
#ifndef ATGENFIT_H
22
#define ATGENFIT_H
33

4-
#include "AtFitter.h"
4+
#include "AtFitterOld.h"
55
#include "AtFormat.h"
66
#include "AtKinematics.h"
77
#include "AtParsers.h"
@@ -55,7 +55,9 @@ class MeasurementFactory;
5555

5656
namespace AtFITTER {
5757

58-
class AtGenfit : public AtFitter {
58+
class [[deprecated(
59+
"This still derives from the old AtFitter. Please consider updating it to the new AtFitter at some point")]] AtGenfit
60+
: public AtFitterOld {
5961
private:
6062
std::shared_ptr<genfit::AbsKalmanFitter> fKalmanFitter;
6163
TClonesArray *fGenfitTrackArray;

AtReconstruction/AtFitterTask.cxx

Lines changed: 14 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ class AtFittedTrack;
2626

2727
ClassImp(AtFitterTask);
2828

29-
AtFitterTask::AtFitterTask(std::unique_ptr<AtFITTER::AtFitter> fitter)
29+
AtFitterTask::AtFitterTask(std::unique_ptr<EventFit::AtFitter> fitter)
3030
: fInputBranchName("AtPatternEvent"), fOutputBranchName("AtTrackingEvent"), fIsPersistence(kFALSE),
3131
fTrackingEventArray(TClonesArray("AtTrackingEvent", 1)), fFitter(std::move(fitter)), fRawEventBranchName(""),
3232
fEventBranchName(""), fFitMetadataBranchName("")
@@ -113,42 +113,35 @@ void AtFitterTask::SetParContainers()
113113

114114
void AtFitterTask::Exec(Option_t *option)
115115
{
116-
fFitter->Reset();
117-
118116
if (fPatternEventArray->GetEntriesFast() == 0)
119117
return;
120118

121-
// If there is AtRawEvent available, pass it to the fitter.
122-
if (fRawEventArray) {
123-
AtRawEvent *rawEvent = dynamic_cast<AtRawEvent *>(fRawEventArray->At(0));
124-
fFitter->SetRawEvent(rawEvent);
125-
}
119+
// If there is AtRawEvent available, get it so it can be passed to the fitter.
120+
AtRawEvent *rawEvent = nullptr;
121+
if (fRawEventArray)
122+
rawEvent = dynamic_cast<AtRawEvent *>(fRawEventArray->At(0));
126123

127-
// If there is AtEvent available, pass it to the fitter.
128-
if (fEventArray) {
129-
AtEvent *event = dynamic_cast<AtEvent *>(fEventArray->At(0));
130-
fFitter->SetEvent(event);
131-
}
124+
// If there is AtEvent available, get it so it can be passed to the fitter.
125+
AtEvent *event = nullptr;
126+
if (fEventArray)
127+
event = dynamic_cast<AtEvent *>(fEventArray->At(0));
132128

133129
fTrackingEventArray.Delete();
134130

135131
auto trackingEvent = dynamic_cast<AtTrackingEvent *>(fTrackingEventArray.ConstructedAt(0));
136132
auto fitMetadata = dynamic_cast<AtFitMetadata *>(fFitMetadataArray.ConstructedAt(0));
137133

138-
LOG(info) << " AtFitterTask::Exec() : Fitting event " << fEventCnt;
134+
LOG(info) << " Fitting event " << fEventCnt;
139135

140136
AtPatternEvent *patternEvent = dynamic_cast<AtPatternEvent *>(fPatternEventArray->At(0));
141137
std::vector<AtTrack> &tracks = patternEvent->GetTrackCand();
142-
LOG(info) << " AtFitterTask::Exec() : Number of candidate tracks : " << tracks.size();
138+
LOG(info) << " Number of candidate tracks : " << tracks.size();
143139

144-
fFitter->SetPatternEvent(patternEvent);
145-
fFitter->SetFitMetadata(fitMetadata);
146-
auto fittedTracks = fFitter->ProcessEvent();
140+
fFitter->FitEvent(trackingEvent, patternEvent, fitMetadata, rawEvent, event);
147141

148-
LOG(info) << " AtFitterTask::Exec() : Number of fitted tracks : " << fittedTracks.size();
142+
auto &fittedTracks = trackingEvent->GetFittedTracks();
149143

150-
for (auto &fittedTrack : fittedTracks)
151-
trackingEvent->AddFittedTrack(std::move(fittedTrack));
144+
LOG(info) << " Number of fitted tracks : " << fittedTracks.size();
152145

153146
++fEventCnt;
154147
}

AtReconstruction/AtFitterTask.h

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -37,14 +37,14 @@ class AtTrack;
3737
namespace AtTools {
3838
class AtTrackTransformer;
3939
} // namespace AtTools
40-
namespace AtFITTER {
40+
namespace EventFit {
4141
class AtFitter;
42-
} // namespace AtFITTER
42+
} // namespace EventFit
4343

4444
class AtFitterTask : public FairTask {
4545

4646
public:
47-
AtFitterTask(std::unique_ptr<AtFITTER::AtFitter> fitter);
47+
AtFitterTask(std::unique_ptr<EventFit::AtFitter> fitter);
4848
~AtFitterTask() = default;
4949

5050
void SetInputBranch(TString branchName);
@@ -66,7 +66,7 @@ class AtFitterTask : public FairTask {
6666

6767
Bool_t fIsPersistence; //!< Persistence check variable
6868

69-
std::unique_ptr<AtFITTER::AtFitter> fFitter;
69+
std::unique_ptr<EventFit::AtFitter> fFitter;
7070
AtDigiPar *fPar{nullptr};
7171
TClonesArray *fPatternEventArray;
7272
TClonesArray fTrackingEventArray;

AtReconstruction/AtReconstructionLinkDef.h

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -42,14 +42,15 @@
4242
#pragma link C++ namespace kf;
4343
#pragma link C++ namespace kf::util;
4444

45-
#pragma link C++ namespace AtFITTER;
45+
#pragma link C++ namespace EventFit;
4646
#pragma link C++ class AtFitterTask + ;
47-
#pragma link C++ class AtFITTER::AtFitter - ;
47+
#pragma link C++ class EventFit::AtFitter - ;
4848

4949
/* Classes that depend on Genfit2 */
50+
#pragma link C++ namespace AtFITTER;
5051
#pragma link C++ class genfit::AtSpacepointMeasurement + ;
5152
#pragma link C++ class AtFITTER::AtFitterOld + ;
52-
#pragma link C++ class AtFITTER::AtFitterTaskOld + ;
53+
#pragma link C++ class AtFitterTaskOld + ;
5354
#pragma link C++ class AtFITTER::AtGenfit + ;
5455

5556
#pragma link C++ namespace MCFitter;

0 commit comments

Comments
 (0)