/*
$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
#include <TVirtualX.h>
#include <TMath.h>
#include <TMatrix.h>
+#include <TGeometry.h>
#include <X3DBuffer.h>
#include <TMarker3DBox.h>
#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
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();
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);
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);
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;
AliMUON *pMUON = (AliMUON*)gAlice->GetModule("MUON");
AliMUONChamber* iChamber;
- AliMUONSegmentation* segmentation;
+ AliSegmentation* segmentation;
AliMUONResponse* response;
TClonesArray *muonDigits = pMUON->DigitsAddress(chamber-1);
}
// 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;
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);
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;
}
// 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--;
}