Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fwd Tracking upgrades for Run22 productions #731

Draft
wants to merge 11 commits into
base: main
Choose a base branch
from
4 changes: 3 additions & 1 deletion StRoot/StEvent/StEnumerations.h
Original file line number Diff line number Diff line change
Expand Up @@ -400,7 +400,9 @@ enum StVertexId {kUndefinedVtxId = kUndefinedVertexIdentifier,
kFtpcEastCalVtxId = kFtpcEastCalibrationVertexIdentifier,
kFtpcWestCalVtxId = kFtpcWestCalibrationVertexIdentifier,
kBEAMConstrVtxId,
kRejectedVtxId};
kRejectedVtxId,
kFwdVtxId
};

/*!
* \enum StRichPidFlag
Expand Down
4 changes: 2 additions & 2 deletions StRoot/StEvent/StFwdTrack.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,9 @@
#include "StEvent/StFcsCluster.h"
#include "St_base/StMessMgr.h"

StFwdTrack::StFwdTrack() {
StFwdTrack::StFwdTrack() {}

}
StFwdTrack::~StFwdTrack() {}


/* momentum
Expand Down
60 changes: 36 additions & 24 deletions StRoot/StEvent/StFwdTrack.h
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@
#include <vector>
#include "StThreeVectorD.hh"
#include "StContainers.h"
#include <climits>

class StFcsCluster;

Expand Down Expand Up @@ -77,18 +78,21 @@ struct StFwdTrackProjection : public StObject {
struct StFwdTrackSeedPoint : public StObject {
StFwdTrackSeedPoint() {}
StFwdTrackSeedPoint( StThreeVectorD xyz,
short sec,
short detsec,
unsigned short trackId,
float cov[9] ){
mXYZ = xyz;
mSector = sec;
mSector = detsec;
mTrackId = trackId;
memcpy( mCov, cov, sizeof( mCov ));
}

short detectorId() const { return mSector / 10; }
short sector() const { return mSector % 10; }

StThreeVectorD mXYZ;
unsigned short mTrackId;
short mSector;
short mSector; // = detId * 10 + sector
float mCov[9];

ClassDef(StFwdTrackSeedPoint, 1)
Expand All @@ -98,6 +102,8 @@ class StFwdTrack : public StObject {

public:
StFwdTrack( );
// dtor needed for releasing associations
~StFwdTrack( );

vector<StFwdTrackProjection> mProjections;
vector<StFwdTrackSeedPoint> mFTTPoints;
Expand All @@ -124,11 +130,14 @@ class StFwdTrack : public StObject {

// Number of fit points used by GenFit
short numberOfFitPoints() const;
// unsigned int numberOfPossibleFitPoints() const;


// Number of points used in the track seed step
short numberOfSeedPoints() const;

UShort_t idTruth() const { return mIdTruth; }
UShort_t qaTruth() const { return mQATruth; }
StThreeVectorD dca() const { return StThreeVectorD( mDCA[0], mDCA[1], mDCA[2] ); }
UChar_t vertexIndex() const { return mVtxIndex; }
bool isPrimary() const { return mVtxIndex != UCHAR_MAX; }

void setPrimaryMomentum( StThreeVectorD mom ) { mPrimaryMomentum = mom; }
void setDidFitConverge( bool lDidFitConverge ) { mDidFitConverge = lDidFitConverge; }
Expand All @@ -140,6 +149,10 @@ class StFwdTrack : public StObject {
void setNDF( float lNDF ) { mNDF = lNDF;}
void setPval( float lPval ) { mPval = lPval;}
void setCharge( short lCharge ) { mCharge = lCharge;}
void setMc( UShort_t idt, UShort_t qual ) { mIdTruth = idt; mQATruth = qual; }
void setDCA( StThreeVectorD dca ) { mDCA[0] = dca.x(); mDCA[1] = dca.y(); mDCA[2] = dca.z(); }
void setDCA( float dcaX, float dcaY, float dcaZ ) { mDCA[0] = dcaX; mDCA[1] = dcaY; mDCA[2] = dcaZ; }
void setVtxIndex( UChar_t vtxIndex ) { mVtxIndex = vtxIndex; }

// ECAL clusters
StPtrVecFcsCluster& ecalClusters();
Expand All @@ -152,29 +165,28 @@ class StFwdTrack : public StObject {
void addHcalCluster(StFcsCluster* p);
void sortHcalClusterByET();


protected:



// Track quality and convergence
bool mDidFitConverge;
bool mDidFitConvergeFully;
short mNumberOfFailedPoints;
short mNumberOfSeedPoints;
short mNumberOfFitPoints;
float mChi2;
float mNDF;
float mPval;
short mCharge;
StThreeVectorD mPrimaryMomentum;
bool mDidFitConverge; // did the fit converge
bool mDidFitConvergeFully; // did the fit converge fully (fwd and bkw)
short mNumberOfFailedPoints; // number of points that failed to converge
short mNumberOfSeedPoints; // number of points used in the seed step
short mNumberOfFitPoints; // number of points used in the fit (seed + vertex)
float mChi2; // chi2 of the fit
float mNDF; // number of degrees of freedom
float mPval; // p-value of the fit
short mCharge; // charge of the track
StThreeVectorD mPrimaryMomentum; // momentum at the primary vertex
StPtrVecFcsCluster mEcalClusters; // ECAL clusters
StPtrVecFcsCluster mHcalClusters; // HCAL clusters

UShort_t mIdTruth; // MC track id
UShort_t mQATruth; // MC track quality (percentage of hits coming from corresponding MC track)

StPtrVecFcsCluster mEcalClusters;
StPtrVecFcsCluster mHcalClusters;
float mDCA[3]; // DCA to the primary vertex
UChar_t mVtxIndex;

ClassDef(StFwdTrack,2)

ClassDef(StFwdTrack,3)
};

#endif
Expand Down
9 changes: 9 additions & 0 deletions StRoot/StEvent/StFwdTrackCollection.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,15 @@

ClassImp(StFwdTrackCollection)

StFwdTrackCollection::StFwdTrackCollection(){}

StFwdTrackCollection::~StFwdTrackCollection(){
for (unsigned int i=0; i<mTracks.size(); i++) {
delete mTracks[i];
mTracks[i] = 0;
}
}

void StFwdTrackCollection::addTrack( StFwdTrack *track ) {
mTracks.push_back( track );
}
Expand Down
6 changes: 2 additions & 4 deletions StRoot/StEvent/StFwdTrackCollection.h
Original file line number Diff line number Diff line change
Expand Up @@ -18,16 +18,14 @@ class StFwdTrack;

class StFwdTrackCollection : public StObject {
public:
// StFwdTrackCollection();
// ~StFwdTrackCollection();
StFwdTrackCollection();
~StFwdTrackCollection();

void addTrack(StFwdTrack*); // Add a track
StSPtrVecFwdTrack& tracks(); // Return the track list
const StSPtrVecFwdTrack& tracks() const; // Return the track list
unsigned int numberOfTracks() const; // Return the number of tracks

// void print(int option=1);

private:
StSPtrVecFwdTrack mTracks; //tracks

Expand Down
2 changes: 2 additions & 0 deletions StRoot/StEvent/StVertex.h
Original file line number Diff line number Diff line change
Expand Up @@ -128,13 +128,15 @@ class StVertex : public StMeasuredPoint {
virtual void setKinkVertex() {SETBIT(mFlag,kKinkVtxId);}
virtual void setBeamConstrained() {SETBIT(mFlag,kBEAMConstrVtxId);}
virtual void setRejected() {SETBIT(mFlag,kRejectedVtxId);}
virtual void setFwdVertex() {SETBIT(mFlag,kFwdVtxId);}

bool isPrimaryVtx() const {return TESTBIT(mFlag,kPrimaryVtxId);}
bool isV0Vtx() const {return TESTBIT(mFlag,kV0VtxId);}
bool isXiVtx() const {return TESTBIT(mFlag,kXiVtxId);}
bool isKinkVertex() const {return TESTBIT(mFlag,kKinkVtxId);}
bool isBeamConstrained() const {return TESTBIT(mFlag,kBEAMConstrVtxId);}
bool isRejected() const {return TESTBIT(mFlag,kRejectedVtxId);}
bool isFwdVtx() const {return TESTBIT(mFlag,kFwdVtxId);}
void Print(Option_t *option="") const {cout << option << *this << endl; }
static void SetNoFitPointCutForGoodTrack(UInt_t val) {fgNoFitPointCutForGoodTrack = val;}
static UInt_t NoFitPointCutForGoodTrack() {return fgNoFitPointCutForGoodTrack;}
Expand Down
Loading