X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;f=MUON%2FAliMUONRecoCheck.cxx;h=5fd1199ce9920c38011b3e0a8c282cb3f9ecc080;hb=7945aae79fee51db8e52d9cc1a03a9bd06a8be4c;hp=0f3cddc84e5c3d916663fd492ccc871e65ae9e12;hpb=cc056de1dbb84db60b245a0a20a644c6b0dc3c0c;p=u%2Fmrichter%2FAliRoot.git diff --git a/MUON/AliMUONRecoCheck.cxx b/MUON/AliMUONRecoCheck.cxx index 0f3cddc84e5..5fd1199ce99 100644 --- a/MUON/AliMUONRecoCheck.cxx +++ b/MUON/AliMUONRecoCheck.cxx @@ -15,12 +15,11 @@ /* $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" @@ -38,69 +37,48 @@ #include +/// \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