ClassImp(AliMUONTrackReconstructor) // Class implementation in ROOT context
- //__________________________________________________________________________
-AliMUONTrackReconstructor::AliMUONTrackReconstructor(AliLoader* loader)
+//__________________________________________________________________________
+AliMUONTrackReconstructor::AliMUONTrackReconstructor(AliLoader* loader, AliMUONData* data)
: TObject()
{
// Constructor for class AliMUONTrackReconstructor
fLoader = loader;
// initialize container
- fMUONData = new AliMUONData(fLoader,"MUON","MUON");
+ // fMUONData = new AliMUONData(fLoader,"MUON","MUON");
+ fMUONData = data;
return;
}
{
// To reconstruct one event
AliDebug(1,"Enter EventReconstruct");
+ ResetTracks(); //AZ
+ ResetTrackHits(); //AZ
+ ResetSegments(); //AZ
+ ResetHitsForRec(); //AZ
MakeEventToBeReconstructed();
MakeSegments();
MakeTracks();
AliRunLoader *runLoader = fLoader->GetRunLoader();
AliDebug(1,"Enter MakeEventToBeReconstructed");
- ResetHitsForRec();
+ //AZ ResetHitsForRec();
if (fRecTrackRefHits == 1) {
// Reconstruction from track ref. hits
// Back to the signal file
(fNHitsForRecPerChamber[ch])++;
// more information into HitForRec
// resolution: info should be already in raw cluster and taken from it ????
- hitForRec->SetBendingReso2(fBendingResolution * fBendingResolution);
- hitForRec->SetNonBendingReso2(fNonBendingResolution * fNonBendingResolution);
- //hitForRec->SetBendingReso2(clus->GetErrY() * clus->GetErrY());
- //hitForRec->SetNonBendingReso2(clus->GetErrX() * clus->GetErrX());
+ //hitForRec->SetBendingReso2(fBendingResolution * fBendingResolution);
+ //hitForRec->SetNonBendingReso2(fNonBendingResolution * fNonBendingResolution);
+ hitForRec->SetBendingReso2(clus->GetErrY() * clus->GetErrY());
+ hitForRec->SetNonBendingReso2(clus->GetErrX() * clus->GetErrX());
// original raw cluster
hitForRec->SetChamberNumber(ch);
hitForRec->SetHitNumber(iclus);
// To make the list of segments in all stations,
// from the list of hits to be reconstructed
AliDebug(1,"Enter MakeSegments");
- ResetSegments();
+ //AZ ResetSegments();
// Loop over stations
Int_t nb = (fTrackMethod != 1) ? 3 : 0; //AZ
for (Int_t st = nb; st < AliMUONConstants::NTrackingCh()/2; st++)
// from the list of segments and points in all stations
AliDebug(1,"Enter MakeTracks");
// The order may be important for the following Reset's
- ResetTracks();
- ResetTrackHits();
+ //AZ ResetTracks();
+ //AZ ResetTrackHits();
if (fTrackMethod != 1) { //AZ - Kalman filter
MakeTrackCandidatesK();
if (fRecTracksPtr->GetEntriesFast() == 0) return;
AliMUONTrackK *trackK;
AliDebug(1,"Enter MakeTrackCandidatesK");
- // Reset the TClonesArray of reconstructed tracks
- if (fRecTracksPtr) fRecTracksPtr->Delete();
- // Delete in order that the Track destructors are called,
- // hence the space for the TClonesArray of pointers to TrackHit's is freed
- fNRecTracks = 0;
- AliMUONTrackK a(this, fHitsForRecPtr); // bad idea ???
+ AliMUONTrackK a(this, fHitsForRecPtr);
// Loop over stations(1...) 5 and 4
for (istat=4; istat>=3; istat--) {
// Loop over segments in the station
ok = kTRUE;
if (trackK->GetRecover() == 0) hit = (AliMUONHitForRec*)
- trackK->GetHitOnTrack()->Last(); // last hit
- //else hit = (AliMUONHitForRec*) (*trackK->GetHitOnTrack())[1]; // 2'nd hit
+ trackK->GetTrackHits()->Last(); // last hit
else hit = trackK->GetHitLastOk(); // hit where track stopped
if (hit) ichamBeg = hit->GetChamberNumber();
ichamEnd = 0;
chamBits = 0;
Double_t chi2max = 0;
for (Int_t i=0; i<trackK->GetNTrackHits(); i++) {
- hit = (AliMUONHitForRec*) (*trackK->GetHitOnTrack())[i];
+ hit = (AliMUONHitForRec*) (*trackK->GetTrackHits())[i];
chamBits |= BIT(hit->GetChamberNumber());
if (trackK->GetChi2PerPoint(i) > chi2max) chi2max = trackK->GetChi2PerPoint(i);
}
AliMUONHitForRec *hit1, *hit2, *hit;
track1 = (AliMUONTrackK*) ((*fRecTracksPtr)[icand]);
- hit1 = (AliMUONHitForRec*) (*track1->GetHitOnTrack())[0]; // 1'st hit
- hit2 = (AliMUONHitForRec*) (*track1->GetHitOnTrack())[1]; // 2'nd hit
+ hit1 = (AliMUONHitForRec*) (*track1->GetTrackHits())[0]; // 1'st hit
+ hit2 = (AliMUONHitForRec*) (*track1->GetTrackHits())[1]; // 2'nd hit
for (Int_t i=0; i<icand; i++) {
track2 = (AliMUONTrackK*) ((*fRecTracksPtr)[i]);
} else {
Int_t nSame = 0;
for (Int_t j=0; j<track2->GetNTrackHits(); j++) {
- hit = (AliMUONHitForRec*) (*track2->GetHitOnTrack())[j];
+ hit = (AliMUONHitForRec*) (*track2->GetTrackHits())[j];
if (hit == hit1 || hit == hit2) {
nSame++;
if (nSame == 2) return kFALSE;
fRecTracksPtr = new TClonesArray("AliMUONTrackK", 10);
if (fTrackMethod == 2) cout << " *** Tracking with the Kalman filter *** " << endl;
else cout << " *** Combined cluster / track finder ***" << endl;
- } else cout << " *** Traditional tracking *** " << endl;
+ } else cout << " *** Original tracking *** " << endl;
}