remove obsolete classes
authorcussonno <cussonno@f7af4fe6-9843-0410-8265-dc069ae4e863>
Fri, 22 Jul 2005 08:13:31 +0000 (08:13 +0000)
committercussonno <cussonno@f7af4fe6-9843-0410-8265-dc069ae4e863>
Fri, 22 Jul 2005 08:13:31 +0000 (08:13 +0000)
MUON/AliMUONRecoDisplay.cxx [deleted file]
MUON/AliMUONRecoDisplay.h [deleted file]
MUON/AliMUONRecoEvent.cxx [deleted file]
MUON/AliMUONRecoEvent.h [deleted file]
MUON/AliMUONReconstHit.cxx [deleted file]
MUON/AliMUONReconstHit.h [deleted file]

diff --git a/MUON/AliMUONRecoDisplay.cxx b/MUON/AliMUONRecoDisplay.cxx
deleted file mode 100644 (file)
index f08fd91..0000000
+++ /dev/null
@@ -1,828 +0,0 @@
-/**************************************************************************
- * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
- *                                                                        *
- * Author: The ALICE Off-line Project.                                    *
- * Contributors are mentioned in the code where appropriate.              *
- *                                                                        *
- * Permission to use, copy, modify and distribute this software and its   *
- * documentation strictly for non-commercial purposes is hereby granted   *
- * without fee, provided that the above copyright notice appears in all   *
- * copies and that both the copyright notice and this permission notice   *
- * appear in the supporting documentation. The authors make no claims     *
- * about the suitability of this software for any purpose. It is          *
- * provided "as is" without express or implied warranty.                  *
- **************************************************************************/
-
-/* $Id$ */
-
-//Authors: Mihaela Gheata, Andrei Gheata 09/10/00
-//////////////////////////////////////////////////////////////////////
-//                                                                  //
-// AliMUONRecoDisplay                                              //
-//                                                                 //
-// This class subclasses AliDisplay and provides display of         //
-// reconstructed tracks with following functionality :                     //
-//     - front/top/side/3D display of MUON reconstructed tracks    //
-//        as polylines ;                                            //
-//     - context menu activated when the main pad is right-clicked //
-//     The context menu contains following functions :             //
-//     * SetDrawHits() - switches on or off Geant hits ;           //
-//     * CutMomentum() - displays only tracks within Pmin - Pmax   //
-//     * ListTracks()  - prints ID and momentum info. for all      //
-//     tracks within momentum range Pmin,Pmax ;                    //
-//     * Highlight()   - shows only one selected reco. track       //
-//     and its best matching Geant track;                          //
-//     * UnHighlight() - self explaining;                          //
-//     * RecoEfficiency() - compute reco. efficiency for all events//
-//        from galice.root file; also fake track percentage; make   //
-//        plots for momentum precision                              //
-//      * XYPlot()      - make X-Y plots of reconstructed and       //
-//        generated tracks in all chambers                          //
-//                                                                 //
-//      Starting : generate and reconstruct events, then use the    //
-//                 MUONrecodisplay.C macro                          //
-//                                                                  //
-//////////////////////////////////////////////////////////////////////
-
-#include <TROOT.h>
-#include <TApplication.h>
-#include <TFile.h>
-#include <TPolyLine3D.h>
-#include <TParticle.h>
-#include <TTree.h>
-#include <TH1.h>
-#include <TH2.h>
-#include <TCanvas.h>
-#include <TProfile.h>
-#include <TFolder.h>
-#include <TClonesArray.h>
-#include <TSlider.h>
-#include <TGeometry.h>
-#include <TView.h>
-#include <Riostream.h>
-
-#include "AliRun.h"
-#include "AliDetector.h"
-#include "AliConfig.h"
-#include "AliHeader.h"
-#include "AliPoints.h"
-#include "AliMC.h"
-
-#include "AliMUONRecoDisplay.h"
-#include "AliMUONRecoEvent.h"
-#include "AliMUONRecoTrack.h"
-#include "AliMUONHit.h"
-#include "AliLog.h"
-
-ClassImp(AliMUONRecoDisplay)
-
-//-------------------------------------------------------------------
-AliMUONRecoDisplay::AliMUONRecoDisplay(Int_t nevent)
-  : AliDisplay(750)
-{
-//************ Constructor of the reco. event display**********
-   // get reconstructed event from file
-   fFile = new TFile("tree_reco.root");
-   if (!fFile) {
-      cout << "File tree_reco.root not found\n";
-      gApplication->Terminate(0);
-   }
-   fEvReco = 0;
-   fTree = (TTree *) fFile->Get("TreeRecoEvent");
-   if (!fTree) {
-      cout << "Tree of reconstructed events not found on file. Abort.\n";
-      gApplication->Terminate(0);
-   }
-   fEvent = nevent;
-   fEmpty = kFALSE;
-   TBranch *branch = fTree->GetBranch("Event");
-   branch->SetAddress(&fEvReco);
-   
-   fEvGen  = new AliMUONRecoEvent();
-
-   TFile *galiceFile = (TFile*)gROOT->GetListOfFiles()->FindObject("galice.root");
-   galiceFile->cd();
-   if (nevent > gAlice->TreeE()->GetEntries() - 1) {
-      cout << "Event number out of range !\n";
-      gApplication->Terminate(0);
-   }
-   gAlice->GetEvent(nevent);
-
-
-   fRecoTracks = 0;
-   fGenTracks  = 0;
-   fPolyRecoList = 0;
-   fPolyGenList  = 0;
-   fHighlited   = -1;
-   fMinMomentum = 0;
-   fMaxMomentum = 999;
-   // map this event
-   MapEvent(nevent);
-}
-
-//-------------------------------------------------------------------
-AliMUONRecoDisplay::AliMUONRecoDisplay(const AliMUONRecoDisplay& rhs)
-  : AliDisplay(rhs)
-{
-// Protected copy constructor
-
-  AliFatal("Not implemented.");
-}
-
-//-------------------------------------------------------------------
-AliMUONRecoDisplay::~AliMUONRecoDisplay()
-{
-// Destructor of display object
-   if (fPolyRecoList) {
-      fPolyRecoList->Delete();
-      delete fPolyRecoList;
-   }
-   if (fPolyGenList) {
-      fPolyGenList->Delete();
-      delete fPolyGenList;
-   }
-   delete fEvGen;
-}
-
-//-------------------------------------------------------------------
-AliMUONRecoDisplay&  
-AliMUONRecoDisplay::operator=(const AliMUONRecoDisplay& rhs)
-{
-// Protected assignement operator
-
-  if (this == &rhs) return *this;
-
-  AliFatal("Not implemented.");
-    
-  return *this;  
-}    
-          
-//-------------------------------------------------------------------
-Bool_t AliMUONRecoDisplay::Event(Int_t nevent)
-{
-// Go to event nevent
-   fEvent = nevent;
-   for (Int_t entry=0; entry<fTree->GetEntries(); entry++) {
-      fTree->GetEntry(entry);
-      if (fEvReco->GetNoEvent() == nevent) return kTRUE;
-   }
-   cout << "Event number " << nevent << " empty\n";
-   fRecoTracks = 0;
-   fPolyRecoList = 0;
-   fGenTracks = 0;
-   fPolyGenList = 0;
-   fHighlited   = -1;
-   fMinMomentum = 0;
-   fMaxMomentum = 999;
-   
-   return kFALSE;
-}
-
-//-------------------------------------------------------------------
-void AliMUONRecoDisplay::MapEvent(Int_t nevent)
-{
-// get generated event (nevent) from galice.root and corresponding
-// reconstructed event from tree_reco.root; 
-   cout << "mapping event " << nevent << endl;
-   fEvent = nevent;
-   fEmpty = kFALSE;
-   fFile->cd();
-   // check if the event is not empty and make fEvReco to point to it
-   fEmpty = !Event(nevent);
-   // just testing
-//   if (!fEvReco) {
-//      cout << "failed to load reco event ! Correct this.\n";
-//      gApplication->Terminate(0);
-//   }
-   if (fEmpty) return;
-   fRecoTracks   = fEvReco->TracksPtr();
-   fPolyRecoList = MakePolyLines3D(fRecoTracks);   
-   // clear previous event
-   if (fEvGen) fEvGen->Clear();
-   fEvGen->SetNoEvent(nevent);
-   // get list of particles
-   // connect MUON module
-   AliDetector *pMUON = gAlice->GetDetector("MUON");
-   if (!pMUON) {
-      cout << "MUON module not present.\n";
-      gApplication->Terminate(0);
-   }
-   // get the number of generated tracks
-   Int_t ntracks = (Int_t)pMUON->TreeH()->GetEntries();
-   // Fill the fEvGen object
-   AliMUONRecoTrack *gtrack = 0;
-   AliMUONHit *hit = 0;
-   TParticle *particle;
-   Int_t ch;
-   // loop all tracks
-   for (Int_t track=0; track<ntracks; track++) {
-      hit = (AliMUONHit *) pMUON->FirstHit(track);
-      if (!hit) continue;
-      particle = gAlice->GetMCApp()->Particle(hit->Track());
-      if (IsReconstructible(track) && TMath::Abs(particle->GetPdgCode())==13) {
-         gtrack = fEvGen->AddEmptyTrack();
-        gtrack->SetSign(TMath::Sign((Int_t)1, -particle->GetPdgCode()));
-        // reset hits
-        for (ch=0; ch<10; ch++) gtrack->SetHitPosition(ch,0,0,0);
-        // loop all hits
-        for (AliMUONHit *muonHit=(AliMUONHit*)pMUON->FirstHit(track);
-             muonHit;
-             muonHit=(AliMUONHit*)pMUON->NextHit()) {
-           ch = muonHit->Chamber() - 1;
-           if (ch<0 || ch>9) continue;
-           gtrack->SetHitPosition(ch, muonHit->X(),  muonHit->Y(),  muonHit->Z());
-           gtrack->SetMomReconstr(particle->Px(), particle->Py(), particle->Pz());
-           gtrack->SetVertexPos(particle->Vz());
-           gtrack->SetChi2r(0.0);
-        } 
-      }
-   }
-   fGenTracks   = fEvGen->TracksPtr();
-   fPolyGenList = MakePolyLines3D(fGenTracks);
-}
-//-------------------------------------------------------------------
-void AliMUONRecoDisplay::XYPlot()
-{
-// Plot reco. tracks hits in all chambers for current event:
-//  - open blue squares : generated muons that were reconstructed accurate
-//  - open cyan squares : generated muons that were not reconstructed
-//  - filled green circles : reco. tracks (accurate)
-//  - filled red squares   : fake tracks 
-   if (fEmpty) return;
-   Double_t kMaxRadius[10];
-   kMaxRadius[0] =  kMaxRadius[1] = 91.5;
-   kMaxRadius[2] =  kMaxRadius[3] = 122.5;
-   kMaxRadius[4] =  kMaxRadius[5] = 158.3;
-   kMaxRadius[6] =  kMaxRadius[7] = 260.0;
-   kMaxRadius[8] =  kMaxRadius[9] = 260.0;
-
-   TH2F *xygenFound[10]; 
-   TH2F *xygenLost[10]; 
-   TH2F *xyrecoGood[10];
-   TH2F *xyrecoFake[10];
-   Double_t x,y,r;
-   Int_t matches[500];
-   Int_t index, ch;
-
-   TPad *pad = (TPad*)gROOT->GetSelectedPad();
-   TCanvas *canvas = new TCanvas("xy", "Reconstruction efficiency");
-   canvas->Clear();
-   canvas->cd();
-   canvas->Divide(3,4);
-   canvas->cd(11);
-   gPad->Delete();
-   canvas->cd(12);
-   gPad->Delete();
-   canvas->cd(1);
-   
-   // Define histograms for x-y plots
-   for (ch=0; ch<10; ch++) {
-      xygenFound[ch] = new TH2F("xygen_found","",50,-kMaxRadius[ch],kMaxRadius[ch],50,-kMaxRadius[ch],kMaxRadius[ch]);
-      xygenLost[ch] = new TH2F("xygen_lost","",50,-kMaxRadius[ch],kMaxRadius[ch],50,-kMaxRadius[ch],kMaxRadius[ch]);
-      xyrecoGood[ch] = new TH2F("xyreco_good","",50,-kMaxRadius[ch],kMaxRadius[ch],50,-kMaxRadius[ch],kMaxRadius[ch]);
-      xyrecoFake[ch] = new TH2F("xyreco_fake","",50,-kMaxRadius[ch],kMaxRadius[ch],50,-kMaxRadius[ch],kMaxRadius[ch]);
-   }
-   // find list of matching tracks
-   fPrinted = kTRUE; // no need to print
-   for (index=0; index<fRecoTracks->GetEntriesFast(); index++) {
-      matches[index] = GetBestMatch(index);  
-   }
-   // and fill them
-   for (index=0; index<fGenTracks->GetEntriesFast(); index++) {        // GEANT
-      Bool_t wasreconst = kFALSE;
-      for (Int_t i=0; i<fRecoTracks->GetEntriesFast(); i++) {
-         if (matches[i] == index) {
-           wasreconst = kTRUE;
-           break;
-        }
-      }
-      AliMUONRecoTrack *current = (AliMUONRecoTrack*)fGenTracks->UncheckedAt(index);
-      for (ch=0; ch<10; ch++) {
-         x = current->GetPosX(ch);
-         y = current->GetPosY(ch);
-         r = TMath::Sqrt(x*x +y*y);
-         if (r >= 10) {
-            if (wasreconst) {
-               xygenFound[ch]->Fill(x,y);
-            } else {xygenLost[ch]->Fill(x,y);}
-         }
-      }
-   }
-   for (index=0; index<fRecoTracks->GetEntriesFast(); index++) {       // reco
-      AliMUONRecoTrack *current = (AliMUONRecoTrack*)fRecoTracks->UncheckedAt(index);
-      for (ch=0; ch<10; ch++) {
-         x = current->GetPosX(ch);
-         y = current->GetPosY(ch);
-         r = TMath::Sqrt(x*x +y*y);
-         if (r >= 10) {
-            if (matches[index] >= 0) {
-               xyrecoGood[ch]->Fill(x,y);
-            } else {xyrecoFake[ch]->Fill(x,y);}
-         }
-      }
-   }
-   // finally plot them
-   for (ch=0; ch<10; ch++) {
-      canvas->cd(ch+1);   
-      xygenFound[ch]->SetMarkerColor(kBlue);
-      xygenFound[ch]->SetMarkerStyle(4);
-      xygenFound[ch]->SetMarkerSize(0.5);
-      xygenFound[ch]->SetStats(kFALSE);
-      xygenFound[ch]->Draw();
-      xygenLost[ch]->SetMarkerColor(kCyan);
-      xygenLost[ch]->SetMarkerStyle(4);
-      xygenLost[ch]->SetMarkerSize(0.5);
-      xygenLost[ch]->SetStats(kFALSE);
-      xygenLost[ch]->Draw("SAME");
-      xyrecoGood[ch]->SetMarkerColor(kGreen);
-      xyrecoGood[ch]->SetMarkerStyle(20);
-      xyrecoGood[ch]->SetMarkerSize(0.4);
-      xyrecoGood[ch]->SetStats(kFALSE);
-      xyrecoGood[ch]->Draw("SAME");
-      xyrecoFake[ch]->SetMarkerColor(kRed);
-      xyrecoFake[ch]->SetMarkerStyle(20);
-      xyrecoFake[ch]->SetMarkerSize(0.5);
-      xyrecoFake[ch]->SetStats(kFALSE);
-      xyrecoFake[ch]->Draw("SAME");
-   }
-   canvas->SetTitle("y vs. x for simulated and reconstructed tracks");
-   pad->cd();
-}
-
-//-------------------------------------------------------------------
-void AliMUONRecoDisplay::RecoEfficiency(Int_t first, Int_t last)
-{
-// Loop selected reconstructed events, compute efficiency as total number of 
-// reconstructed tracks (accurate) over total number of generated
-// reconstructible muons. Make histogram for momentum precision and profile
-// of mean momentum precision versus total momentum (generated)
-   Int_t nevents = (Int_t)gAlice->TreeE()->GetEntries();
-   if (last > nevents) last = nevents - 1;
-   if (first < 0) first = 0;
-   nevents = last - first + 1;
-   Int_t track;
-   Float_t efficiency;
-   Float_t generated=0, found=0, fake=0; // number of generated/found/fake tracks
-   Double_t pgen, preco, dP;             // dP=preco-pgen
-   AliMUONRecoTrack *rtrack, *gtrack;    // generated/reco. current tracks
-   fPrinted = kTRUE;                     // no need to print
-   Int_t currentEvent = gAlice->GetHeader()->GetEvent();
-   
-   TH1F *pReso = new TH1F("Momentum precision", "dP = Prec - Pgen", 100, -5.0, 5.0);
-   pReso->SetXTitle("dP [GeV/c]");
-   pReso->SetYTitle("dN/dP");
-   
-   TProfile *dPp = new TProfile("", "dP vs. P", 50, 0, 100, 0, 5);
-   dPp->SetXTitle("P [GeV/c]");
-   dPp->SetYTitle("<dP> [GeV/c]"); 
-
-   TPad *pad = (TPad*)gROOT->GetSelectedPad();
-   TCanvas *canvas = new TCanvas("c", "Reconstruction efficiency");
-   canvas->Divide(1,2);
-   canvas->cd(1);
-
-   // loop events
-   for (Int_t event=first; event<=last; event++) {
-      // get the reco. & gen. events
-      TFile *galiceFile = (TFile*)gROOT->GetListOfFiles()->FindObject("galice.root");
-      galiceFile->cd();
-      gAlice->GetEvent(event);
-      MapEvent(event);
-      if (fEmpty) {
-      // skip empty events
-         fEmpty = kFALSE;
-        continue;
-      }
-      generated += fGenTracks->GetEntriesFast();
-      // loop reco. tracks
-      for (track=0; track<fRecoTracks->GetEntriesFast(); track++) {
-         rtrack = (AliMUONRecoTrack*)fRecoTracks->UncheckedAt(track);
-         preco  = rtrack->P();
-        // find correspondent generated track
-        Int_t ind = GetBestMatch(track);
-        if (ind >=0) {
-           gtrack = (AliMUONRecoTrack*)fGenTracks->UncheckedAt(ind);
-           pgen  = gtrack->P();
-           found += 1;
-           dP = preco - pgen;
-           pReso->Fill(dP);
-           dPp->Fill(pgen, TMath::Abs(dP));
-        } else {
-           fake += 1;
-        }
-      }
-   }
-   efficiency = found/generated;
-   cout << "=================================================================\n";
-   cout << "||       Reconstruction efficiency and momentum precision      ||\n";
-   cout << "=================================================================\n";
-   cout << "Number of events processed              " << nevents << endl;
-   cout << "Total number of reconstructible muons : " << (Int_t)generated << endl;
-   cout << "RECONSTRUCTION EFFICIENCY :             " << efficiency*100 << " %" << endl;
-   cout << "Fake track rate :                       " << 100*fake/generated << " %" << endl;
-   cout << "Momentum precision fit : \n" << endl;
-   pReso->Fit("gaus");
-   cout << "=================================================================\n";    
-   
-   canvas->cd(1);
-   pReso->Draw();
-   canvas->cd(2);
-   dPp->Draw("HIST");
-   pad->cd();
-   ShowNextEvent(currentEvent-last);
-}
-
-//-------------------------------------------------------------------
-void AliMUONRecoDisplay::ShowNextEvent(Int_t delta)
-{
-// overwritten from AliDisplay in order to get also mapping of next event
-   TFile *galiceFile = (TFile*)gROOT->GetListOfFiles()->FindObject("galice.root");
-   galiceFile->cd();
-   if (delta) {
-      gAlice->Clear();
-      Int_t currentEvent = gAlice->GetHeader()->GetEvent();
-      Int_t newEvent     = currentEvent + delta;
-      if (newEvent<0 || newEvent>(gAlice->TreeE()->GetEntries() - 1)) return;
-      Int_t nparticles = gAlice->GetEvent(newEvent);
-      cout << "Event : " << newEvent << " with " << nparticles << " particles\n";
-
-/******************************************************************/
-      AliConfig* config = AliConfig::Instance();
-      TFolder* topfold = (TFolder*)config->GetTopFolder();
-      if (topfold == 0x0)
-       {
-         AliError("Can not get Alice top folder");
-         return; 
-       }
-      TString fmdfoldname(config->GetDataFolderName()+"/"+"MUON");
-      TFolder* fmdfold = (TFolder*)topfold->FindObject(fmdfoldname);
-      if (fmdfold == 0x0)
-       {
-         AliError("Can not get MUON folder");
-         return; 
-       }
-      TTree* treeH = dynamic_cast<TTree*>(fmdfold->FindObject("TreeH"));
-      if (treeH == 0x0)
-       {
-         AliError("Can not get TreeH");
-         return;
-       }
-/******************************************************************/     
-      MapEvent(newEvent);
-      fHighlited = -1;
-   }
-   LoadPoints();
-   fPad->cd();
-   Draw();
-   if (gROOT->GetListOfCanvases()->FindObject("xy")) XYPlot();
-}
-//-------------------------------------------------------------------
-Bool_t AliMUONRecoDisplay::IsReconstructible(Int_t track) const
-{
-// true if at least three hits in first 2 stations, 3 in last 2 stations
-// and one in station 3
-   if (fEmpty) return kFALSE;
-   AliDetector *pMUON = gAlice->GetDetector("MUON");
-   Bool_t chHit[10];
-   Int_t ch;
-   for (ch=0; ch<10; ch++) chHit[ch] = kFALSE;
-   //loop hits
-   for (AliMUONHit *muonHit=(AliMUONHit*)pMUON->FirstHit(track);
-        muonHit;
-       muonHit=(AliMUONHit*)pMUON->NextHit()) {
-      ch = muonHit->Chamber() - 1;
-      if (ch<0 || ch>9) continue;
-      chHit[ch] = kTRUE;
-   }
-   Int_t nhits = 0;
-   for (ch=0; ch<4; ch++) nhits += (chHit[ch])?1:0;
-   if (nhits < 3) return kFALSE;
-   nhits = 0;
-   for (ch=4; ch<6; ch++) nhits+= (chHit[ch])?1:0;
-   if (nhits < 1) return kFALSE;
-   
-   for (ch=7; ch<10; ch++) nhits+= (chHit[ch])?1:0;
-   if (nhits < 3) return kFALSE;
-   return kTRUE;
-}
-
-//-------------------------------------------------------------------
-void AliMUONRecoDisplay::DrawView(Float_t theta, Float_t phi, Float_t psi)
-{
-// ovewritten from base class to change the range for MUON
-   gPad->SetCursor(kWatch);
-   gPad->SetFillColor(1);
-   gPad->Clear();
-   
-   Int_t iret;
-   TView *view = new TView(1);
-   Float_t range = fRrange*fRangeSlider->GetMaximum();
-   view->SetRange(-range, -range, 0, range, range, 5*range);
-   fZoomX0[0] = -1;
-   fZoomY0[0] = -1;
-   fZoomX1[0] =  1;
-   fZoomY1[0] =  1;
-   // Display Alice geometry
-   gAlice->GetGeometry()->Draw("same");
-   //Loop on all detectors to add their products to the pad
-   DrawHits();
-   // add itself to the list (last)
-   AppendPad();
-   
-   view->SetView(phi, theta, psi, iret);
-}
-//-------------------------------------------------------------------
-void AliMUONRecoDisplay::SetDrawHits(Bool_t hits)
-{
-// Turns on/off Geant hits drawing
-   fDrawHits = hits;
-   DrawView(0,-90);
-}
-
-//-------------------------------------------------------------------
-void AliMUONRecoDisplay::CutMomentum(Double_t min, Double_t max)
-{
-// Define momentum cut for displayed reconstructed tracks
-   fMinMomentum = min;
-   fMaxMomentum = max;
-   if (fHighlited >= 0) UnHighlight();
-   DrawView(0,-90);
-}
-
-//-------------------------------------------------------------------
-Int_t AliMUONRecoDisplay::GetBestMatch(Int_t indr, Float_t tolerance)
-{
-// Find the index of best Geant track matching a reconstructed track : track
-//     with maximum number of compatible hits (within tolerance*sigma bending and
-//     non-bending resolution) and minimum number of fake hits;
-// If no match is found within a given tolerance, the method is called recursively
-//      with increasing tolerance, until tolerance = 10;
-   if (fEmpty) return -1;
-   if (indr<0 || indr>=fRecoTracks->GetEntriesFast()) return -1;
-   AliMUONRecoTrack *rtrack = (AliMUONRecoTrack*)fRecoTracks->UncheckedAt(indr);
-   AliMUONRecoTrack *gtrack = 0;
-   Int_t bestMatch = -1;
-   Int_t maxNcompat = 0;
-   Int_t minNfakes = 10;
-   Double_t xrhit,yrhit,radius,xghit,yghit,dX,dY;
-// loop over all Geant tracks
-   for (Int_t indg=0; indg<fGenTracks->GetEntriesFast(); indg++) {
-      gtrack = (AliMUONRecoTrack*)fGenTracks->UncheckedAt(indg);
-      if (!gtrack) continue;
-      Int_t ncompat = 0;      // number of compat. hits for this track
-      Int_t nfake = 0;        // number of fakes
-      // loop chambers to find compatible hits
-      for (Int_t ch=0; ch<10; ch++) {
-         xrhit = rtrack->GetPosX(ch);
-         yrhit = rtrack->GetPosY(ch);
-         radius = TMath::Sqrt(xrhit*xrhit + yrhit*yrhit);
-         if (radius<10) continue; // skip null hits
-         xghit = gtrack->GetPosX(ch);
-         yghit = gtrack->GetPosY(ch);
-         dX = TMath::Abs(xghit-xrhit);
-         dY = TMath::Abs(yghit-yrhit);
-         if (dX<tolerance*0.144 && dY<tolerance*0.01) {// within tol*sigma resolution
-            ncompat++;
-            continue;      // compatible hit
-         } else nfake++;      // fake hit
-      }
-      if (ncompat && ncompat>=maxNcompat && nfake<minNfakes) { // this is best matching
-         maxNcompat = ncompat;
-         minNfakes = nfake;
-         bestMatch = indg;
-      }
-   }
-   if (bestMatch<0 && tolerance<=9.) bestMatch = GetBestMatch(indr, tolerance+=1);
-   if (!fPrinted) {
-      rtrack = (AliMUONRecoTrack*)fRecoTracks->UncheckedAt(indr);
-      Int_t sign = rtrack->GetSign();
-      cout << "Reconstructed track : " << indr << "(" << sign << ")" << endl;
-      rtrack->TrackInfo();
-      printf("Best matching Geant track within %i*sgm : %i\n", (Int_t)tolerance, bestMatch);
-      if (bestMatch >=0) {
-         gtrack = (AliMUONRecoTrack*)fGenTracks->UncheckedAt(bestMatch);
-         gtrack->TrackInfo();
-      }
-      cout << "-----------------------------------------------------------------\n";
-   }
-   fPrinted = kTRUE;
-
-   return bestMatch;
-}
-
-//-------------------------------------------------------------------
-void AliMUONRecoDisplay::Highlight(Int_t track)
-{
-// Highlight the specified track
-   if (fEmpty) return; 
-   if (fHighlited >=0) UnHighlight();
-   if (track<0 || track>fPolyRecoList->GetEntries()) return;
-   TPolyLine3D *line = (TPolyLine3D*)fPolyRecoList->UncheckedAt(track);
-   line->SetLineColor(kYellow);
-   line->SetLineWidth(1);
-   fHighlited = track;
-//   DrawView(15,-45,135);
-   fPad->cd();
-   Draw();
-}
-
-//-------------------------------------------------------------------
-void AliMUONRecoDisplay::UnHighlight()
-{
-// Unhighlight a previous highlighted track
-   if (fHighlited < 0 || fEmpty) return;      // nothing to do
-   TPolyLine3D *line = (TPolyLine3D*)fPolyRecoList->UncheckedAt(fHighlited);
-   line->SetLineColor(kRed);
-   line->SetLineWidth(1);
-   fHighlited = -1;
-//   DrawView(0,-90);
-   fPad->cd();
-   Draw();
-}
-
-//-------------------------------------------------------------------
-void AliMUONRecoDisplay::DrawHits()
-{
-//    Draw hits for all ALICE detectors. Overwrites the DrawHits() method of the
-//     base class for reco. track drawing
-
-   Float_t cutmin, cutmax, etamin, etamax, pmom, smin, smax, eta, theta, r;
-   const Float_t kptcutmax = 2;
-   const Float_t ketacutmax = 1.5;
-   Float_t *pxyz;
-   Int_t ntracks,track;
-   TParticle *particle;
-   TObjArray *points;
-   AliPoints *pm;
-      
-   //Get cut slider
-   smax   = fCutSlider->GetMaximum();
-   smin   = fCutSlider->GetMinimum();
-   cutmin = kptcutmax*smin;
-   if (smax < 0.98) cutmax = kptcutmax*smax;
-   else             cutmax = 100000;
-   
-   //Get eta slider
-   smax   = fEtaSlider->GetMaximum();
-   smin   = fEtaSlider->GetMinimum();
-   etamin = ketacutmax*(2*smin-1);
-   etamax = ketacutmax*(2*smax-1);
-   if (smin < 0.02) etamin = -1000;
-   if (smax > 0.98) etamax =  1000;
-      
-   TIter next(gAlice->Modules());
-   AliModule *module;
-   fHitsCuts = 0;
-   if (fDrawHits) {
-      // draw hits in all modules
-      while((module = (AliModule*)next())) {
-         if (!module->IsActive()) continue;
-         points = module->Points();
-         if (!points) continue;
-         ntracks = points->GetEntriesFast();
-         for (track=0;track<ntracks;track++) {
-            pm = (AliPoints*)points->UncheckedAt(track);
-            if (!pm) continue;
-            particle = pm->GetParticle();
-            if (!particle) continue;
-            pmom = particle->P();
-            if (pmom < cutmin) continue;
-            if (pmom > cutmax) continue;
-            // as a first approximation, take eta of first point
-            pxyz  = pm->GetP();
-            r     = TMath::Sqrt(pxyz[0]*pxyz[0] + pxyz[1]*pxyz[1]);
-            theta = TMath::ATan2(r,TMath::Abs(pxyz[2]));
-            if(theta) eta = -TMath::Log(TMath::Tan(0.5*theta)); else eta = 1e10;
-            if (pxyz[2] < 0) eta = -eta;
-            if (eta < etamin || eta > etamax) continue;
-            pm->Draw();
-            fHitsCuts += pm->GetN();
-         }
-      }
-   }
-   // draw reconstructed tracks
-   if (fEmpty) return;
-   TPolyLine3D *line, *gline;
-   Int_t bestMatch;
-   Double_t px,py,pz,p;
-   AliMUONRecoTrack *rtrack;
-
-   if (fHighlited >= 0) {
-      line = (TPolyLine3D*)fPolyRecoList->UncheckedAt(fHighlited);
-      line->Draw();
-      fPrinted = kFALSE;
-      bestMatch = GetBestMatch(fHighlited);
-      if (bestMatch>=0) {
-         gline = (TPolyLine3D*)fPolyGenList->UncheckedAt(bestMatch);
-         gline->SetLineColor(kRed);
-         gline->SetLineWidth(2);
-         gline->SetLineStyle(2);
-         gline->Draw();
-      }
-   } else {
-      for (track=0; track<fPolyRecoList->GetEntries(); track++) {
-         rtrack = (AliMUONRecoTrack*)fRecoTracks->UncheckedAt(track);
-         px = rtrack->GetMomReconstr(0);
-         py = rtrack->GetMomReconstr(1);
-         pz = rtrack->GetMomReconstr(2);
-         p  = rtrack->P();
-         if (p>fMinMomentum && p<fMaxMomentum) {
-            line = (TPolyLine3D*)fPolyRecoList->UncheckedAt(track);
-            line->Draw();
-         }
-      }
-   }
-}
-
-//-------------------------------------------------------------------
-void AliMUONRecoDisplay::ListTracks()
-{
-// List momentum information of all reconstructed traccks within fPmin and fPmax
-//     cuts, as well as their best matching Geant tracks
-   if (fEmpty) return;
-   cout << "================================================================\n";
-   printf("Reconstructed tracks with momentum in range : %g , %g [GeV/c]\n",
-         fMinMomentum, fMaxMomentum);
-   cout << "----------------------------------------------------------------\n";
-   AliMUONRecoTrack *rtrack;
-   Double_t p;
-   Int_t sign;
-   for (Int_t ind=0; ind<fRecoTracks->GetEntries(); ind++) {
-      rtrack = (AliMUONRecoTrack*)fRecoTracks->UncheckedAt(ind);
-      p  = rtrack->P();
-      if (p>fMinMomentum && p<fMaxMomentum) {
-         fPrinted = kFALSE;
-         GetBestMatch(ind);
-         sign = rtrack->GetSign();
-      }
-   }      
-   cout << "================================================================\n";
-}
-
-//-------------------------------------------------------------------
-TClonesArray* AliMUONRecoDisplay::MakePolyLines3D(TClonesArray *tracklist)
-{
-// Makes the list of polylines3D corresponding to the list of tracks
-   if (fEmpty) return 0;
-   if (tracklist!=fRecoTracks && tracklist!=fGenTracks) return 0;
-   Bool_t reco = (tracklist==fRecoTracks)?kTRUE:kFALSE;
-   // make sure there is no other list in memory
-   if (reco) {
-      if (fPolyRecoList) {
-         fPolyRecoList->Delete();
-         delete fPolyRecoList;
-         fPolyRecoList = 0;
-      }
-   } else {
-      if (fPolyGenList) {
-         fPolyGenList->Delete();
-         delete fPolyGenList;
-         fPolyGenList = 0;
-      }      
-   }
-   if (!tracklist->GetEntries()) return 0;
-   
-   AliMUONRecoTrack* track = 0;
-   TClonesArray *polyLines3D = new TClonesArray("TPolyLine3D",1000);
-   TClonesArray &polylist = *polyLines3D;
-   TPolyLine3D *polyline = 0;
-   
-   // loop all tracks
-   for (Int_t i=0; i<tracklist->GetEntries(); i++) {
-      track = (AliMUONRecoTrack*)tracklist->UncheckedAt(i);
-      Int_t ch = 0;
-      Double_t x,y,z,r;
-      polyline = new(polylist[i]) TPolyLine3D(2,"");
-      polyline->SetLineColor(kRed);
-      polyline->SetLineWidth(1);
-      polyline->SetNextPoint(0,0,track->GetVertexPos()); // vertex point
-      // loop chambers to fill TPolyLine3D objects
-      for (ch=0; ch<10; ch++) {
-         x = track->GetPosX(ch);
-         y = track->GetPosY(ch);
-         r = TMath::Sqrt(x*x + y*y);
-         if (r < 10) continue;
-         z = track->GetPosZ(ch);
-         polyline->SetNextPoint(x,y,z);
-      }      
-   }
-   return polyLines3D;
-}
-
-//-------------------------------------------------------------------
-void AliMUONRecoDisplay::PolyLineInfo(TClonesArray *line3Dlist)
-{
-// Prints information (x, y, z coordinates) for all constructed polylines
-   if (fEmpty) return;
-   if (line3Dlist) {
-      TPolyLine3D *polyline = 0;
-      for(Int_t trackIndex=0; trackIndex<line3Dlist->GetEntries(); trackIndex++) {
-         polyline = (TPolyLine3D*)line3Dlist->UncheckedAt(trackIndex);
-         polyline->ls();
-         Float_t *pl = polyline->GetP();
-         for (Int_t i=0; i<polyline->GetN() ;i++) {
-            printf(" x[%d]=%g, y[%d]=%g, z[%d]=%g\n",i,pl[3*i],i,pl[3*i+1],i,pl[3*i+2]);
-         }
-      }
-   }
-}
diff --git a/MUON/AliMUONRecoDisplay.h b/MUON/AliMUONRecoDisplay.h
deleted file mode 100644 (file)
index daac884..0000000
+++ /dev/null
@@ -1,66 +0,0 @@
-#ifndef ALI_MUON_RECO_DISPLAY_H
-#define ALI_MUON_RECO_DISPLAY_H
-/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
- * See cxx source for full Copyright notice                               */
-
-/*$Id$*/
-// Revision of includes 07/05/2004
-
-// Authors : M.Gheata, A.Gheata 09/10/00
-
-#include "AliDisplay.h"
-
-class TTree;
-class TFile;
-class TClonesArray;
-
-class AliMUONRecoEvent;
-
-class AliMUONRecoDisplay : public AliDisplay 
-{
-  public:
-    AliMUONRecoDisplay(Int_t nevent=0);
-    virtual             ~AliMUONRecoDisplay();
-    virtual void       DrawHits();
-    virtual void       DrawView(Float_t theta, Float_t phi, Float_t psi = 0);
-    Bool_t             Event(Int_t nevent);
-    virtual void       SetDrawHits(Bool_t hits = kTRUE);       // *MENU*
-    virtual void       ShowNextEvent(Int_t delta = 1);
-    void               ListTracks();                           // *MENU*
-    void               Highlight(Int_t track=0);               // *MENU*
-    void               UnHighlight();                          // *MENU*
-    void               CutMomentum(Double_t min=0, Double_t max=999);  // *MENU*
-    void               PolyLineInfo(TClonesArray *line3Dlist);
-    void               RecoEfficiency(Int_t first=0, Int_t last=10000);  // *MENU*
-    void               XYPlot();                                 // *MENU*
-   
-  protected:
-    AliMUONRecoDisplay(const AliMUONRecoDisplay& rhs);
-    AliMUONRecoDisplay& operator=(const AliMUONRecoDisplay& rhs);
-
-  private:
-    //methods
-    Int_t              GetBestMatch(Int_t indr, Float_t tolerance=3.0);
-    TClonesArray*      MakePolyLines3D(TClonesArray *tracklist);
-    void               MapEvent(Int_t nevent);
-    Bool_t             IsReconstructible(Int_t track) const;
-    //data members
-    Int_t              fEvent;                   // current event number
-    AliMUONRecoEvent  *fEvGen;                   // Geant event
-    AliMUONRecoEvent  *fEvReco;                  // reconstructed event
-    TFile             *fFile;                    // file with reco. event tree
-    TTree             *fTree;                    // tree with reco. events
-    TClonesArray      *fPolyRecoList;            // list of TPolyLine3D's for reco. tracks
-    TClonesArray      *fPolyGenList;             // list of TPolyLine3D's for generated tracks
-    TClonesArray      *fRecoTracks;              // list of reco tracks
-    TClonesArray      *fGenTracks;               // list of GEANT tracks
-    Int_t              fHighlited;               // index of current highlited track
-    Double_t           fMinMomentum;             // min. cut of momentum
-    Double_t           fMaxMomentum;             // max. cut of momentum
-    Bool_t             fPrinted;                       // tracks info switch
-    Bool_t             fEmpty;                   // true if current reco. event empty
-
-   ClassDef(AliMUONRecoDisplay,0)      // MUON reco. event display
-};
-
-#endif
diff --git a/MUON/AliMUONRecoEvent.cxx b/MUON/AliMUONRecoEvent.cxx
deleted file mode 100644 (file)
index 4cd53f2..0000000
+++ /dev/null
@@ -1,312 +0,0 @@
-/**************************************************************************
- * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
- *                                                                        *
- * Author: The ALICE Off-line Project.                                    *
- * Contributors are mentioned in the code where appropriate.              *
- *                                                                        *
- * Permission to use, copy, modify and distribute this software and its   *
- * documentation strictly for non-commercial purposes is hereby granted   *
- * without fee, provided that the above copyright notice appears in all   *
- * copies and that both the copyright notice and this permission notice   *
- * appear in the supporting documentation. The authors make no claims     *
- * about the suitability of this software for any purpose. It is          *
- * provided "as is" without express or implied warranty.                  *
- **************************************************************************/
-
-/* $Id$ */
-
-//Authors: Mihaela Gheata, Andrei Gheata 09/10/00
-////////////////////////////////////////////////////////////////////
-//                                                                //
-// AliMUONRecoEvent, AliMUONRecoTrack (and AliMUONRecoDisplay)    //
-//                                                                //
-// Theses classes are used to store and retrieve                  //
-// MUON reconstructed events.                                     //
-// The corresponding tree is constructed and filled               //
-// during the FillEvent() method of AliMUONEventReconstructor,    //
-// when all reconstruction information is available.              //
-//                                                                //
-////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////
-//                                                                //
-// AliMUONRecoEvent                                               //
-//                                                                //
-// This class handles an array of reconstructed tracks.           //
-// It provides :                                                  //
-//     - filling the tracks array according to the information   //
-//        stored in AliMUONEventReconstructor class ;             //
-//     - printing event and track informations : event numer,    //
-//       number of tracks, hits positions, reconstr. mometum.    //
-//                                                                //
-////////////////////////////////////////////////////////////////////
-
-#include <Riostream.h>
-#include <TClonesArray.h>
-#include <TMatrixD.h>
-
-#include "AliMUONRecoEvent.h"
-#include "AliMUONRecoTrack.h"
-#include "AliMUONEventReconstructor.h"
-#include "AliMUONTrack.h"
-#include "AliMUONTrackK.h"
-#include "AliMUONTrackParam.h"
-#include "AliMUONHitForRec.h"
-#include "AliMUONTrackHit.h"
-#include "AliRun.h"
-#include "AliHeader.h"
-#include "AliLog.h"
-
-ClassImp(AliMUONRecoEvent)
-
-//-------------------------------------------------------------------
-AliMUONRecoEvent::AliMUONRecoEvent(Int_t eventNo) 
-  : TObject()
-{
-// Reconstructed event constructor
-   fTracks     = new TClonesArray("AliMUONRecoTrack",200);
-   fNevr       = eventNo;
-   fNtracks = 0;
-}
-
-//-------------------------------------------------------------------
-AliMUONRecoEvent::AliMUONRecoEvent(const AliMUONRecoEvent& rhs)
-  : TObject(rhs)
-{
-// Protected copy constructor
-
-  AliFatal("Not implemented.");
-}
-
-//-------------------------------------------------------------------
-AliMUONRecoEvent::~AliMUONRecoEvent() 
-{
-// Destructor of AliMUONRecoEvent
-   fTracks->Delete();
-   delete fTracks;
-   fTracks = 0;
-}
-
-//-------------------------------------------------------------------
-AliMUONRecoEvent&  
-AliMUONRecoEvent::operator=(const AliMUONRecoEvent& rhs)
-{
-// Protected assignement operator
-
-  if (this == &rhs) return *this;
-
-  AliFatal("Not implemented.");
-    
-  return *this;  
-}    
-          
-//-------------------------------------------------------------------
-AliMUONRecoTrack* AliMUONRecoEvent::AddEmptyTrack()
-{
-// Add a empty AliMUONRecoTrackObject to the track list
-   TClonesArray &dumptracks = *fTracks;
-   return (new(dumptracks[fNtracks++])AliMUONRecoTrack(kTRUE));
-}
-
-//-------------------------------------------------------------------
-void AliMUONRecoEvent::Clear(Option_t * /*option*/)
-{
-// Clears all track pointers from the list
-//   fTracks->Clear(option);
-   fTracks->Delete();
-   fNtracks=0;
-}
-
-//-------------------------------------------------------------------
-void AliMUONRecoEvent::EventInfo()
-{
-// Prints reconstructed event information
-   cout << "*********************Reco Dumper**************************" << endl;
-   cout << "Event number : " << fNevr << endl;
-   cout << "   Number of tracks : " << fNtracks << endl;
-   AliMUONRecoTrack *currentTrack =0;
-   Int_t trackIndex = 0;
-   for(trackIndex=0; trackIndex<fNtracks; trackIndex++) {
-      currentTrack = (AliMUONRecoTrack*)fTracks->UncheckedAt(trackIndex);
-      cout << "Track : " << trackIndex << endl;
-      cout << "   Sign : " << currentTrack->GetSign() << endl;
-      cout << "   Vertex position    : " << currentTrack->GetVertexPos() << endl;
-      Double_t momreco[3];
-      for (Int_t axis=0; axis<3; axis++) {
-         momreco[axis] = currentTrack->GetMomReconstr(axis);
-      }
-      cout << "   Reconstructed mom. : " << "Px=" << momreco[0] << "Py=" << momreco[1] << "Pz=" << momreco[2] << endl;
-      cout << "   Chi squared        : " << currentTrack->GetChi2r() << endl;
-      cout << "   Hits positions     : " << endl;
-      Double_t xhit, yhit, zhit;
-      for (Int_t chamber=0; chamber<10; chamber++) {
-         xhit = currentTrack->GetPosX(chamber);
-         yhit = currentTrack->GetPosY(chamber);
-         zhit = currentTrack->GetPosZ(chamber);
-//         cout <<"      chamber" << chamber << " X=" << xhit << " Y=" << yhit << " Z=" << zhit << endl;
-      }         
-   }
-   cout << "**********************************************************" << endl;
-}
-
-//-------------------------------------------------------------------
-Bool_t AliMUONRecoEvent::MakeDumpTracks(Int_t muons, TClonesArray *tracksPtr, 
-  AliMUONEventReconstructor *EventReco)
-{
-// This method takes the pointer of the list of reconstructed tracks from
-// AliMUONEventReconstructor and fill the reconstructed AliMUONRecoEvent
-// fields.
-
-       cout << "Enter MakeDumpTracks..." << endl;
-   Int_t nTracks = tracksPtr->GetEntriesFast();
-   cout << "nTracks = "<< nTracks << endl;
-   if (nTracks == 0) {
-      cout << "AliMUONRecoEvent::MakeDumpTracks: Number of tracks is zero !" << endl;
-      //AZ return kFALSE;
-   }
-   cout << tracksPtr << endl;
-   if (!tracksPtr) {
-      cout << "AliMUONRecoEvent::MakeDumpTracks() : You should call SetRecoTracksPtr() first..." << endl;
-      return kFALSE;
-   }
-       // Get event number
-   Int_t noEvent = gAlice->GetHeader()->GetEvent();
-   cout << "noEvent = "<< nTracks << endl;
-   tracksPtr->Compress();  // simple loop
-   AliMUONRecoTrack *currentTrack;
-   Int_t trackIndex, nTrackHits = 0;
-   Double_t z, pYZ, bendingSlope, nonBendingSlope;
-   Double_t pX, pY, pZ;                        // reconstructed momentum components
-   Int_t isign, flag=0;        // charge sign, flag of reconstructed track
-   Double_t alpha, beta;
-   TObjArray *hitsOnTrack = 0;
-   AliMUONTrackHit *trackHit = 0;
-   AliMUONTrack *track = 0;
-   AliMUONTrackK *trackK = 0;
-   TMatrixD *trackParamK; //AZnon
-   AliMUONTrackParam *trackParam = 0;
-   // Fill event number and number of tracks
-   fNevr = noEvent;
-   fMuons = muons; //AZ - number of muons within acceptance
-   // Loop over reconstructed tracks
-   for (trackIndex=0; trackIndex<nTracks; trackIndex++) {
-      cout << " trackIndex = " << trackIndex << endl;
-      currentTrack = AddEmptyTrack();
-      cout << " currentTrack = " << currentTrack << endl;
-
-      if (EventReco->GetTrackMethod() == 2) { // Kalman
-
-        trackK = (AliMUONTrackK*) ((*tracksPtr)[trackIndex]);
-       nTrackHits = trackK->GetNTrackHits();
-       trackParamK = trackK->GetTrackParameters();
-       isign = Int_t(TMath::Sign(1., (*trackParamK)(4,0)));
-       z = trackK->GetZ();
-       alpha = (*trackParamK)(2,0);
-       beta = (*trackParamK)(3,0);
-       pYZ = TMath::Cos(beta)/TMath::Abs((*trackParamK)(4,0));
-       pZ = pYZ/TMath::Cos(alpha);
-       pX = TMath::Sin(beta)/TMath::Abs((*trackParamK)(4,0));
-       pY = pYZ*TMath::Sin(alpha);
-
-       currentTrack->SetVertexPos(z);
-       currentTrack->SetMomReconstr(pX,pY,pZ);
-       currentTrack->SetSign(isign);
-       currentTrack->SetChi2r(trackK->GetTrackQuality());
-
-       // Check hits on the track
-       hitsOnTrack = trackK->GetHitOnTrack();
-       Float_t signal = 0;
-       Float_t tht = 0;
-       for (int ihit = 0; ihit < nTrackHits; ihit++) {
-         signal += ((AliMUONHitForRec*)((*hitsOnTrack)[ihit]))->GetTrackRefSignal();
-         tht += TMath::Min (1,((AliMUONHitForRec*)((*hitsOnTrack)[ihit]))->GetTTRTrack());
-       }
-       signal /= nTrackHits;
-       tht /= nTrackHits;
-       flag = 0;
-       if (TMath::Nint(signal) > 0) { // signal muon
-         for (int ihit = 0; ihit < nTrackHits ; ihit++) {
-           if (((AliMUONHitForRec*)((*hitsOnTrack)[ihit]))->GetTTRTrack() != TMath::Nint(tht)) flag++;
-         }
-       } else flag = -9; // background track
-       //cout << TMath::Nint(signal) << " " << TMath::Nint(tht) << " " << recTrackNt->fFlag << endl;
-       currentTrack->SetFlag(flag);
-      } else { // default tracking
-
-        track = (AliMUONTrack*) ((*tracksPtr)[trackIndex]);
-       nTrackHits = track->GetNTrackHits();
-       // track parameters at Vertex
-       trackParam = track->GetTrackParamAtVertex();
-       bendingSlope = trackParam->GetBendingSlope();
-       nonBendingSlope = trackParam->GetNonBendingSlope();
-
-       z = trackParam->GetZ();
-       pYZ = 1/TMath::Abs(trackParam->GetInverseBendingMomentum());
-       pZ = pYZ/TMath::Sqrt(1+bendingSlope*bendingSlope);
-       pX = pZ * nonBendingSlope;
-       pY = pZ * bendingSlope;
-       
-       if (trackParam->GetInverseBendingMomentum()<0) isign=-1; else isign=1;
-       currentTrack->SetVertexPos(z);
-       currentTrack->SetMomReconstr(pX,pY,pZ);
-       currentTrack->SetSign(isign);
-       //         currentTrack->SetChi2r(trackParam->GetChi2());
-       currentTrack->SetChi2r(0);
-
-       // Check hits on the track
-       hitsOnTrack = track->GetTrackHitsPtr();
-       Float_t signal = 0;
-       Float_t tht = 0;
-       AliMUONHitForRec *hitForRec = 0;
-       for (int ihit = 0; ihit < nTrackHits; ihit++) {
-         hitForRec = ((AliMUONTrackHit*)(*hitsOnTrack)[ihit])->GetHitForRecPtr();
-         signal += hitForRec->GetTrackRefSignal();
-         tht += TMath::Min (1,hitForRec->GetTTRTrack());
-       }
-       signal /= nTrackHits;
-       tht /= nTrackHits;
-       flag = 0;
-       if (TMath::Nint(signal) > 0) { // signal muon
-         for (int ihit = 0; ihit < nTrackHits ; ihit++) {
-           hitForRec = ((AliMUONTrackHit*)(*hitsOnTrack)[ihit])->GetHitForRecPtr();
-           if (hitForRec->GetTTRTrack() != TMath::Nint(tht)) flag++;
-         }
-       } else flag = -9; // background track
-       //cout << TMath::Nint(signal) << " " << TMath::Nint(tht) << " " << recTrackNt->fFlag << endl;
-       currentTrack->SetFlag(flag);
-      }
-     
-      Double_t xhit,yhit,zhit;
-      // Loop over track hits
-      for (Int_t trackHitIndex = 0; trackHitIndex < nTrackHits; trackHitIndex++) {
-       if (EventReco->GetTrackMethod() == 2) { // Kalman
-         xhit = ((AliMUONHitForRec*)((*hitsOnTrack)[trackHitIndex]))->GetNonBendingCoor();
-         yhit = ((AliMUONHitForRec*)((*hitsOnTrack)[trackHitIndex]))->GetBendingCoor();
-         zhit = ((AliMUONHitForRec*)((*hitsOnTrack)[trackHitIndex]))->GetZ();    
-       } else {
-         trackHit = (AliMUONTrackHit*) (*(track->GetTrackHitsPtr()))[trackHitIndex];
-         xhit = trackHit->GetHitForRecPtr()->GetNonBendingCoor();
-         yhit = trackHit->GetHitForRecPtr()->GetBendingCoor();
-         zhit = trackHit->GetHitForRecPtr()->GetZ();
-       }
-       if (trackHitIndex >= 0 && trackHitIndex < 10) {
-         currentTrack->SetHitPosition(trackHitIndex,xhit,yhit,zhit);
-       } else { cout << "track " << trackIndex << " hit out of range" << endl;} 
-      }
-   
-   }
-   cout << "Leave MakeDumpTracks..." << endl;
-   return kTRUE;
-}
-
-//-------------------------------------------------------------------
-void AliMUONRecoEvent::Streamer(TBuffer &R__b)
-{
-// Streams an object of class AliMUONRecoEvent
-   if (R__b.IsReading()) {
-      fTracks->Clear();
-      AliMUONRecoEvent::Class()->ReadBuffer(R__b, this);
-   } else {
-      cout << "...writing event to file...\n";
-      AliMUONRecoEvent::Class()->WriteBuffer(R__b, this);
-   }
-}
diff --git a/MUON/AliMUONRecoEvent.h b/MUON/AliMUONRecoEvent.h
deleted file mode 100644 (file)
index 92d1769..0000000
+++ /dev/null
@@ -1,64 +0,0 @@
-#ifndef ALIMUONRECOEVENT_H
-#define ALIMUONRECOEVENT_H
-
-/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
- * See cxx source for full Copyright notice                               */
-
-/*$Id$*/
-// Revision of includes 07/05/2004
-
-// Authors : M.Gheata, A.Gheata 09/10/00
-
-#include <TObject.h>
-
-class TClonesArray;
-
-class AliMUONEventReconstructor;
-class AliMUONRecoTrack;
-
-/////////////////////////////////////////////////////////////////////
-//                                                                 //
-// AliMUONRecoEvent                                                //
-//                                                                 //
-// This class handles an array of reconstructed tracks.            //
-// It provides :                                                   //
-//     - filling the tracks array according to the information    //
-//        stored in AliMUONEventReconstructor class ;              //
-//     - printing event and track informations : event number,    //
-//       number of tracks, hits positions, reconstr. momentum.    //
-//                                                                 //
-/////////////////////////////////////////////////////////////////////
-
-class AliMUONRecoEvent : public TObject 
-{
-  public:
-    AliMUONRecoEvent(Int_t eventNo = 0);
-    virtual ~AliMUONRecoEvent();
-
-    AliMUONRecoTrack* AddEmptyTrack();
-    void              Clear(Option_t *option = "");
-    void              EventInfo();
-    Int_t             GetNoEvent()  const {return fNevr;}
-    Int_t             GetNoTracks() const {return fNtracks;}
-    Bool_t            MakeDumpTracks(Int_t muons, TClonesArray *tracksPtr, AliMUONEventReconstructor *MuonReco);
-    void              SetNoEvent(Int_t event)  {fNevr = event;}
-    void              SetNoTracks(Int_t ntracks) {fNtracks = ntracks;} 
-
-    void              SetNoMuons(Int_t muons) {fMuons = muons;} 
-
-    TClonesArray*     TracksPtr() {return fTracks;}
-    
- protected:    
-    AliMUONRecoEvent(const AliMUONRecoEvent& rhs);
-    AliMUONRecoEvent& operator=(const AliMUONRecoEvent& rhs);
-
- private:
-   Int_t             fNevr;          // event number
-   Int_t             fNtracks;       // number of tracks
-   Int_t             fMuons;         // number of muons within acceptance
-   TClonesArray      *fTracks;      //-> list of AliMUONRecoTracks
-   
-   ClassDef(AliMUONRecoEvent,1)        // Reconstructed event for MUON module
-};
-
-#endif
diff --git a/MUON/AliMUONReconstHit.cxx b/MUON/AliMUONReconstHit.cxx
deleted file mode 100644 (file)
index 55de973..0000000
+++ /dev/null
@@ -1,44 +0,0 @@
-/**************************************************************************
- * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
- *                                                                        *
- * Author: The ALICE Off-line Project.                                    *
- * Contributors are mentioned in the code where appropriate.              *
- *                                                                        *
- * Permission to use, copy, modify and distribute this software and its   *
- * documentation strictly for non-commercial purposes is hereby granted   *
- * without fee, provided that the above copyright notice appears in all   *
- * copies and that both the copyright notice and this permission notice   *
- * appear in the supporting documentation. The authors make no claims     *
- * about the suitability of this software for any purpose. It is          *
- * provided "as is" without express or implied warranty.                  *
- **************************************************************************/
-
-/* $Id$ */
-
-#include "AliMUONReconstHit.h"
-
-ClassImp(AliMUONReconstHit)
-
-//_____________________________________________________________________________
-AliMUONReconstHit::AliMUONReconstHit() 
-  : TObject()
-{
-// Default constructor
-
-  fCorrelIndex[0]=fCorrelIndex[1]=fCorrelIndex[2]=fCorrelIndex[3]=0;
-  fX[0]=fX[1]=fX[2]=fX[3]=0; fY[0]=fY[1]=fY[2]=fY[3]=0; 
-}
-
-//_____________________________________________________________________________
-AliMUONReconstHit::AliMUONReconstHit(Int_t *idx, Float_t *x, Float_t *y)
-  : TObject()
-{
-    //
-    // Creates a MUON correlation object
-    //
-    for(Int_t i=0; i<4; i++) {
-       fCorrelIndex[i]  = idx[i];
-       fX[i]    = x[i];
-       fY[i]    = y[i];
-    }
-}
diff --git a/MUON/AliMUONReconstHit.h b/MUON/AliMUONReconstHit.h
deleted file mode 100644 (file)
index 4749cde..0000000
+++ /dev/null
@@ -1,31 +0,0 @@
-#ifndef ALIMUONRECONSTHIT_H
-#define ALIMUONRECONSTHIT_H
-
-/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
- * See cxx source for full Copyright notice                               */
-
-/* $Id$ */
-// Revision of includes 07/05/2004
-
-#include <TObject.h>
-
-class AliMUONReconstHit : public TObject 
-{
-  public:
-    AliMUONReconstHit();
-    AliMUONReconstHit(Int_t *idx, Float_t *x, Float_t *y);
-    virtual ~AliMUONReconstHit() {}
-   
-  private:
-
-    // correlation starts from the 1-st cathode  
-    // last number in arrays corresponds to cluster on 1-st cathode
-
-    Int_t       fCorrelIndex[4];  // entry number in TreeR for the associated 
-                                 // cluster candidates on the 2-nd cathode
-    Float_t     fX[4]  ;          // X of clusters on the 2-nd cathode  
-    Float_t     fY[4]  ;          // Y of clusters
-
-  ClassDef(AliMUONReconstHit,1)  // Reconstructed Hit Object for set:MUON
-};
-#endif