]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - MUON/AliMUONRecoCheck.cxx
Comments for Doxygen
[u/mrichter/AliRoot.git] / MUON / AliMUONRecoCheck.cxx
index 0f3cddc84e5c3d916663fd492ccc871e65ae9e12..5fd1199ce9920c38011b3e0a8c282cb3f9ecc080 100644 (file)
 
 /* $Id$ */
 
-// -----------------------
-// Class AliMUONRecoCheck
-// -----------------------
-// Utility class to check the muon reconstruction. Reconstructed tracks are compared
-// to reference tracks. The reference tracks are built from AliTrackReference for the
-// hit in chamber (0..9) and from kinematics for the vertex parameters.     
+/// \class AliMUONRecoCheck
+/// \brief Utility class to check reconstruction
+/// Reconstructed tracks are compared to reference tracks. 
+/// The reference tracks are built from AliTrackReference for the
+/// hit in chamber (0..9) and from kinematics for the vertex parameters.     
 
 #include "AliMUON.h"
 #include "AliMUONRecoCheck.h"
 
 #include <TParticle.h>
 
+/// \cond CLASSIMP
 ClassImp(AliMUONRecoCheck)
+/// \endcond
 
 //_____________________________________________________________________________
-AliMUONRecoCheck::AliMUONRecoCheck(Char_t *chLoader)
+  AliMUONRecoCheck::AliMUONRecoCheck(AliRunLoader *runloader, AliMUONData *muondata)
+  : TObject(),
+  fRunLoader(0x0),
+  fMUONData(0x0),
+  fMuonTrackRef(0x0),
+  fTrackReco(0x0),
+  fReconstructibleTracks(0),
+  fRecoTracks(0)
 {
 /// Constructor
+
   fMuonTrackRef = new TClonesArray("AliMUONTrack", 10);
 
-  // open the run loader
-  fRunLoader = AliRunLoader::Open(chLoader);
+  // run loader
+  fRunLoader = runloader;
   if (!fRunLoader) {
-    AliError(Form("no run loader found in file %s","galice.root" ));
+    AliError(Form("no run loader found " ));
     return;
   }
-  // initialize loader's
-  AliLoader *loader = fRunLoader->GetLoader("MUONLoader");
-
-  // initialize container
-  fMUONData  = new AliMUONData(loader,"MUON","MUON");
 
-   // Loading AliRun master
-  if (fRunLoader->GetAliRun() == 0x0) fRunLoader->LoadgAlice();
-
-  fRunLoader->LoadKinematics("READ");
-  fRunLoader->LoadTrackRefs("READ");
-  loader->LoadTracks("READ");
+  // container
+  fMUONData  = muondata;
+  if (!fMUONData) {
+    AliError(Form("no MUONData found " ));
+    return;
+  }
 
-  fReconstructibleTracks = 0; 
-  fRecoTracks = 0;
 }
 
-//____________________________________________________________________
-AliMUONRecoCheck::AliMUONRecoCheck(const AliMUONRecoCheck& rhs)
- : TObject(rhs)
-{
-/// Protected copy constructor
-
-  AliFatal("Not implemented.");
-}
 
 //_____________________________________________________________________________
 AliMUONRecoCheck::~AliMUONRecoCheck()
 {
 /// Destructor
 
-  fRunLoader->UnloadKinematics();
-  fRunLoader->UnloadTrackRefs();
-  fRunLoader->UnloadTracks();
   fMuonTrackRef->Delete();
   delete fMuonTrackRef;
-  delete fMUONData;
-}
-
-//________________________________________________________________________
-AliMUONRecoCheck& AliMUONRecoCheck::operator = (const AliMUONRecoCheck& rhs)
-{
-/// Protected assignement operator
-
-  if (this == &rhs) return *this;
-
-  AliFatal("Not implemented.");
-    
-  return *this;  
 }
 
 //_____________________________________________________________________________
@@ -133,7 +111,7 @@ void AliMUONRecoCheck::MakeTrackRef()
  
   track = trackSave = -999;
   Bool_t isNewTrack;
-  Int_t iHitMin, iChamber;
+  Int_t iHitMin, iChamber, detElemId;
 
   trackParam = new AliMUONTrackParam();
   hitForRec = new AliMUONHitForRec();
@@ -195,11 +173,13 @@ void AliMUONRecoCheck::MakeTrackRef()
        hitForRec->SetNonBendingCoor(x);
        hitForRec->SetZ(z);
        hitForRec->SetBendingReso2(0.0); 
-       hitForRec->SetNonBendingReso2(0.0);  
-       iChamber = AliMUONConstants::ChamberNumber(z);
+       hitForRec->SetNonBendingReso2(0.0);
+       detElemId = hitForRec->GetDetElemId();
+       if (detElemId) iChamber = detElemId / 100 - 1; 
+       else iChamber = AliMUONConstants::ChamberNumber(z);
        hitForRec->SetChamberNumber(iChamber);
 
-       muonTrack->AddTrackParamAtHit(trackParam);
+       muonTrack->AddTrackParamAtHit(trackParam,hitForRec);
        muonTrack->AddHitForRecAtHit(hitForRec);
        muonTrack->SetTrackID(track);
 
@@ -257,10 +237,10 @@ TClonesArray* AliMUONRecoCheck::GetTrackReco()
 {
 /// Return TClonesArray of reconstructed tracks
 
-  GetMUONData()->ResetRecTracks();
-  GetMUONData()->SetTreeAddress("RT");
-  fTrackReco = GetMUONData()->RecTracks(); 
-  GetMUONData()->GetRecTracks();
+  fMUONData->ResetRecTracks();
+  fMUONData->SetTreeAddress("RT");
+  fTrackReco = fMUONData->RecTracks(); 
+  fMUONData->GetRecTracks();
   fRecoTracks = fTrackReco->GetEntriesFast();
   return fTrackReco;
 }
@@ -322,7 +302,7 @@ void AliMUONRecoCheck::CleanMuonTrackRef()
   Float_t bendingSlope2,nonBendingSlope2,bendingMomentum2;
   TClonesArray *newMuonTrackRef = new TClonesArray("AliMUONTrack", 10);
   Int_t iHit1;
-  Int_t iChamber = 0;
+  Int_t iChamber = 0, detElemId = 0;
   Int_t nRec = 0;
   Int_t nTrackHits = 0;
 
@@ -391,7 +371,9 @@ void AliMUONRecoCheck::CleanMuonTrackRef()
       hitForRec->SetNonBendingCoor(xRec);
       hitForRec->SetBendingCoor(yRec);
       hitForRec->SetZ(zRec);
-      iChamber = AliMUONConstants::ChamberNumber(zRec);
+      detElemId = hitForRec->GetDetElemId();
+      if (detElemId) iChamber = detElemId / 100 - 1;
+      else iChamber = AliMUONConstants::ChamberNumber(zRec);
       hitForRec->SetChamberNumber(iChamber);
       hitForRec->SetBendingReso2(0.0); 
       hitForRec->SetNonBendingReso2(0.0); 
@@ -404,7 +386,7 @@ void AliMUONRecoCheck::CleanMuonTrackRef()
        trackParam->SetInverseBendingMomentum(1./bendingMomentum);
 
       trackNew->AddHitForRecAtHit(hitForRec);
-      trackNew->AddTrackParamAtHit(trackParam);
+      trackNew->AddTrackParamAtHit(trackParam,hitForRec);
       
       iHit1++;
     } // end iHit1