Skip to content

Commit ff9dec7

Browse files
committed
Refactored a bunch of the code related to the fitting step of the analysis.
1 parent 96754fd commit ff9dec7

35 files changed

Lines changed: 1854 additions & 436 deletions

AtData/AtDataLinkDef.h

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,5 +43,12 @@
4343
#pragma link C++ enum AtPatterns::PatternType;
4444
#pragma link C++ function AtPatterns::CreatePattern;
4545

46+
#pragma link C++ class AtFitResult + ;
47+
#pragma link C++ class AtFitTrackResult + ;
4648
#pragma link C++ class MCFitter::AtMCResult + ;
49+
50+
#pragma link C++ class AtTrackingEventOld + ;
51+
#pragma link C++ class AtFittedTrackOld + ;
52+
#pragma link C++ class MCFitter::AtMCResultOld + ;
53+
4754
#endif

AtData/AtFitResult.cxx

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
#include "AtFitResult.h"
2+
3+
ClassImp(AtFitResult);

AtData/AtFitResult.h

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
#ifndef ATFITRESULT_H
2+
#define ATFITRESULT_H
3+
4+
#include "AtFitTrackResult.h"
5+
6+
#include <FairLogger.h>
7+
8+
#include <Rtypes.h> // for Double_t, THashConsistencyHolder, ClassDefOverride
9+
#include <TObject.h>
10+
11+
#include <functional>
12+
#include <map>
13+
#include <memory>
14+
#include <utility>
15+
16+
class TBuffer;
17+
class TClass;
18+
class TMemberInspector;
19+
20+
/**
21+
* Class for storing the result of the fit for the entire AtTrackingEvent from an AtFitter class.
22+
*/
23+
class AtFitResult : public TObject {
24+
public:
25+
using TrackResultPtr = std::unique_ptr<AtFitTrackResult>;
26+
using TrackResultsVector = std::vector<TrackResultPtr>;
27+
using ResultsMap = std::map<Int_t, TrackResultsVector>;
28+
29+
protected:
30+
// Vector to store the results for all different fits done to all tracks in the event.
31+
ResultsMap fResults;
32+
33+
// Event ID for which this fit was done.
34+
ULong_t fEventID;
35+
36+
public:
37+
AtFitResult() = default;
38+
~AtFitResult() = default;
39+
40+
void SetTrackResultsVector(Int_t trackID, TrackResultsVector results) { fResults[trackID] = std::move(results); }
41+
42+
void SetEventID(ULong_t id) { fEventID = id; }
43+
44+
TrackResultsVector &GetTrackResultsVector(Int_t trackID) { return fResults.at(trackID); }
45+
46+
ClassDefOverride(AtFitResult, 1);
47+
};
48+
49+
#endif

AtData/AtFitTrackResult.cxx

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
#include "AtFitTrackResult.h"
2+
3+
#include <iostream>
4+
ClassImp(AtFitTrackResult);
5+
6+
void AtFitTrackResult::Print() const
7+
8+
{
9+
std::cout << " Fit result for track with ID " << fTrackID << ":" << std::endl;
10+
11+
std::cout << " Statistics: " << std::endl;
12+
std::cout << " PValue = " << fPValue << std::endl;
13+
std::cout << " Chi2 = " << fChi2 << std::endl;
14+
std::cout << " NDF = " << fNdf << std::endl;
15+
std::cout << " Converged = " << fFitConverged << std::endl;
16+
}

AtData/AtFitTrackResult.h

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
#ifndef ATFITTRACKRESULT_H
2+
#define ATFITTRACKRESULT_H
3+
4+
#include <Rtypes.h> // for Double_t, THashConsistencyHolder, ClassDefOverride
5+
#include <TObject.h>
6+
7+
class TBuffer;
8+
class TClass;
9+
class TMemberInspector;
10+
11+
/**
12+
* Class for storing the result of the fit of an AtTrack from an AtFitter class.
13+
*/
14+
class AtFitTrackResult : public TObject {
15+
protected:
16+
// Copy of the statistics parameters which are also saved in AtFittedTrack.
17+
Double_t fPValue{0};
18+
Double_t fChi2{0};
19+
Int_t fNdf{0};
20+
Bool_t fFitConverged{false};
21+
22+
// The track ID for which this fit was done for.
23+
Int_t fTrackID{-1};
24+
25+
public:
26+
AtFitTrackResult() = default;
27+
~AtFitTrackResult() = default;
28+
29+
void SetPValue(Double_t value) { fPValue = value; }
30+
void SetChi2(Double_t value) { fChi2 = value; }
31+
void SetNdf(Int_t value) { fNdf = value; }
32+
void SetFitConverged(Bool_t value) { fFitConverged = value; }
33+
void SetTrackID(Int_t value) { fTrackID = value; }
34+
35+
Double_t GetPValue() const { return fPValue; }
36+
Double_t GetChi2() const { return fChi2; }
37+
Int_t GetNdf() const { return fNdf; }
38+
Bool_t GetFitConverged() const { return fFitConverged; }
39+
Int_t GetTrackID() const { return fTrackID; }
40+
41+
virtual void Print() const;
42+
43+
ClassDefOverride(AtFitTrackResult, 1);
44+
};
45+
46+
#endif

