The methods GetPadIxy and GetPadXxy of AliMUONSegmentation have changed name to GetPadI and GetPadC.
**************************************************************************/
/*
$Log$
+Revision 1.25 2000/06/29 12:34:09 morsch
+AliMUONSegmentation class has been made independent of AliMUONChamber. This makes
+it usable with any other geometry class. The link to the object to which it belongs is
+established via an index. This assumes that there exists a global geometry manager
+from which the pointer to the parent object can be obtained (in our case gAlice).
+
Revision 1.24 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
#include "AliMUONRawCluster.h"
#include "AliMUONLocalTrigger.h"
#include "AliMUONGlobalTrigger.h"
-#include "AliMUONHitMap.h"
+#include "AliHitMap.h"
#include "AliMUONHitMapA1.h"
#include "AliMUONChamberTrigger.h"
#include "AliMUONConstants.h"
fAccMax=angmax;
}
//___________________________________________
-void AliMUON::SetSegmentationModel(Int_t id, Int_t isec, AliMUONSegmentation *segmentation)
+void AliMUON::SetSegmentationModel(Int_t id, Int_t isec, AliSegmentation *segmentation)
{
((AliMUONChamber*) (*fChambers)[id])->SetSegmentationModel(isec, segmentation);
char *addBackground = strstr(option,"Add");
- AliMUONChamber* iChamber;
- AliMUONSegmentation* segmentation;
+ AliMUONChamber* iChamber;
+ AliSegmentation* segmentation;
Int_t trk[50];
Int_t digits[5];
AliMUON *pMUON = (AliMUON *) gAlice->GetModule("MUON");
- AliMUONHitMap** hitMap= new AliMUONHitMap* [AliMUONConstants::NCh()];
+ AliHitMap** hitMap= new AliHitMap* [AliMUONConstants::NCh()];
for (Int_t i=0; i<AliMUONConstants::NCh(); i++) {hitMap[i]=0;}
if (addBackground ) {
if(first) {
//
// loop over cathodes
//
- AliMUONHitMap* hm;
+ AliHitMap* hm;
Int_t countadr=0;
for (int icat=0; icat<2; icat++) {
Int_t counter=0;
// fill the info array
Float_t thex, they, thez;
segmentation=iChamber->SegmentationModel(cathode);
- segmentation->GetPadCxy(ipx,ipy,thex,they,thez);
+ segmentation->GetPadC(ipx,ipy,thex,they,thez);
// Float_t rpad=TMath::Sqrt(thex*thex+they*they);
// if (rpad < rmin || iqpad ==0 || rpad > rmax) continue;
if (cathode != (icat+1)) continue;
Float_t thex, they, thez;
segmentation=iChamber->SegmentationModel(cathode);
- segmentation->GetPadCxy(ipx,ipy,thex,they,thez);
+ segmentation->GetPadC(ipx,ipy,thex,they,thez);
Float_t rpad=TMath::Sqrt(thex*thex+they*they);
if (rpad < rmin || iqpad ==0 || rpad > rmax) continue;
new((*pAddress)[countadr++]) TVector(2);
void AliMUON::Streamer(TBuffer &R__b)
{
// Stream an object of class AliMUON.
- AliMUONChamber *iChamber;
+ AliMUONChamber *iChamber;
AliMUONTriggerCircuit *iTriggerCircuit;
- AliMUONSegmentation *segmentation;
- AliMUONResponse *response;
- TClonesArray *digitsaddress;
- TClonesArray *rawcladdress;
+ AliSegmentation *segmentation;
+ AliMUONResponse *response;
+ TClonesArray *digitsaddress;
+ TClonesArray *rawcladdress;
Int_t i;
if (R__b.IsReading()) {
Version_t R__v = R__b.ReadVersion(); if (R__v) { }
class AliMUONGlobalTrigger;
class AliMUONTriggerCircuit;
class AliMUONTriggerDecision;
-class AliMUONSegmentation;
+class AliSegmentation;
class AliMUONResponse;
class AliMUONHit;
class AliMUONPadHit;
virtual void SetMaxAdc(Int_t id, Int_t p1);
// Set Segmentation and Response Model
virtual void SetSegmentationModel(Int_t id, Int_t isec,
- AliMUONSegmentation *segmentation);
+ AliSegmentation *segmentation);
virtual void SetResponseModel(Int_t id, AliMUONResponse *response);
virtual void SetNsec(Int_t id, Int_t nsec);
// Set Reconstruction Model
**************************************************************************/
/*
$Log$
+Revision 1.4 2000/06/29 12:34:09 morsch
+AliMUONSegmentation class has been made independent of AliMUONChamber. This makes
+it usable with any other geometry class. The link to the object to which it belongs is
+established via an index. This assumes that there exists a global geometry manager
+from which the pointer to the parent object can be obtained (in our case gAlice).
+
Revision 1.3 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
*/
#include "AliMUONChamber.h"
-#include "AliMUONSegmentation.h"
#include "AliMUONResponse.h"
#include "TMath.h"
//
// ... for chamber segmentation
if ((*fSegmentation)[0])
- ((AliMUONSegmentation *) (*fSegmentation)[0])->Init(fId);
+ ((AliSegmentation *) (*fSegmentation)[0])->Init(fId);
if (fnsec==2) {
if ((*fSegmentation)[1])
- ((AliMUONSegmentation *) (*fSegmentation)[1])->Init(fId);
+ ((AliSegmentation *) (*fSegmentation)[1])->Init(fId);
}
}
{
// Ask segmentation if signal should be generated
if (fnsec==1) {
- return ((AliMUONSegmentation*) (*fSegmentation)[0])
+ return ((AliSegmentation*) (*fSegmentation)[0])
->SigGenCond(x, y, z) ;
} else {
- return (((AliMUONSegmentation*) (*fSegmentation)[0])
+ return (((AliSegmentation*) (*fSegmentation)[0])
->SigGenCond(x, y, z)) ||
- (((AliMUONSegmentation*) (*fSegmentation)[1])
+ (((AliSegmentation*) (*fSegmentation)[1])
->SigGenCond(x, y, z)) ;
}
}
// Initialisation of segmentation for hit
//
if (fnsec==1) {
- ((AliMUONSegmentation*) (*fSegmentation)[0])->SigGenInit(x, y, z) ;
+ ((AliSegmentation*) (*fSegmentation)[0])->SigGenInit(x, y, z) ;
} else {
- ((AliMUONSegmentation*) (*fSegmentation)[0])->SigGenInit(x, y, z) ;
- ((AliMUONSegmentation*) (*fSegmentation)[1])->SigGenInit(x, y, z) ;
+ ((AliSegmentation*) (*fSegmentation)[0])->SigGenInit(x, y, z) ;
+ ((AliSegmentation*) (*fSegmentation)[1])->SigGenInit(x, y, z) ;
}
}
nnew=0;
for (Int_t i=1; i<=fnsec; i++) {
qcheck=0;
- AliMUONSegmentation * segmentation=
- (AliMUONSegmentation *) (*fSegmentation)[i-1];
+ AliSegmentation * segmentation=
+ (AliSegmentation *) (*fSegmentation)[i-1];
for (segmentation->FirstPad(xhit, yhit, zhit, dx, dy);
segmentation->MorePads();
segmentation->NextPad())
/* $Id$ */
#include "TObjArray.h"
-#include "AliMUONSegmentation.h"
+#include "AliSegmentation.h"
#include "AliMUONResponse.h"
class AliMUONClusterFinderVS;
//class AliMUONResponse ;
-//class AliMUONSegmentation ;
+//class AliSegmentation ;
class AliMUONChamber:
public TObject
virtual void SetResponseModel(AliMUONResponse* thisResponse) {fResponse=thisResponse;}
//
// Set segmentation model
- virtual void SetSegmentationModel(Int_t i, AliMUONSegmentation* thisSegmentation) {
+ virtual void SetSegmentationModel(Int_t i, AliSegmentation* thisSegmentation) {
(*fSegmentation)[i-1] = thisSegmentation;
}
// Set Cluster reconstruction model
virtual AliMUONResponse* &ResponseModel(){return fResponse;}
//
// Get reference to segmentation model
- virtual AliMUONSegmentation* SegmentationModel(Int_t isec) {
- return (AliMUONSegmentation *) (*fSegmentation)[isec-1];
+ virtual AliSegmentation* SegmentationModel(Int_t isec) {
+ return (AliSegmentation *) (*fSegmentation)[isec-1];
}
virtual TObjArray* ChamberSegmentation() {return fSegmentation;}
// Get pointer to cluster reconstruction model
virtual void SetMaxAdc(Int_t p1) {fResponse->SetMaxAdc(p1);}
// Set Pad size
virtual void SetPadSize(Int_t isec, Float_t p1, Float_t p2) {
- ((AliMUONSegmentation*) (*fSegmentation)[isec-1])->SetPadSize(p1,p2);
+ ((AliSegmentation*) (*fSegmentation)[isec-1])->SetPadSize(p1,p2);
}
//
// Cluster formation method (charge disintegration)
/*
$Log$
+Revision 1.5 2000/06/29 12:34:09 morsch
+AliMUONSegmentation class has been made independent of AliMUONChamber. This makes
+it usable with any other geometry class. The link to the object to which it belongs is
+established via an index. This assumes that there exists a global geometry manager
+from which the pointer to the parent object can be obtained (in our case gAlice).
+
Revision 1.4 2000/06/29 06:52:02 pcrochet
pow changed to TMath::Power
Float_t qp;
nnew=0;
for (Int_t i=1; i<=fnsec; i++) {
- AliMUONSegmentation * segmentation=
- (AliMUONSegmentation*) (*fSegmentation)[i-1];
+ AliSegmentation * segmentation=
+ (AliSegmentation*) (*fSegmentation)[i-1];
// Find the module & strip Id. which has fired
Int_t ix,iy;
- segmentation->GetPadIxy(xhit,yhit,0,ix,iy);
+ segmentation->GetPadI(xhit,yhit,0,ix,iy);
segmentation->SetPad(ix,iy);
// treatment of GEANT hits w/o corresponding strip (due to the fact that
// neighbour real coordinates (just for checks here)
Float_t x,y,z;
- segmentation->GetPadCxy(xList[j],yList[j],x,y,z);
+ segmentation->GetPadC(xList[j],yList[j],x,y,z);
// set pad (fx fy & fix fiy are the current pad coord. & Id.)
segmentation->SetPad(xList[j],yList[j]);
// get the chamber (i.e. current strip) response
**************************************************************************/
/*
$Log$
+Revision 1.7 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.6 2000/06/28 12:19:18 morsch
More consequent seperation of global input data services (AliMUONClusterInput singleton) and the
cluster and hit reconstruction algorithms in AliMUONClusterFinderVS.
#include "AliMUONClusterFinderVS.h"
#include "AliMUONDigit.h"
#include "AliMUONRawCluster.h"
-#include "AliMUONSegmentation.h"
+#include "AliSegmentation.h"
#include "AliMUONResponse.h"
-#include "AliMUONHitMap.h"
#include "AliMUONHitMapA1.h"
#include "AliRun.h"
#include "AliMUON.h"
fQ[i][cath] = fDig[i][cath]->fSignal;
// pad centre coordinates
fInput->Segmentation(cath)->
- GetPadCxy(fIx[i][cath], fIy[i][cath], fX[i][cath], fY[i][cath], zdum);
+ GetPadC(fIx[i][cath], fIy[i][cath], fX[i][cath], fY[i][cath], zdum);
} // loop over cluster digits
} // loop over cathodes
// get neighbours for that digit and assume that it is local maximum
isLocal[i][cath]=kTRUE;
// compare signal to that on the two neighbours on the left and on the right
- fInput->Segmentation(cath)->GetPadIxy(fX[i][cath],fY[i][cath]+dpy,0,ix,iy);
+ fInput->Segmentation(cath)->GetPadI(fX[i][cath],fY[i][cath]+dpy,0,ix,iy);
// iNN counts the number of neighbours with signal, it should be 1 or 2
Int_t iNN=0;
if (fHitMap[cath]->TestHit(ix, iy)!=kEmpty) {
digt=(AliMUONDigit*) fHitMap[cath]->GetHit(ix,iy);
if (digt->fSignal > fQ[i][cath]) isLocal[i][cath]=kFALSE;
}
- fInput->Segmentation(cath)->GetPadIxy(fX[i][cath],fY[i][cath]-dpy,0,ix,iy);
+ fInput->Segmentation(cath)->GetPadI(fX[i][cath],fY[i][cath]-dpy,0,ix,iy);
if (fHitMap[cath]->TestHit(ix, iy)!=kEmpty) {
iNN++;
digt=(AliMUONDigit*) fHitMap[cath]->GetHit(ix,iy);
// get neighbours for that digit and assume that it is local maximum
isLocal[i][cath]=kTRUE;
// compare signal to that on the two neighbours on the left and on the right
- fInput->Segmentation(cath)->GetPadIxy(fX[i][cath]+dpx,fY[i][cath],0,ix,iy);
+ fInput->Segmentation(cath)->GetPadI(fX[i][cath]+dpx,fY[i][cath],0,ix,iy);
// iNN counts the number of neighbours with signal, it should be 1 or 2
Int_t iNN=0;
if (fHitMap[cath]->TestHit(ix, iy)!=kEmpty) {
digt=(AliMUONDigit*) fHitMap[cath]->GetHit(ix,iy);
if (digt->fSignal > fQ[i][cath]) isLocal[i][cath]=kFALSE;
}
- fInput->Segmentation(cath)->GetPadIxy(fX[i][cath]-dpx,fY[i][cath],0,ix,iy);
+ fInput->Segmentation(cath)->GetPadI(fX[i][cath]-dpx,fY[i][cath],0,ix,iy);
if (fHitMap[cath]->TestHit(ix, iy)!=kEmpty) {
iNN++;
digt=(AliMUONDigit*) fHitMap[cath]->GetHit(ix,iy);
}
//
if (flag) {
- fInput->Segmentation(cath)->GetPadCxy(ix, iy, x, y, z);
+ fInput->Segmentation(cath)->GetPadC(ix, iy, x, y, z);
c->fX[cath] += q*x;
c->fY[cath] += q*y;
c->fQ[cath] += q;
//
x=c->fX[cath];
y=c->fY[cath];
- fInput->Segmentation(cath)->GetPadIxy(x, y, 0, ix, iy);
- fInput->Segmentation(cath)->GetPadCxy(ix, iy, x, y, z);
+ fInput->Segmentation(cath)->GetPadI(x, y, 0, ix, iy);
+ fInput->Segmentation(cath)->GetPadC(ix, iy, x, y, z);
Int_t isec=fInput->Segmentation(cath)->Sector(ix,iy);
TF1* cogCorr = fInput->Segmentation(cath)->CorrFunc(isec-1);
{
dig = fInput->Digit(cath,c->fIndexMap[i][cath]);
fInput->Segmentation(cath)->
- GetPadCxy(dig->fPadX,dig->fPadY,xpad,ypad, zpad);
+ GetPadC(dig->fPadX,dig->fPadY,xpad,ypad, zpad);
fprintf(stderr,"x %f y %f cx %f cy %f\n",xpad,ypad,c->fX[0],c->fY[0]);
dx = xpad - c->fX[0];
dy = ypad - c->fY[0];
// Prepare center of gravity calculation
Float_t x, y, z;
- fInput->Segmentation(cath)->GetPadCxy(i, j, x, y, z);
+ fInput->Segmentation(cath)->GetPadC(i, j, x, y, z);
c.fX[cath] += q*x;
c.fY[cath] += q*y;
xc=xmin+.001;
while (xc < xmax) {
xc+=fInput->Segmentation(iop)->Dpx(isec);
- fInput->Segmentation(iop)->GetPadIxy(xc,y,0,ix,iy);
+ fInput->Segmentation(iop)->GetPadI(xc,y,0,ix,iy);
if (ix>=(fInput->Segmentation(iop)->Npx()) || (iy>=fInput->Segmentation(iop)->Npy())) continue;
if (fHitMap[iop]->TestHit(ix,iy)==kUnused) FindCluster(ix, iy, iop, c);
}
yc=ymin+.001;
while (yc < ymax) {
yc+=fInput->Segmentation(iop)->Dpy(isec);
- fInput->Segmentation(iop)->GetPadIxy(x,yc,0,ix,iy);
+ fInput->Segmentation(iop)->GetPadI(x,yc,0,ix,iy);
if (ix>=(fInput->Segmentation(iop)->Npx()) || (iy>=fInput->Segmentation(iop)->Npy())) continue;
if (fHitMap[iop]->TestHit(ix,iy)==kUnused) FindCluster(ix, iy, iop, c);
}
// lower and upper limits
static Double_t lower[2], upper[2];
Int_t ix,iy;
- fInput->Segmentation(cath)->GetPadIxy(c->fX[cath], c->fY[cath], 0, ix, iy);
+ fInput->Segmentation(cath)->GetPadI(c->fX[cath], c->fY[cath], 0, ix, iy);
Int_t isec=fInput->Segmentation(cath)->Sector(ix, iy);
lower[0]=vstart[0]-fInput->Segmentation(cath)->Dpx(isec)/2;
lower[1]=vstart[1]-fInput->Segmentation(cath)->Dpy(isec)/2;
// lower and upper limits
static Double_t lower[2], upper[2];
Int_t ix,iy,isec;
- fInput->Segmentation(0)->GetPadIxy(fXInit[0], fYInit[0], 0, ix, iy);
+ fInput->Segmentation(0)->GetPadI(fXInit[0], fYInit[0], 0, ix, iy);
isec=fInput->Segmentation(0)->Sector(ix, iy);
Float_t dpy=fInput->Segmentation(0)->Dpy(isec)/2;
- fInput->Segmentation(1)->GetPadIxy(fXInit[0], fYInit[0], 0, ix, iy);
+ fInput->Segmentation(1)->GetPadI(fXInit[0], fYInit[0], 0, ix, iy);
isec=fInput->Segmentation(1)->Sector(ix, iy);
Float_t dpx=fInput->Segmentation(1)->Dpx(isec)/2;
Int_t ix,iy,isec;
Float_t dpx, dpy;
- fInput->Segmentation(1)->GetPadIxy(fXInit[0], fYInit[0], 0, ix, iy);
+ fInput->Segmentation(1)->GetPadI(fXInit[0], fYInit[0], 0, ix, iy);
isec=fInput->Segmentation(1)->Sector(ix, iy);
dpx=fInput->Segmentation(1)->Dpx(isec);
- fInput->Segmentation(0)->GetPadIxy(fXInit[0], fYInit[0], 0, ix, iy);
+ fInput->Segmentation(0)->GetPadI(fXInit[0], fYInit[0], 0, ix, iy);
isec=fInput->Segmentation(0)->Sector(ix, iy);
dpy=fInput->Segmentation(0)->Dpy(isec);
upper[1]=vstart[1]+dpy;
- fInput->Segmentation(1)->GetPadIxy(fXInit[1], fYInit[1], 0, ix, iy);
+ fInput->Segmentation(1)->GetPadI(fXInit[1], fYInit[1], 0, ix, iy);
isec=fInput->Segmentation(1)->Sector(ix, iy);
dpx=fInput->Segmentation(1)->Dpx(isec);
- fInput->Segmentation(0)->GetPadIxy(fXInit[1], fYInit[1], 0, ix, iy);
+ fInput->Segmentation(0)->GetPadI(fXInit[1], fYInit[1], 0, ix, iy);
isec=fInput->Segmentation(0)->Sector(ix, iy);
dpy=fInput->Segmentation(0)->Dpy(isec);
#include "TF1.h"
class AliMUONResponse;
-class AliMUONSegmentation;
+class AliSegmentation;
class TClonesArray;
class AliMUONRawCluster;
class AliMUONDigit;
/*
$Log$
+Revision 1.3 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.2 2000/06/28 12:19:18 morsch
More consequent seperation of global input data services (AliMUONClusterInput singleton) and the
cluster and hit reconstruction algorithms in AliMUONClusterFinderVS.
#include "AliMUON.h"
#include "AliMUONChamber.h"
#include "AliMUONClusterInput.h"
-#include "AliMUONSegmentation.h"
+#include "AliSegmentation.h"
#include "AliMUONResponse.h"
#include "AliMUONRawCluster.h"
#include "AliMUONDigit.h"
class TMinuit;
class AliMUONDigit;
class AliMUONRawCluster;
-class AliMUONSegmentation;
+class AliSegmentation;
class AliMUONResponse;
AliMUONDigit* Digit(Int_t cath, Int_t i) {return (AliMUONDigit*) (fDigits[cath]->UncheckedAt(i));}
TClonesArray* Digits(Int_t cath) {return fDigits[cath];}
Int_t NDigits(Int_t cath) {return fNDigits[cath];}
- AliMUONSegmentation* Segmentation(Int_t cath) {return fSegmentation[cath];}
+ AliSegmentation* Segmentation(Int_t cath) {return fSegmentation[cath];}
AliMUONResponse* Response() {return fResponse;}
// Fitting
TMinuit* Fitter() {return fgMinuit;}
// Digits
TClonesArray* fDigits[2]; // ! Array of pointers to digits
Int_t fNDigits[2]; // ! Number of digits
- AliMUONSegmentation* fSegmentation[2]; // ! Segmentation per cathode
+ AliSegmentation* fSegmentation[2]; // ! Segmentation per cathode
AliMUONResponse* fResponse; // ! Response
Int_t fNseg; // ! number of cathode planes
Int_t fChamber; // ! Current chamber number
/*
$Log$
+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
#include "AliMUONDigit.h"
#include "AliMUONRawCluster.h"
-#include "AliMUONSegmentation.h"
+#include "AliSegmentation.h"
#include "AliMUONResponse.h"
#include "AliMUONChamber.h"
#include "AliMUONConstants.h"
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();
{
if (seg->ISector()==0) continue;
Float_t x,y,z;
- seg->GetPadCxy(seg->Ix(), seg->Iy(), 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 (seg->ISector()==0) continue;
Float_t x,y,z;
- seg->GetPadCxy(seg->Ix(), seg->Iy(), 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);
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, zpad;
- segmentation->GetPadCxy(mdig->fPadX, mdig->fPadY,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, zpad);
+ 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->SetFillStyle(1001);
/*
$Log$
+Revision 1.2 2000/06/15 07:58:48 morsch
+Code from MUON-dev joined
+
Revision 1.1.2.2 2000/06/12 07:58:06 morsch
include TMath.h
*/
#include "AliMUONHitMapA1.h"
-#include "AliMUONSegmentation.h"
+#include "AliSegmentation.h"
#include "AliMUONResponse.h"
#include "AliMUONDigit.h"
ClassImp(AliMUONHitMapA1)
-AliMUONHitMapA1::AliMUONHitMapA1(AliMUONSegmentation *seg, TObjArray *dig)
+AliMUONHitMapA1::AliMUONHitMapA1(AliSegmentation *seg, TObjArray *dig)
{
// Constructor
fSegmentation = seg;
/* $Id$ */
-#include "AliMUONHitMap.h"
-class AliMUONSegmentation;
+#include "AliHitMap.h"
+class AliSegmentation;
class TObjArray;
class AliMUONHitMapA1 :
-public AliMUONHitMap
+public AliHitMap
{
public:
- AliMUONHitMapA1(AliMUONSegmentation *seg, TObjArray *dig);
+ AliMUONHitMapA1(AliSegmentation *seg, TObjArray *dig);
AliMUONHitMapA1(const AliMUONHitMapA1 & hitMap);
virtual ~AliMUONHitMapA1();
// Check index
Int_t CheckedIndex(Int_t ix, Int_t iy);
private:
- AliMUONSegmentation *fSegmentation; // Chamber segmentation
+ AliSegmentation *fSegmentation; // Chamber segmentation
Int_t fNpx; // Maximum number of pads in x
Int_t fNpy; // Maximum number of pads in y
TObjArray *fDigits; // Pointer to digits
**************************************************************************/
/*
$Log$
+Revision 1.3 2000/06/27 10:13:01 morsch
+Obsolete global variables removed from file.
+
Revision 1.2 2000/06/15 07:58:48 morsch
Code from MUON-dev joined
#include "AliRun.h"
#include "AliMUON.h"
#include "AliMUONChamber.h"
-#include "AliMUONSegmentation.h"
#include "AliMUONResponse.h"
#include "AliMUONHit.h"
#include "AliMUONPadHit.h"
#include "TObject.h"
class TF1;
-class AliMUONChamber;
-class AliMUONRecCluster;
-class AliMUONSegmentation;
+class AliSegmentation;
class AliMUONResponse :
// Pulse height from scored quantity (eloss)
virtual Float_t IntPH(Float_t eloss) =0;
// Charge disintegration
- virtual Float_t IntXY(AliMUONSegmentation *) =0;
+ virtual Float_t IntXY(AliSegmentation *) =0;
// Noise, zero-suppression, adc saturation
virtual Int_t DigitResponse(Int_t digit) =0;
//
/*
$Log$
+Revision 1.2 2000/06/15 07:58:48 morsch
+Code from MUON-dev joined
+
Revision 1.1.2.1 2000/06/09 21:48:28 morsch
Code from AliMUONSegResTrigger.cxx
*/
#include "AliMUONResponseTrigger.h"
-#include "AliMUONSegmentation.h"
+#include "AliSegmentation.h"
#include <TMath.h>
#include <TRandom.h>
#include <iostream.h>
ClassImp(AliMUONResponseTrigger)
//------------------------------------------------------------------
-Float_t AliMUONResponseTrigger::IntXY(AliMUONSegmentation * segmentation){
+Float_t AliMUONResponseTrigger::IntXY(AliSegmentation * segmentation){
// Returns 1 or 0 if the current strip is fired or not according
// to the cluster size and the width of the main strip.
// For the time being the probability to fire a neighbour depends
AliMUONResponseTrigger(){};
virtual ~AliMUONResponseTrigger(){}
// Charge disintegration
- virtual Float_t IntXY(AliMUONSegmentation * segmentation);
+ virtual Float_t IntXY(AliSegmentation * segmentation);
virtual Int_t DigitResponse(Int_t digit);
ClassDef(AliMUONResponseTrigger,1) // Implementation of RPC response
/*
$Log$
+Revision 1.2 2000/06/15 07:58:48 morsch
+Code from MUON-dev joined
+
Revision 1.1.2.1 2000/06/09 21:33:35 morsch
AliMUONResponse code from AliMUONSegResV0.cxx
*/
#include "AliMUONResponseV0.h"
-#include "AliMUONSegmentation.h"
+#include "AliSegmentation.h"
#include <TMath.h>
#include <TRandom.h>
}
// -------------------------------------------
-Float_t AliMUONResponseV0::IntXY(AliMUONSegmentation * segmentation)
+Float_t AliMUONResponseV0::IntXY(AliSegmentation * segmentation)
{
// Calculate charge on current pad according to Mathieson distribution
//
// Pulse height from scored quantity (eloss)
virtual Float_t IntPH(Float_t eloss);
// Charge disintegration
- virtual Float_t IntXY(AliMUONSegmentation * segmentation);
+ virtual Float_t IntXY(AliSegmentation * segmentation);
// Noise, zero-suppression, adc saturation
virtual Int_t DigitResponse(Int_t digit);
/*
$Log$
+Revision 1.4 2000/06/29 12:34:09 morsch
+AliMUONSegmentation class has been made independent of AliMUONChamber. This makes
+it usable with any other geometry class. The link to the object to which it belongs is
+established via an index. This assumes that there exists a global geometry manager
+from which the pointer to the parent object can be obtained (in our case gAlice).
+
Revision 1.3 2000/06/26 10:01:26 pcrochet
global variables removed
}
//------------------------------------------------------------------
-void AliMUONSegmentationTriggerX::GetPadIxy(Float_t x,Float_t y,Int_t &ix,Int_t &iy){
+void AliMUONSegmentationTriggerX::GetPadI(Float_t x,Float_t y,Int_t &ix,Int_t &iy){
// Returns pad coordinates (ix,iy) for given real coordinates (x,y)
// x,y = real coordinates; ix = module number , iy = strip number
ix = 0;
}
//------------------------------------------------------------------
-void AliMUONSegmentationTriggerX::GetPadCxy(Int_t ix, Int_t iy, Float_t &x, Float_t &y){
+void AliMUONSegmentationTriggerX::GetPadC(Int_t ix, Int_t iy, Float_t &x, Float_t &y){
// Returns real coordinates (x,y) for given pad coordinates (ix,iy)
// ix = module number , iy = strip number; x,y = center of strip
x = 0.;
{
// Sets virtual pad coordinates, needed for evaluating pad response
// outside the tracking program
- GetPadCxy(ix,iy,fx,fy);
- GetPadIxy(fx,fy,fix,fiy);
+ GetPadC(ix,iy,fx,fy);
+ GetPadI(fx,fy,fix,fiy);
fSector=Sector(ix,iy);
}
Int_t ix,iy;
Float_t xstrip,ystrip;
- GetPadIxy(fxhit,fyhit,ix,iy);
- GetPadCxy(ix,iy,xstrip,ystrip);
+ GetPadI(fxhit,fyhit,ix,iy);
+ GetPadC(ix,iy,xstrip,ystrip);
x1=fyhit; // hit y position
x2=ystrip; // y coordinate of the main strip
x3=fy; // current strip real y coordinate
AliMUONSegmentationTriggerX(){}
virtual ~AliMUONSegmentationTriggerX(){}
// Transform from pad to real coordinates
- virtual void GetPadIxy(Float_t x, Float_t y, Int_t &ix, Int_t &iy);
- virtual void GetPadIxy(Float_t x, Float_t y, Float_t z, Int_t &ix, Int_t &iy)
- {GetPadIxy(x, y, ix, iy);}
+ virtual void GetPadI(Float_t x, Float_t y, Int_t &ix, Int_t &iy);
+ virtual void GetPadI(Float_t x, Float_t y, Float_t z, Int_t &ix, Int_t &iy)
+ {GetPadI(x, y, ix, iy);}
// Transform from real to pad coordinates
- virtual void GetPadCxy(Int_t ix, Int_t iy, Float_t &x, Float_t &y);
- virtual void GetPadCxy(Int_t ix, Int_t iy, Float_t &x, Float_t &y, Float_t &z)
- {z=0; GetPadCxy(ix, iy, x , y);}
+ virtual void GetPadC(Int_t ix, Int_t iy, Float_t &x, Float_t &y);
+ virtual void GetPadC(Int_t ix, Int_t iy, Float_t &x, Float_t &y, Float_t &z)
+ {z=0; GetPadC(ix, iy, x , y);}
// Pad size Dx*Dy
virtual void SetPadSize(Float_t dp1, Float_t dp2);
// Strip size
/*
$Log$
+Revision 1.4 2000/06/29 12:34:09 morsch
+AliMUONSegmentation class has been made independent of AliMUONChamber. This makes
+it usable with any other geometry class. The link to the object to which it belongs is
+established via an index. This assumes that there exists a global geometry manager
+from which the pointer to the parent object can be obtained (in our case gAlice).
+
Revision 1.3 2000/06/26 10:01:26 pcrochet
global variables removed
}
//------------------------------------------------------------------
-void AliMUONSegmentationTriggerY::GetPadIxy(Float_t x,Float_t y,Int_t &ix,Int_t &iy){
+void AliMUONSegmentationTriggerY::GetPadI(Float_t x,Float_t y,Int_t &ix,Int_t &iy){
// Returns pad coordinates (ix,iy) for given real coordinates (x,y)
// x,y = real coordinates; ix = module number , iy = strip number
}
//------------------------------------------------------------------
-void AliMUONSegmentationTriggerY::GetPadCxy(Int_t ix, Int_t iy, Float_t &x, Float_t &y){
+void AliMUONSegmentationTriggerY::GetPadC(Int_t ix, Int_t iy, Float_t &x, Float_t &y){
// Returns real coordinates (x,y) for given pad coordinates (ix,iy)
// ix = module number , iy = strip number; x,y = center of strip
x = 0.;
{
// Sets virtual pad coordinates, needed for evaluating pad response
// outside the tracking program
- GetPadCxy(ix,iy,fx,fy);
- GetPadIxy(fx,fy,fix,fiy);
+ GetPadC(ix,iy,fx,fy);
+ GetPadI(fx,fy,fix,fiy);
fSector=Sector(ix,iy);
}
// returns quantities needed to evaluate neighbour strip response
Int_t ix,iy;
Float_t xstrip,ystrip;
- GetPadIxy(fxhit,fyhit,ix,iy);
- GetPadCxy(ix,iy,xstrip,ystrip);
+ GetPadI(fxhit,fyhit,ix,iy);
+ GetPadC(ix,iy,xstrip,ystrip);
x1=fxhit; // hit x position
x2=xstrip; // x coordinate of the main strip
x3=fx; // current strip real x coordinate
AliMUONSegmentationTriggerY(){}
virtual ~AliMUONSegmentationTriggerY(){}
// Transform from pad to real coordinates
- virtual void GetPadIxy(Float_t x,Float_t y,Int_t &ix,Int_t &iy);
- virtual void GetPadIxy(Float_t x, Float_t y, Float_t z, Int_t &ix, Int_t &iy)
- {GetPadIxy(x, y, ix, iy);}
+ virtual void GetPadI(Float_t x,Float_t y,Int_t &ix,Int_t &iy);
+ virtual void GetPadI(Float_t x, Float_t y, Float_t z, Int_t &ix, Int_t &iy)
+ {GetPadI(x, y, ix, iy);}
// Transform from real to pad coordinates
- virtual void GetPadCxy(Int_t ix,Int_t iy,Float_t &x,Float_t &y);
- virtual void GetPadCxy(Int_t ix, Int_t iy, Float_t &x, Float_t &y, Float_t &z)
- {z=0; GetPadCxy(ix, iy, x , y);}
+ virtual void GetPadC(Int_t ix,Int_t iy,Float_t &x,Float_t &y);
+ virtual void GetPadC(Int_t ix, Int_t iy, Float_t &x, Float_t &y, Float_t &z)
+ {z=0; GetPadC(ix, iy, x , y);}
// Pad size Dx*Dy
virtual void SetPadSize(Float_t dp1, Float_t dp2);
// Strip size by Module
**************************************************************************/
/*
$Log$
+Revision 1.3 2000/06/29 12:34:09 morsch
+AliMUONSegmentation class has been made independent of AliMUONChamber. This makes
+it usable with any other geometry class. The link to the object to which it belongs is
+established via an index. This assumes that there exists a global geometry manager
+from which the pointer to the parent object can be obtained (in our case gAlice).
+
Revision 1.2 2000/06/15 07:58:48 morsch
Code from MUON-dev joined
fDpy=p2;
}
void AliMUONSegmentationV0::
- GetPadIxy(Float_t x, Float_t y, Int_t &ix, Int_t &iy)
+ GetPadI(Float_t x, Float_t y, Int_t &ix, Int_t &iy)
{
// Returns pad coordinates (ix,iy) for given real coordinates (x,y)
//
if (ix < -fNpx) ix=-fNpx;
}
void AliMUONSegmentationV0::
-GetPadCxy(Int_t ix, Int_t iy, Float_t &x, Float_t &y)
+GetPadC(Int_t ix, Int_t iy, Float_t &x, Float_t &y)
{
// Returns real coordinates (x,y) for given pad coordinates (ix,iy)
//
//
// Sets virtual pad coordinates, needed for evaluating pad response
// outside the tracking program
- GetPadCxy(ix,iy,fx,fy);
+ GetPadC(ix,iy,fx,fy);
}
void AliMUONSegmentationV0::
Float_t y02=yhit + dy;
//
// find the pads over which the charge distributes
- GetPadIxy(x01,y01,fixmin,fiymin);
- GetPadIxy(x02,y02,fixmax,fiymax);
+ GetPadI(x01,y01,fixmin,fiymin);
+ GetPadI(x02,y02,fixmax,fiymax);
//
// Set current pad to lower left corner
fix=fixmin;
fiy=fiymin;
- GetPadCxy(fix,fiy,fx,fy);
+ GetPadC(fix,fiy,fx,fy);
}
void AliMUONSegmentationV0::NextPad()
} else {
printf("\n Error: Stepping outside integration region\n ");
}
- GetPadCxy(fix,fiy,fx,fy);
+ GetPadC(fix,fiy,fx,fy);
}
Int_t AliMUONSegmentationV0::MorePads()
// Initialises pad and wire position during stepping
fxt =x;
fyt =y;
- GetPadIxy(x,y,fixt,fiyt);
+ GetPadI(x,y,fixt,fiyt);
fiwt= (x>0) ? Int_t(x/fWireD)+1 : Int_t(x/fWireD)-1 ;
}
// Signal will be generated if particle crosses pad boundary or
// boundary between two wires.
Int_t ixt, iyt;
- GetPadIxy(x,y,ixt,iyt);
+ GetPadI(x,y,ixt,iyt);
Int_t iwt=(x>0) ? Int_t(x/fWireD)+1 : Int_t(x/fWireD)-1;
if ((ixt != fixt) || (iyt !=fiyt) || (iwt != fiwt)) {
return 1;
// labelled by its Channel numbers and a coordinate
{
Float_t x,y;
- GetPadCxy(iX,iY,x,y);
+ GetPadC(iX,iY,x,y);
return (x-X)*(x-X) + (y-Y)*(y-Y);
}
/* $Id$ */
-#include "AliMUONSegmentation.h"
+#include "AliSegmentation.h"
//----------------------------------------------
//
// Chamber segmentation for homogeneously segmented circular chamber
//
class AliMUONSegmentationV0 :
-public AliMUONSegmentation {
+public AliSegmentation {
public:
AliMUONSegmentationV0(){}
AliMUONSegmentationV0(const AliMUONSegmentationV0 & segmentation);
// Anod wire coordinate closest to xhit
virtual Float_t GetAnod(Float_t xhit);
// Transform from pad to real coordinates
- virtual void GetPadIxy(Float_t x, Float_t y , Int_t &ix, Int_t &iy);
- virtual void GetPadIxy(Float_t x, Float_t y , Float_t z, Int_t &ix, Int_t &iy)
- {GetPadIxy(x, y, ix, iy);}
+ virtual void GetPadI(Float_t x, Float_t y , Int_t &ix, Int_t &iy);
+ virtual void GetPadI(Float_t x, Float_t y , Float_t z, Int_t &ix, Int_t &iy)
+ {GetPadI(x, y, ix, iy);}
// Transform from real to pad coordinates
- virtual void GetPadCxy(Int_t ix, Int_t iy, Float_t &x, Float_t &y);
- virtual void GetPadCxy(Int_t ix, Int_t iy, Float_t &x, Float_t &y, Float_t &z)
- {z=0; GetPadCxy(ix, iy, x , y);}
+ virtual void GetPadC(Int_t ix, Int_t iy, Float_t &x, Float_t &y);
+ virtual void GetPadC(Int_t ix, Int_t iy, Float_t &x, Float_t &y, Float_t &z)
+ {z=0; GetPadC(ix, iy, x , y);}
//
// Initialisation
virtual void Init(Int_t chamber);
/*
$Log$
+Revision 1.3 2000/06/29 12:34:09 morsch
+AliMUONSegmentation class has been made independent of AliMUONChamber. This makes
+it usable with any other geometry class. The link to the object to which it belongs is
+established via an index. This assumes that there exists a global geometry manager
+from which the pointer to the parent object can be obtained (in our case gAlice).
+
Revision 1.2 2000/06/15 07:58:48 morsch
Code from MUON-dev joined
}
void AliMUONSegmentationV01::
-GetPadIxy(Float_t x, Float_t y, Int_t &ix, Int_t &iy)
+GetPadI(Float_t x, Float_t y, Int_t &ix, Int_t &iy)
{
// Returns pad coordinates (ix,iy) for given real coordinates (x,y)
//
}
void AliMUONSegmentationV01::
-GetPadCxy(Int_t ix, Int_t iy, Float_t &x, Float_t &y)
+GetPadC(Int_t ix, Int_t iy, Float_t &x, Float_t &y)
{
// Returns real coordinates (x,y) for given pad coordinates (ix,iy)
//
//
// Sets virtual pad coordinates, needed for evaluating pad response
// outside the tracking program
- GetPadCxy(ix,iy,fx,fy);
+ GetPadC(ix,iy,fx,fy);
fSector=Sector(ix,iy);
}
Float_t y02=yhit + dy;
//
// find the pads over which the charge distributes
- GetPadIxy(x01,y01,fixmin,fiymin);
- GetPadIxy(x02,y02,fixmax,fiymax);
+ GetPadI(x01,y01,fixmin,fiymin);
+ GetPadI(x02,y02,fixmax,fiymax);
fxmin=x01;
fxmax=x02;
fymin=y01;
if (fiymax < fiymin) fiymax=fiymin;
fix=fixmin;
fiy=fiymin;
- GetPadCxy(fix,fiy,fx,fy);
+ GetPadC(fix,fiy,fx,fy);
}
if (fiy==-1) fiy++;
fiy++;
// get y-position of next row (yc), xc not used here
- GetPadCxy(fix,fiy,xc,yc);
+ GetPadC(fix,fiy,xc,yc);
// get x-pad coordiante for first pad in row (fix)
- GetPadIxy(fxmin,yc,fix,iyc);
+ GetPadI(fxmin,yc,fix,iyc);
} else {
printf("\n Error: Stepping outside integration region\n ");
}
- GetPadCxy(fix,fiy,fx,fy);
+ GetPadC(fix,fiy,fx,fy);
fSector=Sector(fix,fiy);
if (MorePads() &&
(fSector ==-1 || fSector==0))
Ylist[i++]=iY;
//
// step up
- AliMUONSegmentationV01::GetPadCxy(iX,iY,x,y);
- AliMUONSegmentationV01::GetPadIxy(x+kEpsilon,y+fDpy,ixx,iyy);
+ AliMUONSegmentationV01::GetPadC(iX,iY,x,y);
+ AliMUONSegmentationV01::GetPadI(x+kEpsilon,y+fDpy,ixx,iyy);
Xlist[i]=ixx;
Ylist[i++]=iyy;
isec1=AliMUONSegmentationV01::Sector(ixx,iyy);
//
// step down
- AliMUONSegmentationV01::GetPadCxy(iX,iY,x,y);
- AliMUONSegmentationV01::GetPadIxy(x+kEpsilon,y-fDpy,ixx,iyy);
+ AliMUONSegmentationV01::GetPadC(iX,iY,x,y);
+ AliMUONSegmentationV01::GetPadI(x+kEpsilon,y-fDpy,ixx,iyy);
Xlist[i]=ixx;
Ylist[i++]=iyy;
isec1=AliMUONSegmentationV01::Sector(ixx,iyy);
// Transform from pad (wire) to real coordinates and vice versa
//
// Transform from pad to real coordinates
- virtual void GetPadIxy(Float_t x ,Float_t y ,Int_t &ix,Int_t &iy);
- virtual void GetPadIxy(Float_t x, Float_t y , Float_t z, Int_t &ix, Int_t &iy)
- {GetPadIxy(x, y, ix, iy);}
+ virtual void GetPadI(Float_t x ,Float_t y ,Int_t &ix,Int_t &iy);
+ virtual void GetPadI(Float_t x, Float_t y , Float_t z, Int_t &ix, Int_t &iy)
+ {GetPadI(x, y, ix, iy);}
// Transform from real to pad coordinates
- virtual void GetPadCxy(Int_t ix,Int_t iy,Float_t &x ,Float_t &y );
- virtual void GetPadCxy(Int_t ix, Int_t iy, Float_t &x, Float_t &y, Float_t &z)
- {z=0; GetPadCxy(ix, iy, x , y);}
+ virtual void GetPadC(Int_t ix,Int_t iy,Float_t &x ,Float_t &y );
+ virtual void GetPadC(Int_t ix, Int_t iy, Float_t &x, Float_t &y, Float_t &z)
+ {z=0; GetPadC(ix, iy, x , y);}
//
// Initialisation
virtual void Init(Int_t chamber);
/*
$Log$
+Revision 1.2 2000/06/15 07:58:48 morsch
+Code from MUON-dev joined
+
Revision 1.1.2.1 2000/06/09 21:37:56 morsch
AliMUONSegmentationV02 code from AliMUONSegResV02.cxx
void AliMUONSegmentationV02::
-GetPadIxy(Float_t x, Float_t y, Int_t &ix, Int_t &iy)
+GetPadI(Float_t x, Float_t y, Int_t &ix, Int_t &iy)
// Returns pad coordinates (ix,iy) for given real coordinates (x,y)
//
{
-AliMUONSegmentationV01::GetPadIxy(y, x, iy, ix);
+AliMUONSegmentationV01::GetPadI(y, x, iy, ix);
// printf("\n x,y,ix,iy %f %f %d %d", x,y,ix,iy);
}
void AliMUONSegmentationV02::
-GetPadCxy(Int_t ix, Int_t iy, Float_t &x, Float_t &y)
+GetPadC(Int_t ix, Int_t iy, Float_t &x, Float_t &y)
// Returns real coordinates (x,y) for given pad coordinates (ix,iy)
//
{
- AliMUONSegmentationV01::GetPadCxy(iy, ix, y, x);
+ AliMUONSegmentationV01::GetPadC(iy, ix, y, x);
}
void AliMUONSegmentationV02::SetPad(Int_t ix,Int_t iy)
{
//
// Sets virtual pad coordinates, needed for evaluating pad response
// outside the tracking program
- GetPadCxy(ix,iy,fx,fy);
+ GetPadC(ix,iy,fx,fy);
fSector=Sector(ix,iy);
}
if (fix==-1) fix++;
fix++;
// get y-position of next row (yc), xc not used here
- GetPadCxy(fix,fiy,xc,yc);
+ GetPadC(fix,fiy,xc,yc);
// get x-pad coordiante for 1 pad in row (fix)
- GetPadIxy(xc,fymin,ixc,fiy);
+ GetPadI(xc,fymin,ixc,fiy);
} else {
printf("\n Error: Stepping outside integration region\n ");
}
- GetPadCxy(fix,fiy,fx,fy);
+ GetPadC(fix,fiy,fx,fy);
fSector=Sector(fix,fiy);
if (MorePads() &&
(fSector ==-1 || fSector==0 ))
//
// Transform from pad (wire) to real coordinates and vice versa
// Transform from pad to real coordinates
- virtual void GetPadCxy(Int_t ix, Int_t iy, Float_t &x ,Float_t &y );
- virtual void GetPadCxy(Int_t ix, Int_t iy, Float_t &x, Float_t &y, Float_t &z)
- {z=0; GetPadCxy(ix, iy, x , y);}
+ virtual void GetPadC(Int_t ix, Int_t iy, Float_t &x ,Float_t &y );
+ virtual void GetPadC(Int_t ix, Int_t iy, Float_t &x, Float_t &y, Float_t &z)
+ {z=0; GetPadC(ix, iy, x , y);}
// Transform from pad to real coordinates
- virtual void GetPadIxy(Float_t x ,Float_t y , Int_t &ix, Int_t &iy);
- virtual void GetPadIxy(Float_t x, Float_t y , Float_t z, Int_t &ix, Int_t &iy)
- {GetPadIxy(x, y, ix, iy);}
+ virtual void GetPadI(Float_t x ,Float_t y , Int_t &ix, Int_t &iy);
+ virtual void GetPad(Float_t x, Float_t y , Float_t z, Int_t &ix, Int_t &iy)
+ {GetPadI(x, y, ix, iy);}
// Set pad position
virtual void SetPad(Int_t ix,Int_t iy);
// Stepper
/*
$Log$
+Revision 1.3 2000/06/29 12:34:09 morsch
+AliMUONSegmentation class has been made independent of AliMUONChamber. This makes
+it usable with any other geometry class. The link to the object to which it belongs is
+established via an index. This assumes that there exists a global geometry manager
+from which the pointer to the parent object can be obtained (in our case gAlice).
+
Revision 1.2 2000/06/15 07:58:48 morsch
Code from MUON-dev joined
}
void AliMUONSegmentationV1::
-GetPadIxy(Float_t x, Float_t y, Int_t &ix, Int_t &iy)
+GetPadI(Float_t x, Float_t y, Int_t &ix, Int_t &iy)
{
// returns pad coordinates (ix,iy) for given real coordinates (x,y)
//
}
void AliMUONSegmentationV1::
-GetPadCxy(Int_t ix, Int_t iy, Float_t &x, Float_t &y)
+GetPadC(Int_t ix, Int_t iy, Float_t &x, Float_t &y)
{
// returns real coordinates (x,y) for given pad coordinates (ix,iy)
//
{
// Get segmentation zone
Int_t iX, iY;
- GetPadIxy(X,Y,iX,iY);
+ GetPadI(X,Y,iX,iY);
return GetZone( iX , iY );
}
SetPad(Int_t ix, Int_t iy)
{
// Set current pad position
- GetPadCxy(ix,iy,fx,fy);
+ GetPadC(ix,iy,fx,fy);
}
void AliMUONSegmentationV1::SetPadCoord(Int_t iX, Int_t iY)
{
// Set current pad coordinates
-GetPadCxy(iX,iY,fx,fy);
+GetPadC(iX,iY,fx,fy);
Float_t radius2;
if ( ( (radius2=fx*fx+fy*fy) > frSensMax2 || radius2 < frSensMin2 )
&& MorePads() )
y02 = TMath::Sign(fSensOffset, yhit);
//
// find the pads over which the charge distributes
- GetPadIxy(x01,y01,fixmin,fiymin);
- GetPadIxy(x02,y02,fixmax,fiymax);
+ GetPadI(x01,y01,fixmin,fiymin);
+ GetPadI(x02,y02,fixmax,fiymax);
//
// Set current pad to lower left corner
fix=fixmin;
// Initialises pad and wire position during stepping
fxt =x;
fyt =y;
- GetPadIxy(x,y,fixt,fiyt);
+ GetPadI(x,y,fixt,fiyt);
fiwt= GetiAnod(x);
}
// boundary between two wires.
Int_t ixt;
Int_t iyt;
- GetPadIxy(x,y,ixt,iyt);
+ GetPadI(x,y,ixt,iyt);
Int_t iwt= GetiAnod(x);
if ((ixt != fixt) || (iyt !=fiyt) || (iwt != fiwt)) {
for (Int_t i=0;i<nPara; i++)
{
Float_t x,y;
- GetPadCxy(iX+i*offset,iY,x,y);
+ GetPadC(iX+i*offset,iY,x,y);
Float_t d2=(x-X)*(x-X) + (y-Y)*(y-Y);
if ( d2min > d2)
{
/* $Id$ */
-#include "AliMUONSegmentation.h"
+#include "AliSegmentation.h"
const Int_t kNzone = 3; // Specific for chamber with equal pads
const Int_t kNzonem1 = 2; // kNzone - 1
const Int_t kNzoneCUT = 30;
class AliMUONSegmentationV1 :
-public AliMUONSegmentation {
+public AliSegmentation {
public:
AliMUONSegmentationV1();
AliMUONSegmentationV1(const AliMUONSegmentationV1 & segmentation);
// Anod wire coordinate closest to xhit
virtual Float_t GetAnod(Float_t xhit);
// Transform from pad to real coordinates
- virtual void GetPadIxy(Float_t x ,Float_t y , Int_t &ix, Int_t &iy);
- virtual void GetPadIxy(Float_t x, Float_t y , Float_t z, Int_t &ix, Int_t &iy)
- {GetPadIxy(x, y, ix, iy);}
+ virtual void GetPadI(Float_t x ,Float_t y , Int_t &ix, Int_t &iy);
+ virtual void GetPadI(Float_t x, Float_t y , Float_t z, Int_t &ix, Int_t &iy)
+ {GetPadI(x, y, ix, iy);}
// Transform from real to pad coordinates
- virtual void GetPadCxy(Int_t ix, Int_t iy, Float_t &x, Float_t &y);
- virtual void GetPadCxy(Int_t ix, Int_t iy, Float_t &x, Float_t &y, Float_t &z)
- {z=0; GetPadCxy(ix, iy, x , y);}
+ virtual void GetPadC(Int_t ix, Int_t iy, Float_t &x, Float_t &y);
+ virtual void GetPadC(Int_t ix, Int_t iy, Float_t &x, Float_t &y, Float_t &z)
+ {z=0; GetPadC(ix, iy, x , y);}
// Set pad position
virtual void SetPad(Int_t ix, Int_t iy);
// Set hit position
**************************************************************************/
/*
$Log$
+Revision 1.4 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.3 2000/06/26 10:04:49 pcrochet
problem with HP compiler solved (PH), static variables removed : now defined in AliMUONTriggerConstants
#include "AliMUONPoints.h"
#include "AliMUONTriggerCircuit.h"
#include "AliMUONTriggerConstants.h"
-#include "AliMUONSegmentation.h"
+#include "AliSegmentation.h"
#include "AliMUONResponse.h"
#include "AliMUONChamber.h"
#include "TMath.h"
AliMUON *pMUON = (AliMUON*)gAlice->GetModule("MUON");
AliMUONChamber* iChamber;
- AliMUONSegmentation* segmentation;
+ AliSegmentation* segmentation;
// first plane (11)
chamber=11;
idStrip=TMath::Abs(code-idModule*100); // corresp. strip number in module
idSector=segmentation->Sector(idModule,idStrip); // corresponding sector
width=segmentation->Dpy(idSector); // corresponding strip width
- segmentation->GetPadCxy(idModule,idStrip,x,y,z); // get strip real position
+ segmentation->GetPadC(idModule,idStrip,x,y,z); // get strip real position
fYpos11[2*istrip]=y;
if (istrip!=15) fYpos11[2*istrip+1]=y+width/2.;
idStrip=TMath::Abs(code-idModule*100); // corresp. strip number in module
idSector=segmentation->Sector(idModule,idStrip); // corresponding sector
width=segmentation->Dpy(idSector); // corresponding strip width
- segmentation->GetPadCxy(idModule,idStrip,x,y,z); // get strip real position
+ segmentation->GetPadC(idModule,idStrip,x,y,z); // get strip real position
// using idModule!=0 prevents to fill garbage in case of circuits
// in the first and last rows
Int_t cathode=2;
AliMUON *pMUON = (AliMUON*)gAlice->GetModule("MUON");
AliMUONChamber* iChamber;
- AliMUONSegmentation* segmentation;
+ AliSegmentation* segmentation;
iChamber = &(pMUON->Chamber(chamber-1));
segmentation=iChamber->SegmentationModel(cathode);
// first case : up middle and down parts have all 8 or 16 strip
if ((nStrY==16)||(nStrY==8&&fx2m==0&&fx2ud==0)) {
for (istrip=0; istrip<nStrY; istrip++) {
- segmentation->GetPadCxy(idModule,istrip,x,y,z);
+ segmentation->GetPadC(idModule,istrip,x,y,z);
fXpos11[istrip]=x;
}
// second case : mixing 8 and 16 strips within same circuit
} else {
for (istrip=0; istrip<nStrY; istrip++) {
if (nStrY!=8) { cout << " bug in LoadXpos " << "\n";}
- segmentation->GetPadCxy(idModule,istrip,x,y,z);
+ segmentation->GetPadC(idModule,istrip,x,y,z);
fXpos11[2*istrip]=x-width/4.;
fXpos11[2*istrip+1]=fXpos11[2*istrip]+width/2.;
}
Float_t GetX11Pos(Int_t istrip);
// Get reference to segmentation model
- virtual AliMUONSegmentation* SegmentationModel(Int_t isec) {
- return (AliMUONSegmentation *) (*fSegmentation)[isec-1];
+ virtual AliSegmentation* SegmentationModel(Int_t isec) {
+ return (AliSegmentation *) (*fSegmentation)[isec-1];
}
protected:
**************************************************************************/
/*
$Log$
+Revision 1.3 2000/06/25 17:02:19 pcrochet
+scope problem on HP, i declared once, pow replaced by TMath::Power (PH)
+
Revision 1.2 2000/06/15 07:58:49 morsch
Code from MUON-dev joined
#include "AliRun.h"
#include "AliMUON.h"
#include "AliMUONPoints.h"
-#include "AliMUONSegmentation.h"
+#include "AliSegmentation.h"
#include "AliMUONResponse.h"
#include "AliMUONChamber.h"
#include "AliMUONDigit.h"
for (Int_t chamber=11; chamber<15; chamber++){
for (Int_t cathode=1; cathode<3; cathode++){
- AliMUONChamber* iChamber;
- AliMUONSegmentation* segmentation;
+ AliMUONChamber* iChamber;
+ AliSegmentation* segmentation;
TClonesArray *muonDigits = pMUON->DigitsAddress(chamber-1);
if (muonDigits == 0) return;