// Skip tracks which have no TRD signal at all
- if (t->GetTRDsignal() == 0.) continue;
+ if (t->GetTRDsignal()<1.e-5) continue;
// Loop over detector layers
mom = 0.;
Double_t threshold = thresholdHist->GetBinContent(GetMomentumBin(track->P()) + 1);
// Do Decision
- Double_t pid_probs[5];
- track->GetTRDpid(pid_probs);
- if(pid_probs[AliPID::kElectron] >= threshold) return kTRUE;
+ Double_t pidProbs[5];
+ track->GetTRDpid(pidProbs);
+ if(pidProbs[AliPID::kElectron] >= threshold) return kTRUE;
return kFALSE;
}
//if ( fPIDquality != inTrack->GetPIDquality() ) return kFALSE;
- for(Int_t i = 0; i < AliPID::kSPECIES; i++){
- if ( fPID[i] != inTrack->GetPID(i) ) return kFALSE;
- }
-
- for (Int_t i = 0; i < 3; i++){
- if ( fBudget[i] != inTrack->GetBudget(i) ) return kFALSE;
- }
- if ( fDE != inTrack->GetEdep() ) return kFALSE;
- if ( fFakeRatio != inTrack->GetFakeRatio() ) return kFALSE;
- if ( fChi2 != inTrack->GetChi2() ) return kFALSE;
- if ( fMass != inTrack->GetMass() ) return kFALSE;
- if ( fLab != inTrack->GetLabel() ) return kFALSE;
- if ( fN != inTrack->GetNumberOfClusters() ) return kFALSE;
- if ( AliKalmanTrack::GetIntegratedLength() != inTrack->GetIntegratedLength() ) return kFALSE;
-
- if ( GetX() != inTrack->GetX() ) return kFALSE;
- if ( GetAlpha() != inTrack->GetAlpha() ) return kFALSE;
- const Double_t *inP = inTrack->GetParameter();
- const Double_t *curP = GetParameter();
- for (Int_t i = 0; i < 5; i++){
- if ( curP[i] != inP[i]) return kFALSE;
- }
- const Double_t *inC = inTrack->GetCovariance();
- const Double_t *curC = GetCovariance();
- for (Int_t i = 0; i < 15; i++){
- if ( curC[i] != inC[i]) return kFALSE;
- }
+ if(memcmp(fPID, inTrack->fPID, AliPID::kSPECIES*sizeof(Double32_t))) return kFALSE;
+ if(memcmp(fBudget, inTrack->fBudget, 3*sizeof(Double32_t))) return kFALSE;
+ if(memcmp(&fDE, &inTrack->fDE, sizeof(Double32_t))) return kFALSE;
+ if(memcmp(&fFakeRatio, &inTrack->fFakeRatio, sizeof(Double32_t))) return kFALSE;
+ if(memcmp(&fChi2, &inTrack->fChi2, sizeof(Double32_t))) return kFALSE;
+ if(memcmp(&fMass, &inTrack->fMass, sizeof(Double32_t))) return kFALSE;
+ if( fLab != inTrack->fLab ) return kFALSE;
+ if( fN != inTrack->fN ) return kFALSE;
+ Double32_t l(0.), in(0.);
+ l = GetIntegratedLength(); in = inTrack->GetIntegratedLength();
+ if(memcmp(&l, &in, sizeof(Double32_t))) return kFALSE;
+ l=GetX(); in=inTrack->GetX();
+ if(memcmp(&l, &in, sizeof(Double32_t))) return kFALSE;
+ l = GetAlpha(); in = inTrack->GetAlpha();
+ if(memcmp(&l, &in, sizeof(Double32_t))) return kFALSE;
+ if(memcmp(GetParameter(), inTrack->GetParameter(), 5*sizeof(Double32_t))) return kFALSE;
+ if(memcmp(GetCovariance(), inTrack->GetCovariance(), 15*sizeof(Double32_t))) return kFALSE;
for (Int_t iTracklet = 0; iTracklet < kNplane; iTracklet++){
AliTRDseedV1 *curTracklet = fTracklet[iTracklet];
// "xrho" - thickness*density [g/cm^2]
//
- if (xk == GetX()) return kTRUE;
+ if (TMath::Abs(xk - GetX())<1.e-2) return kTRUE; // 100mum limit
Double_t xyz0[3] = {GetX(), GetY(), GetZ()}, // track position BEFORE propagation
b[3]; // magnetic field
// //
///////////////////////////////////////////////////////////////////////////////
-//#ifndef ALIKALMANTRACK_H
+#ifndef ALIKALMANTRACK_H
#include "AliKalmanTrack.h"
-//#endif
+#endif
-//#ifndef ALITRDSEEDV1_H
+#ifndef ALITRDSEEDV1_H
#include "AliTRDseedV1.h"
-//#endif
+#endif
-class AliTRDcluster;
class AliESDtrack;
+class AliTRDcluster;
class AliTRDReconstructor;
class AliTRDtrackV1 : public AliKalmanTrack
{
- friend class AliHLTTRDTrack;
+ friend class AliHLTTRDTrack; // allow HLT special access
public:
enum ETRDtrackSize {
kNdet = AliTRDgeometry::kNdet
}
-//____________________________________________________
-void AliTRDtrackerDebug::Draw(Option_t *)
-{
-// steer draw function
-}
-
-
//____________________________________________________
Bool_t AliTRDtrackerDebug::Init()
{
AliTRDtrackerDebug();
~AliTRDtrackerDebug();
- void Draw(Option_t *);
-
Bool_t Init();
Bool_t Open(const char *method);
Int_t Process();
//if(points) printf("First marker point @ x[%d] = %f\n", ip, points[ip].GetX());
- AliTRDseedV1 tracklet, *ptrTracklet = NULL;
+ AliTRDseedV1 tracklet;
+ AliTRDseedV1 *ptrTracklet = NULL;
//Loop through the TRD planes
for (Int_t jplane = 0; jplane < kNPlanes; jplane++) {
}
//_________________________________________________________________________
-Float_t AliTRDtrackerV1::CalculateChi2Z(AliTRDseedV1 *tracklets, Double_t offset, Double_t slope, Double_t xref)
+Float_t AliTRDtrackerV1::CalculateChi2Z(const AliTRDseedV1 *tracklets, Double_t offset, Double_t slope, Double_t xref)
{
//
// Calculates the chi2-value of the track in z-Direction including tilting pad correction.
//____________________________________________________________________
void AliTRDtrackerV1::UnsetTrackletsTrack(const AliTRDtrackV1 * const track)
{
+// Remove tracklets from tracker list attached to "track"
Int_t idx(-1);
for(Int_t il(0); il<kNPlanes; il++){
if((idx = track->GetTrackletIndex(il)) < 0) continue;
//
Double_t det = fSums[0] * fSums[4] - fSums[1] *fSums[1];
- if(det==0) return kFALSE;
+ if(TMath::Abs(det)<1.e-30) return kFALSE;
// for(Int_t isum = 0; isum < 5; isum++)
// printf("fSums[%d] = %f\n", isum, fSums[isum]);
static Bool_t AdjustSector(AliTRDtrackV1 *const track);
Double_t BuildSeedingConfigs(AliTRDtrackingChamber **stack, Int_t *configs);
Int_t BuildTrackingContainers();
- static Float_t CalculateChi2Z(AliTRDseedV1 *tracklets, Double_t offset, Double_t slope, Double_t xref);
+ static Float_t CalculateChi2Z(const AliTRDseedV1 *tracklets, Double_t offset, Double_t slope, Double_t xref);
Int_t Clusters2TracksSM(Int_t sector, AliESDEvent *esd);
Int_t Clusters2TracksStack(AliTRDtrackingChamber **stack, TClonesArray * const esdTrackList);
AliTRDseedV1* GetTracklet(AliTRDtrackV1 *const trk, Int_t plane, Int_t &idx);