]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - MUON/AliMUONRecoDisplay.cxx
Base Particle Cuts moved to the separate file. Property eneum defined namespace of...
[u/mrichter/AliRoot.git] / MUON / AliMUONRecoDisplay.cxx
index 6d13a8fa4eca2276afc0e6eaf7004d9fe508d177..41a4ff94436d37245a171d27576d1d9651a55b95 100644 (file)
  * provided "as is" without express or implied warranty.                  *
  **************************************************************************/
 
-/*
-$Log$
-Revision 1.3  2000/12/21 17:51:54  morsch
-RN3 violations corrected
-
-Revision 1.2  2000/11/23 10:09:39  gosset
-Bug correction in AliMUONRecoDisplay.
-Copyright, $Log$
-Copyright, Revision 1.3  2000/12/21 17:51:54  morsch
-Copyright, RN3 violations corrected
-Copyright,, $Id$, comments at the right place for automatic documentation,
-in AliMUONRecoEvent and AliMUONRecoDisplay
-
-*/
+/* $Id$ */
 
 //Authors: Mihaela Gheata, Andrei Gheata 09/10/00
 //////////////////////////////////////////////////////////////////////
@@ -57,22 +44,40 @@ in AliMUONRecoEvent and AliMUONRecoDisplay
 //                                                                  //
 //////////////////////////////////////////////////////////////////////
 
-#include <iostream.h>
-#include <AliRun.h>
-#include <TClonesArray.h>
-#include "AliMUONRecoEvent.h"
-#include "AliMUONRecoDisplay.h"
 #include <TROOT.h>
-#include <AliPoints.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 <TView.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"
 
 ClassImp(AliMUONRecoDisplay)
 
 //-------------------------------------------------------------------
 AliMUONRecoDisplay::AliMUONRecoDisplay(Int_t nevent)
-                  :AliDisplay(750)
+  AliDisplay(750)
 {
 //************ Constructor of the reco. event display**********
    // get reconstructed event from file
@@ -114,6 +119,15 @@ AliMUONRecoDisplay::AliMUONRecoDisplay(Int_t nevent)
    MapEvent(nevent);
 }
 
+//-------------------------------------------------------------------
+AliMUONRecoDisplay::AliMUONRecoDisplay(const AliMUONRecoDisplay& rhs)
+  : AliDisplay(rhs)
+{
+// Protected copy constructor
+
+  Fatal("AliMUONRecoDisplay", "Not implemented.");
+}
+
 //-------------------------------------------------------------------
 AliMUONRecoDisplay::~AliMUONRecoDisplay()
 {
@@ -128,6 +142,20 @@ AliMUONRecoDisplay::~AliMUONRecoDisplay()
    }
    delete fEvGen;
 }
+
+//-------------------------------------------------------------------
+AliMUONRecoDisplay&  
+AliMUONRecoDisplay::operator=(const AliMUONRecoDisplay& rhs)
+{
+// Protected assignement operator
+
+  if (this == &rhs) return *this;
+
+  Fatal("operator=", "Not implemented.");
+    
+  return *this;  
+}    
+          
 //-------------------------------------------------------------------
 Bool_t AliMUONRecoDisplay::Event(Int_t nevent)
 {
@@ -172,7 +200,6 @@ void AliMUONRecoDisplay::MapEvent(Int_t nevent)
    if (fEvGen) fEvGen->Clear();
    fEvGen->SetNoEvent(nevent);
    // get list of particles
-   TClonesArray *particles = gAlice->Particles();
    // connect MUON module
    AliDetector *pMUON = gAlice->GetDetector("MUON");
    if (!pMUON) {
@@ -180,7 +207,7 @@ void AliMUONRecoDisplay::MapEvent(Int_t nevent)
       gApplication->Terminate(0);
    }
    // get the number of generated tracks
-   Int_t ntracks = (Int_t)gAlice->TreeH()->GetEntries();
+   Int_t ntracks = (Int_t)pMUON->TreeH()->GetEntries();
    // Fill the fEvGen object
    AliMUONRecoTrack *gtrack = 0;
    AliMUONHit *hit = 0;
@@ -190,7 +217,7 @@ void AliMUONRecoDisplay::MapEvent(Int_t nevent)
    for (Int_t track=0; track<ntracks; track++) {
       hit = (AliMUONHit *) pMUON->FirstHit(track);
       if (!hit) continue;
-      particle = (TParticle *) particles->UncheckedAt(hit->Track());
+      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()));
@@ -200,7 +227,7 @@ void AliMUONRecoDisplay::MapEvent(Int_t nevent)
         for (AliMUONHit *muonHit=(AliMUONHit*)pMUON->FirstHit(track);
              muonHit;
              muonHit=(AliMUONHit*)pMUON->NextHit()) {
-           ch = muonHit->fChamber - 1;
+           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());
@@ -417,7 +444,29 @@ void AliMUONRecoDisplay::ShowNextEvent(Int_t delta)
       if (newEvent<0 || newEvent>(gAlice->TreeE()->GetEntries() - 1)) return;
       Int_t nparticles = gAlice->GetEvent(newEvent);
       cout << "Event : " << newEvent << " with " << nparticles << " particles\n";
-      if (!gAlice->TreeH()) return;
+
+/******************************************************************/
+      AliConfig* config = AliConfig::Instance();
+      TFolder* topfold = (TFolder*)config->GetTopFolder();
+      if (topfold == 0x0)
+       {
+         Error("Exec","Can not get Alice top folder");
+         return; 
+       }
+      TString fmdfoldname(config->GetDataFolderName()+"/"+"MUON");
+      TFolder* fmdfold = (TFolder*)topfold->FindObject(fmdfoldname);
+      if (fmdfold == 0x0)
+       {
+         Error("Exec","Can not get MUON folder");
+         return; 
+       }
+      TTree* treeH = dynamic_cast<TTree*>(fmdfold->FindObject("TreeH"));
+      if (treeH == 0x0)
+       {
+         Error("Exec","Can not get TreeH");
+         return;
+       }
+/******************************************************************/     
       MapEvent(newEvent);
       fHighlited = -1;
    }
@@ -427,7 +476,7 @@ void AliMUONRecoDisplay::ShowNextEvent(Int_t delta)
    if (gROOT->GetListOfCanvases()->FindObject("xy")) XYPlot();
 }
 //-------------------------------------------------------------------
-Bool_t AliMUONRecoDisplay::IsReconstructible(Int_t track)
+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
@@ -440,7 +489,7 @@ Bool_t AliMUONRecoDisplay::IsReconstructible(Int_t track)
    for (AliMUONHit *muonHit=(AliMUONHit*)pMUON->FirstHit(track);
         muonHit;
        muonHit=(AliMUONHit*)pMUON->NextHit()) {
-      ch = muonHit->fChamber - 1;
+      ch = muonHit->Chamber() - 1;
       if (ch<0 || ch>9) continue;
       chHit[ch] = kTRUE;
    }
@@ -776,5 +825,3 @@ void AliMUONRecoDisplay::PolyLineInfo(TClonesArray *line3Dlist)
       }
    }
 }
-
-