AtData/AtFittedTrack.cxx

Lines changed: 28 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -1,45 +1,41 @@
11
#include "AtFittedTrack.h"
22

3-
#include <Rtypes.h>
4-
5-
#include <iterator>
6-
#include <numeric>
7-
83
ClassImp(AtFittedTrack);
94

10-
using XYZVector = ROOT::Math::XYZVector;
11-
12-
const std::tuple<Float_t, Float_t, Float_t, Float_t, Float_t, Float_t, Float_t> AtFittedTrack::GetEnergyAngles()
5+
void AtFittedTrack::SetKinematics(int particleIdx, Double_t energy, Double_t theta, Double_t phi, Double_t energyxtr,
6+
Double_t thetaxtr, Double_t phixtr)
137
{
14-
return std::forward_as_tuple(fEnergy, fEnergyXtr, fTheta, fPhi, fEnergyPRA, fThetaPRA, fPhiPRA);
8+
while (particleIdx >= fKinematics.size()) {
9+
Kinematics newKinematics;
10+
fKinematics.push_back(newKinematics);
11+
}
12+
13+
fKinematics[particleIdx].kineticEnergy = energy;
14+
fKinematics[particleIdx].theta = theta;
15+
fKinematics[particleIdx].phi = phi;
16+
fKinematics[particleIdx].kineticEnergyXtr = energyxtr;
17+
fKinematics[particleIdx].thetaXtr = thetaxtr;
18+
fKinematics[particleIdx].phiXtr = phixtr;
1519
}
1620

17-
const std::tuple<XYZVector, XYZVector, XYZVector> AtFittedTrack::GetVertices()
21+
void AtFittedTrack::SetParticleInfo(int particleIdx, std::string pdg, Int_t charge, Double_t mass)
1822
{
19-
return std::forward_as_tuple(fInitialPos, fInitialPosPRA, fInitialPosXtr);
23+
while (particleIdx >= fParticleInfo.size()) {
24+
ParticleInfo newParticleInfo;
25+
fParticleInfo.push_back(newParticleInfo);
26+
}
27+
28+
fParticleInfo[particleIdx].idPDG = TString(pdg);
29+
fParticleInfo[particleIdx].charge = charge;
30+
fParticleInfo[particleIdx].mass = mass;
2031
}
2132

22-
const std::tuple<Float_t, Float_t, Float_t, Float_t, Float_t, Bool_t> AtFittedTrack::GetStats()
33+
void AtFittedTrack::SetVertex(int particleIdx, XYZVector point)
2334
{
24-
return std::forward_as_tuple(fPValue, fChi2, fBChi2, fNdf, fBNdf, fFitConverged);
25-
}
35+
while (particleIdx >= fVertex.size()) {
36+
XYZVector newVertex;
37+
fVertex.push_back(newVertex);
38+
}
2639

27-
const std::tuple<Int_t, Float_t, Float_t, Float_t, std::string, Int_t> AtFittedTrack::GetTrackProperties()
28-
{
29-
return std::forward_as_tuple(fCharge, fBrho, fELossADC, fDEdxADC, fPDG, fTrackPoints);
40+
fVertex[particleIdx] = point;
3041
}
31-
32-
const std::tuple<Float_t, Float_t> AtFittedTrack::GetIonChamber()
33-
{
34-
return std::forward_as_tuple(fIonChamberEnergy, fIonChamberTime);
35-
}
36-
37-
const std::tuple<Float_t, Float_t> AtFittedTrack::GetExcitationEnergy()
38-
{
39-
return std::forward_as_tuple(fExcitationEnergy, fExcitationEnergyXtr);
40-
}
41-
42-
const std::tuple<Float_t, Float_t, Float_t> AtFittedTrack::GetDistances()
43-
{
44-
return std::forward_as_tuple(fDistanceXtr, fTrackLength, fPOCAXtr);
45-
}

0 commit comments

Comments
 (0)