]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - MUON/AliMUONDisplay.cxx
modified scoping of variable to cmply with HP compiler rules
[u/mrichter/AliRoot.git] / MUON / AliMUONDisplay.cxx
index 8b926cc72e28e01c0fba7d23a2762e760d22f47a..089e1f83e2980ef05f5d085a64d37e31f39f3de5 100644 (file)
 
 /*
 $Log$
+Revision 1.7  2000/10/02 21:28:09  fca
+Removal of useless dependecies via forward declarations
+
+Revision 1.6  2000/07/03 11:54:57  morsch
+AliMUONSegmentation and AliMUONHitMap have been replaced by AliSegmentation and AliHitMap in STEER
+The methods GetPadIxy and GetPadXxy of AliMUONSegmentation have changed name to GetPadI and GetPadC.
+
+Revision 1.5  2000/06/28 15:16:35  morsch
+(1) Client code adapted to new method signatures in AliMUONSegmentation (see comments there)
+to allow development of slat-muon chamber simulation and reconstruction code in the MUON
+framework. The changes should have no side effects (mostly dummy arguments).
+(2) Hit disintegration uses 3-dim hit coordinates to allow simulation
+of chambers with overlapping modules (MakePadHits, Disintegration).
+
+Revision 1.4  2000/06/27 09:46:57  morsch
+kMAXZOOM global constant now in AliMUONConstants
+
+Revision 1.3  2000/06/26 14:02:38  morsch
+Add class AliMUONConstants with MUON specific constants using static memeber data and access methods.
+
+Revision 1.2  2000/06/15 07:58:48  morsch
+Code from MUON-dev joined
+
 Revision 1.1.2.15  2000/06/14 14:37:53  morsch
 method Trigger() modified
 
@@ -103,6 +126,7 @@ it is now really the Z position of the chambers.
 #include <TVirtualX.h>
 #include <TMath.h>
 #include <TMatrix.h>
+#include <TGeometry.h>
 #include <X3DBuffer.h>
 #include <TMarker3DBox.h>
 
@@ -119,10 +143,10 @@ it is now really the Z position of the chambers.
 #include "AliMUONDigit.h"
 #include "AliMUONRawCluster.h"
 
-#include "AliMUONSegmentation.h"
+#include "AliSegmentation.h"
 #include "AliMUONResponse.h"
 #include "AliMUONChamber.h"
-
+#include "AliMUONConstants.h"
 // to manage the same zoom on both cathodes
 
 
@@ -550,8 +574,8 @@ void AliMUONDisplay::DrawSegmentation()
     Int_t icat=1;
     
     AliMUON *pMUON  = (AliMUON*)gAlice->GetModule("MUON");
-    AliMUONChamber*  iChamber;
-    AliMUONSegmentation*  seg;
+    AliMUONChamber*   iChamber;
+    AliSegmentation*  seg;
     iChamber = &(pMUON->Chamber(fChamber));
     seg=iChamber->SegmentationModel(icat);
     Float_t zpos=iChamber->Z();
@@ -562,13 +586,13 @@ void AliMUONDisplay::DrawSegmentation()
        for (Int_t j=0; j<seg->Npy(); j++) {
            Float_t y0;
            y0=j*seg->Dpy()-seg->Dpy()/2.;
-           for (seg->FirstPad(0.,y0,300,0.); 
+           for (seg->FirstPad(0.,y0,0,300,0.); 
                 seg->MorePads();
                 seg->NextPad())
            {
                if (seg->ISector()==0) continue;
-               Float_t x,y;
-               seg->GetPadCxy(seg->Ix(), seg->Iy(), x, y);
+               Float_t x,y,z;
+               seg->GetPadC(seg->Ix(), seg->Iy(), x, y, z);
                Float_t dpx=seg->Dpx(seg->ISector())/2;
                Float_t dpy=seg->Dpy(seg->ISector())/2;
                marker=new TMarker3DBox(x,y,zpos,dpx,dpy,0,0,0);
@@ -583,14 +607,14 @@ void AliMUONDisplay::DrawSegmentation()
            Float_t x0=j*seg->Dpx();
            Float_t y0=TMath::Sqrt(r*r-x0*x0);
            
-           for (seg->FirstPad(x0,0,0,y0); 
+           for (seg->FirstPad(x0,0,0,0,y0); 
                 seg->MorePads();
                 seg->NextPad())
            {
                if (seg->ISector()==0) continue;
                
-               Float_t x,y;
-               seg->GetPadCxy(seg->Ix(), seg->Iy(), x, y);
+               Float_t x,y,z;
+               seg->GetPadC(seg->Ix(), seg->Iy(), x, y, z);
                Float_t dpx=seg->Dpx(seg->ISector())/2;
                Float_t dpy=seg->Dpy(seg->ISector())/2;
                marker=new TMarker3DBox(x,y,zpos,dpx,dpy,0,0,0);
@@ -847,7 +871,7 @@ void AliMUONDisplay::ExecuteEvent(Int_t event, Int_t px, Int_t py)
        if (x1 < x0) {temp = x0; x0 = x1; x1 = temp;}
        if (y1 < y0) {temp = y0; y0 = y1; y1 = temp;}
        gPad->Range(x0,y0,x1,y1);
-       if (fZooms < kMAXZOOM-1) {
+       if (fZooms < AliMUONConstants::MaxZoom()-1) {
            fZooms++;
            fZoomX0[fZooms] = x0;
            fZoomY0[fZooms] = y0;
@@ -874,7 +898,7 @@ void AliMUONDisplay::LoadDigits(Int_t chamber, Int_t cathode)
     
     AliMUON *pMUON  = (AliMUON*)gAlice->GetModule("MUON");
     AliMUONChamber*       iChamber;
-    AliMUONSegmentation*  segmentation;
+    AliSegmentation*      segmentation;
     AliMUONResponse*      response;
 
     TClonesArray *muonDigits  = pMUON->DigitsAddress(chamber-1);
@@ -928,8 +952,8 @@ void AliMUONDisplay::LoadDigits(Int_t chamber, Int_t cathode)
        }
 
        // get the center of the pad - add on x and y half of pad size
-       Float_t xpad, ypad;
-       segmentation->GetPadCxy(mdig->fPadX, mdig->fPadY,xpad, ypad);
+       Float_t xpad, ypad, zpad;
+       segmentation->GetPadC(mdig->fPadX, mdig->fPadY,xpad, ypad, zpad);
        
         Int_t isec=segmentation->Sector(mdig->fPadX, mdig->fPadY);
         Float_t dpx=segmentation->Dpx(isec)/2;
@@ -956,9 +980,10 @@ void AliMUONDisplay::LoadDigits(Int_t chamber, Int_t cathode)
         points->SetPoint(0,xpad,ypad,zpos);    
        for (Int_t imark=0;imark<nPara; imark++)
        {
-           segmentation->GetPadCxy(mdig->fPadX + imark*offset, mdig->fPadY,xpad, ypad);
+           Int_t lineColor = (zpad-zpos > 0) ? 2:3;
+           segmentation->GetPadC(mdig->fPadX + imark*offset, mdig->fPadY,xpad, ypad, zpad);
            marker=new TMarker3DBox(xpad,ypad,zpos,dpx,dpy,0,0,0);
-           marker->SetLineColor(2);
+           marker->SetLineColor(lineColor);
            marker->SetFillStyle(1001);
            marker->SetFillColor(color);
            marker->SetRefObject((TObject*)points);
@@ -1107,11 +1132,11 @@ void AliMUONDisplay::LoadHits(Int_t chamber)
             points->SetMarkerColor(kRed);
             points->SetMarkerStyle(5);
             points->SetMarkerSize(1.);
-            points->SetParticle(mHit->fTrack);
+            points->SetParticle(mHit->Track());
             points->SetHitIndex(hit);
             points->SetTrackIndex(track);
             points->SetDigitIndex(-1);
-           points->SetPoint(0,mHit->fX,mHit->fY,zpos);
+           points->SetPoint(0,mHit->X(),mHit->Y(),zpos);
        }
        nhold+=nhits;
     }
@@ -1150,7 +1175,7 @@ void AliMUONDisplay::NextChamber(Int_t delta)
   // to go from chamber to next chamber if delta = 1
   // or previous chamber otherwise
     if (delta == 1) {
-       if (fChamber < kNCH) fChamber++;
+       if (fChamber < AliMUONConstants::NCh()) fChamber++;
     } else {
        if (fChamber > 1) fChamber--;
     }