fVertex(0x0),
fFitFMin(-1.),
fMatchTrigger(kFALSE),
+ floTrgNum(-1),
fChi2MatchTrigger(0.),
fTrackID(0)
{
fVertex(0x0),
fFitFMin(-1.),
fMatchTrigger(kFALSE),
+ floTrgNum(-1),
fChi2MatchTrigger(0.),
fTrackID(0)
{
fVertex(0x0),
fFitFMin(theMUONTrack.fFitFMin),
fMatchTrigger(theMUONTrack.fMatchTrigger),
+ floTrgNum(theMUONTrack.floTrgNum),
fChi2MatchTrigger(theMUONTrack.fChi2MatchTrigger),
fTrackID(theMUONTrack.fTrackID)
{
fFitWithVertex = theMUONTrack.fFitWithVertex;
fFitFMin = theMUONTrack.fFitFMin;
fMatchTrigger = theMUONTrack.fMatchTrigger;
+ floTrgNum = theMUONTrack.floTrgNum;
fChi2MatchTrigger = theMUONTrack.fChi2MatchTrigger;
fTrackID = theMUONTrack.fTrackID;
//", NonBendSlope=" << setw(8) << setprecision(5) << GetNonBendingSlope()*180./TMath::Pi() <<
//", BendSlope=" << setw(8) << setprecision(5) << GetBendingSlope()*180./TMath::Pi() <<
", Match2Trig=" << setw(1) << GetMatchTrigger() <<
+ ", LoTrgNum=" << setw(3) << GetLoTrgNum() <<
", Chi2-tracking-trigger=" << setw(8) << setprecision(5) << GetChi2MatchTrigger() << endl ;
GetTrackParamAtHit()->First()->Print("full");
}
void SetFitFMin(Double_t chi2) { fFitFMin = chi2; }
/// return kTrue if track matches with trigger track, kFalse if not
Bool_t GetMatchTrigger(void) const {return fMatchTrigger;}
+ /// returns the local trigger number corresponding to the trigger track
+ Int_t GetLoTrgNum(void) const {return floTrgNum;}
/// set the flag telling whether track matches with trigger track or not
- void SetMatchTrigger(Bool_t matchTrigger) {fMatchTrigger = matchTrigger;}
+ void SetMatchTrigger(Bool_t matchTrigger) {fMatchTrigger = matchTrigger;}
+ /// set the local trigger number corresponding to the trigger track
+ void SetLoTrgNum(Int_t loTrgNum) {floTrgNum = loTrgNum;}
/// return the chi2 of trigger/track matching
Double_t GetChi2MatchTrigger(void) const {return fChi2MatchTrigger;}
/// set the chi2 of trigger/track matching
Double_t fFitFMin; ///< minimum value of the function minimized by the fit
Bool_t fMatchTrigger; ///< 1 if track matches with trigger track, 0 if not
+ Int_t floTrgNum; ///< the number of the corresponding loTrg, -1 if no matching
Double_t fChi2MatchTrigger; ///< chi2 of trigger/track matching
Int_t fTrackID; ///< track ID = track number in TrackRefs
#include "AliMUONTriggerTrack.h"
#include "AliMUONTrackReconstructor.h"
-
//__________________________________________________________________________
AliMUONTriggerTrack::AliMUONTriggerTrack()
: TObject(),
fy11(0),
fthetax(0),
fthetay(0),
+ floTrgNum(0),
fGTPattern(0)
{
/// default ctr
}
//__________________________________________________________________________
-AliMUONTriggerTrack::AliMUONTriggerTrack(Float_t x11, Float_t y11, Float_t thetax, Float_t thetay, Long_t theGTPattern)
+AliMUONTriggerTrack::AliMUONTriggerTrack(Float_t x11, Float_t y11, Float_t thetax, Float_t thetay, Int_t loTrgNum, Long_t theGTPattern)
: TObject(),
fx11(x11),
fy11(y11),
fthetax(thetax),
fthetay(thetay),
+ floTrgNum(loTrgNum),
fGTPattern(theGTPattern)
{
/// ctor from local trigger output
fy11(theMUONTriggerTrack.fy11),
fthetax(theMUONTriggerTrack.fthetax),
fthetay(theMUONTriggerTrack.fthetay),
+ floTrgNum(theMUONTriggerTrack.floTrgNum),
fGTPattern(theMUONTriggerTrack.fGTPattern)
{
///
fy11 = theMUONTriggerTrack.fy11;
fthetax = theMUONTriggerTrack.fthetax;
fthetay = theMUONTriggerTrack.fthetay;
+ floTrgNum = theMUONTriggerTrack.floTrgNum;
fGTPattern = theMUONTriggerTrack.fGTPattern;
return *this;
}
+
virtual ~AliMUONTriggerTrack(); // Destructor
AliMUONTriggerTrack (const AliMUONTriggerTrack& AliMUONTriggerTrack); // copy constructor
AliMUONTriggerTrack& operator=(const AliMUONTriggerTrack& AliMUONTriggerTrack); // assignment operator
- AliMUONTriggerTrack(Float_t x11, Float_t y11, Float_t thetax, Float_t thetay,
- Long_t theGTPattern);
-
+ AliMUONTriggerTrack(Float_t x11, Float_t y11, Float_t thetax, Float_t thetay, Int_t iloTrg, Long_t theGTPattern);
+
// getter
Float_t GetX11() const {return fx11;}
Float_t GetY11() const {return fy11;}
Float_t GetThetax() const {return fthetax;}
- Float_t GetThetay() const {return fthetay;}
+ Float_t GetThetay() const {return fthetay;}
+ Int_t GetLoTrgNum() const {return floTrgNum;}
// setter
void SetX11(Float_t x) {fx11 = x;}
void SetY11(Float_t y) {fy11 = y;}
void SetThetax(Float_t tx) {fthetax = tx;}
- void SetThetay(Float_t ty) {fthetay = ty;}
+ void SetThetay(Float_t ty) {fthetay = ty;}
+ void SetLoTrgNum(Int_t loTrgNum) {floTrgNum = loTrgNum;}
void SetGTPattern(UChar_t pat) {fGTPattern = pat;}
UChar_t GetGTPattern() const {return fGTPattern;}
Float_t fy11; ///< y position of fired X strip in MC11
Float_t fthetax; ///< track theta angle in X
Float_t fthetay; ///< track theta angle in Y
+ Int_t floTrgNum; ///< local trigger number
UChar_t fGTPattern; ///< Global trigger pattern (do not work with static statement)
- ClassDef(AliMUONTriggerTrack, 3) // Reconstructed trigger track in ALICE dimuon spectrometer
+ ClassDef(AliMUONTriggerTrack, 4) // Reconstructed trigger track in ALICE dimuon spectrometer
};
#endif
TClonesArray *recTriggerTracks = fMUONData->RecTriggerTracks();
Bool_t matchTrigger;
+ Int_t loTrgNum;
Double_t distTriggerTrack[3];
Double_t xTrack, yTrack, ySlopeTrack, chi2MatchTrigger, minChi2MatchTrigger, chi2;
while (track) {
matchTrigger = kFALSE;
chi2MatchTrigger = 0.;
-
+ loTrgNum = -1;
+
trackParam = *((AliMUONTrackParam*) (track->GetTrackParamAtHit()->Last()));
AliMUONTrackExtrap::ExtrapToZ(&trackParam, AliMUONConstants::DefaultChamberZ(10)); // extrap to 1st trigger chamber
distTriggerTrack[0] = (triggerTrack->GetX11()-xTrack)/kDistSigma[0];
distTriggerTrack[1] = (triggerTrack->GetY11()-yTrack)/kDistSigma[1];
distTriggerTrack[2] = (TMath::Tan(triggerTrack->GetThetay())-ySlopeTrack)/kDistSigma[2];
+ loTrgNum=triggerTrack->GetLoTrgNum();
chi2 = 0.;
for (Int_t iVar = 0; iVar < 3; iVar++) chi2 += distTriggerTrack[iVar]*distTriggerTrack[iVar];
chi2 /= 3.; // Normalized Chi2: 3 degrees of freedom (X,Y,slopeY)
}
track->SetMatchTrigger(matchTrigger);
+ track->SetLoTrgNum(loTrgNum);
track->SetChi2MatchTrigger(chi2MatchTrigger);
track = (AliMUONTrack*) fRecTracksPtr->After(track);
fTriggerTrack->SetThetax(thetax);
fTriggerTrack->SetThetay(thetay);
fTriggerTrack->SetGTPattern(gloTrigPat);
+ fTriggerTrack->SetLoTrgNum(i);
fMUONData->AddRecTriggerTrack(*fTriggerTrack);
} // end of loop on Local Trigger