X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;f=MUON%2FMUONTracker.C;h=da95c6ab614501fc03249b59b6cc261c2c6eaaaa;hb=e4f80cd8939abda561b24d7f886037fa55f8e174;hp=d2240a55c012e09caa5a17c3f8a7e0431a1010d9;hpb=d8d3b5b80718dff35317a286ea44232f566f42a8;p=u%2Fmrichter%2FAliRoot.git diff --git a/MUON/MUONTracker.C b/MUON/MUONTracker.C index d2240a55c01..da95c6ab614 100644 --- a/MUON/MUONTracker.C +++ b/MUON/MUONTracker.C @@ -13,27 +13,21 @@ * provided "as is" without express or implied warranty. * **************************************************************************/ -/* $Id$ */ - // Macro MUONTracker.C (TO BE COMPILED) // for testing the C++ reconstruction code // Output is using aliroot standard output MUON.Tracks.root // The output is a TClonesArray of AliMUONTracks. -// Gines MARTINEZ, Subatech, sep 2003 +// Allow to make track reconstruction directly from AliTrackReference hits +// recorded in TrackRefs.root file. #if !defined(__CINT__) || defined(__MAKECINT__) -#include - #include "AliRun.h" #include "AliMUON.h" #include "AliMUONData.h" -#include "AliMUONEventReconstructor.h" -#include "AliMUONTrack.h" -#include "AliMUONTrackHit.h" -#include "AliMUONTrackParam.h" +#include "AliMUONTrackReconstructor.h" #endif -void MUONTracker (Text_t *FileName = "galice.root", Int_t FirstEvent = 0, Int_t LastEvent = 9999) +void MUONTracker (Int_t FirstEvent = 0, Int_t LastEvent = 9999, Text_t *FileName = "galice.root") { // cout << "MUONTracker" << endl; @@ -42,66 +36,78 @@ void MUONTracker (Text_t *FileName = "galice.root", Int_t FirstEvent = 0, Int_t cout << "FileName ``" << FileName << "''" << endl; // Creating Run Loader and openning file containing Hits, Digits and RecPoints - AliRunLoader * RunLoader = AliRunLoader::Open(FileName,"Event","UPDATE"); + AliRunLoader * RunLoader = AliRunLoader::Open(FileName,"MUONLoader","UPDATE"); if (RunLoader ==0x0) { printf(">>> Error : Error Opening %s file \n",FileName); return; } // Loading AliRun master - RunLoader->LoadgAlice(); + if (RunLoader->GetAliRun() == 0x0) RunLoader->LoadgAlice(); gAlice = RunLoader->GetAliRun(); - RunLoader->LoadKinematics("READ"); + RunLoader->LoadTrackRefs("READ"); // Loading MUON subsystem - AliMUON * MUON = (AliMUON *) gAlice->GetDetector("MUON"); AliLoader * MUONLoader = RunLoader->GetLoader("MUONLoader"); - // MUONLoader->LoadHits("READ"); - MUONLoader->LoadRecPoints("READ"); - AliMUONData * muondata = MUON->GetMUONData(); - muondata->SetLoader(MUONLoader); + + MUONLoader->LoadTracks("UPDATE"); - Int_t ievent, nevents; + Int_t nevents; nevents = RunLoader->GetNumberOfEvents(); - AliMUONEventReconstructor *Reco = new AliMUONEventReconstructor(); + AliMUONTrackReconstructor* Reco = new AliMUONTrackReconstructor(MUONLoader); + AliMUONData* muondata = Reco->GetMUONData(); - // The right place for changing AliMUONEventReconstructor parameters + // Testing if Tracker has already been done + RunLoader->GetEvent(0); + if (MUONLoader->TreeT()) { + if (muondata->IsTrackBranchesInTree()) { + MUONLoader->UnloadTracks(); + MUONLoader->LoadTracks("RECREATE"); + printf("Recreating tracks files\n"); + } + } + + // The right place for changing AliMUONTrackReconstructor parameters // with respect to the default ones // Reco->SetMaxSigma2Distance(100.0); // Reco->SetPrintLevel(20); - Reco->SetPrintLevel(1); + Reco->SetPrintLevel(0); // Reco->SetBendingResolution(0.0); // Reco->SetNonBendingResolution(0.0); - cout << "AliMUONEventReconstructor: actual parameters" << endl; - Reco->Dump(); - // gObjectTable->Print(); + Reco->SetRecTrackRefHits(1); // 1: reconst. from track ref. hits 0: from clusters - if (LastEvent>nevents) LastEvent=nevents; - // Loop over events - for (Int_t event = FirstEvent; event < LastEvent; event++) { - //MUONLoader->LoadHits("READ"); + if (Reco->GetRecTrackRefHits() == 0) MUONLoader->LoadRecPoints("READ"); + + if (LastEvent > nevents-1) LastEvent=nevents-1; + + // Loop over events + for (Int_t event = FirstEvent; event <= LastEvent; event++) { cout << "Event: " << event << endl; RunLoader->GetEvent(event); - muondata->SetTreeAddress("RC"); - if (MUONLoader->TreeT() == 0x0) MUONLoader->MakeTree("T"); + // Test if trigger track has already been done before + if (MUONLoader->TreeT() == 0x0) { + MUONLoader->MakeTracksContainer(); + } else { + if (muondata->IsTrackBranchesInTree()){ // Test if track has already been done before + if (event==FirstEvent) MUONLoader->UnloadTracks(); + MUONLoader->MakeTracksContainer(); // Redoing Tracking + Info("TrackContainer","Recreating TrackContainer and deleting previous ones"); + } + } + muondata->MakeBranch("RT"); muondata->SetTreeAddress("RT"); Reco->EventReconstruct(); - // Dump current event - Reco->EventDump(); - - // Duplicating rectrack data in muondata for output - for(Int_t i=0; iGetNRecTracks(); i++) { - AliMUONTrack * track = (AliMUONTrack*) Reco->GetRecTracksPtr()->At(i); - muondata->AddRecTrack(*track); - //printf(">>> TEST TEST event %d Number of hits in the track %d is %d \n",event,i,track->GetNTrackHits()); - } muondata->Fill("RT"); MUONLoader->WriteTracks("OVERWRITE"); muondata->ResetRecTracks(); - //MUONLoader->UnloadHits(); - MUONLoader->UnloadRecPoints(); + if (Reco->GetRecTrackRefHits() == 0) + muondata->ResetRawClusters(); } // Event loop + + MUONLoader->UnloadRecPoints(); + MUONLoader->UnloadTracks(); + RunLoader->UnloadTrackRefs(); }