From a30a000fda6ccf10620ecf96d42273b8ab83723b Mon Sep 17 00:00:00 2001 From: morsch Date: Mon, 3 Jul 2000 11:54:57 +0000 Subject: [PATCH] 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. --- MUON/AliMUON.cxx | 32 +++++++++++-------- MUON/AliMUON.h | 4 +-- MUON/AliMUONChamber.cxx | 27 +++++++++------- MUON/AliMUONChamber.h | 12 +++---- MUON/AliMUONChamberTrigger.cxx | 14 +++++--- MUON/AliMUONClusterFinderVS.cxx | 48 ++++++++++++++++------------ MUON/AliMUONClusterFinderVS.h | 2 +- MUON/AliMUONClusterInput.cxx | 9 +++++- MUON/AliMUONClusterInput.h | 6 ++-- MUON/AliMUONDisplay.cxx | 23 ++++++++----- MUON/AliMUONHitMapA1.cxx | 7 ++-- MUON/AliMUONHitMapA1.h | 10 +++--- MUON/AliMUONPoints.cxx | 4 ++- MUON/AliMUONResponse.h | 6 ++-- MUON/AliMUONResponseTrigger.cxx | 7 ++-- MUON/AliMUONResponseTrigger.h | 2 +- MUON/AliMUONResponseV0.cxx | 7 ++-- MUON/AliMUONResponseV0.h | 2 +- MUON/AliMUONSegmentationTriggerX.cxx | 18 +++++++---- MUON/AliMUONSegmentationTriggerX.h | 12 +++---- MUON/AliMUONSegmentationTriggerY.cxx | 18 +++++++---- MUON/AliMUONSegmentationTriggerY.h | 12 +++---- MUON/AliMUONSegmentationV0.cxx | 26 +++++++++------ MUON/AliMUONSegmentationV0.h | 16 +++++----- MUON/AliMUONSegmentationV01.cxx | 32 +++++++++++-------- MUON/AliMUONSegmentationV01.h | 12 +++---- MUON/AliMUONSegmentationV02.cxx | 19 ++++++----- MUON/AliMUONSegmentationV02.h | 12 +++---- MUON/AliMUONSegmentationV1.cxx | 26 +++++++++------ MUON/AliMUONSegmentationV1.h | 16 +++++----- MUON/AliMUONTriggerCircuit.cxx | 21 ++++++++---- MUON/AliMUONTriggerCircuit.h | 4 +-- MUON/AliMUONTriggerDecision.cxx | 9 ++++-- 33 files changed, 282 insertions(+), 193 deletions(-) diff --git a/MUON/AliMUON.cxx b/MUON/AliMUON.cxx index 6db0605330d..d60b2781275 100644 --- a/MUON/AliMUON.cxx +++ b/MUON/AliMUON.cxx @@ -14,6 +14,12 @@ **************************************************************************/ /* $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 @@ -138,7 +144,7 @@ Log message added #include "AliMUONRawCluster.h" #include "AliMUONLocalTrigger.h" #include "AliMUONGlobalTrigger.h" -#include "AliMUONHitMap.h" +#include "AliHitMap.h" #include "AliMUONHitMapA1.h" #include "AliMUONChamberTrigger.h" #include "AliMUONConstants.h" @@ -796,7 +802,7 @@ void AliMUON::SetMuonAcc(Bool_t acc, Float_t angmin, Float_t angmax) 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); @@ -880,8 +886,8 @@ void AliMUON::Digitise(Int_t nev,Int_t bgrEvent,Option_t *option,Option_t *opt,T char *addBackground = strstr(option,"Add"); - AliMUONChamber* iChamber; - AliMUONSegmentation* segmentation; + AliMUONChamber* iChamber; + AliSegmentation* segmentation; Int_t trk[50]; @@ -892,7 +898,7 @@ void AliMUON::Digitise(Int_t nev,Int_t bgrEvent,Option_t *option,Option_t *opt,T 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; iSegmentationModel(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; @@ -1131,7 +1137,7 @@ void AliMUON::Digitise(Int_t nev,Int_t bgrEvent,Option_t *option,Option_t *opt,T 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); @@ -1457,12 +1463,12 @@ void AliMUON::FindClusters(Int_t nev,Int_t lastEntry) 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) { } diff --git a/MUON/AliMUON.h b/MUON/AliMUON.h index 3e30deeadad..1e02a881a4f 100644 --- a/MUON/AliMUON.h +++ b/MUON/AliMUON.h @@ -16,7 +16,7 @@ class AliMUONLocalTrigger; class AliMUONGlobalTrigger; class AliMUONTriggerCircuit; class AliMUONTriggerDecision; -class AliMUONSegmentation; +class AliSegmentation; class AliMUONResponse; class AliMUONHit; class AliMUONPadHit; @@ -77,7 +77,7 @@ class AliMUON : public AliDetector { 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 diff --git a/MUON/AliMUONChamber.cxx b/MUON/AliMUONChamber.cxx index 9a18dfed970..805c2b4d801 100644 --- a/MUON/AliMUONChamber.cxx +++ b/MUON/AliMUONChamber.cxx @@ -14,6 +14,12 @@ **************************************************************************/ /* $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 @@ -35,7 +41,6 @@ Log messages included */ #include "AliMUONChamber.h" -#include "AliMUONSegmentation.h" #include "AliMUONResponse.h" #include "TMath.h" @@ -84,11 +89,11 @@ void AliMUONChamber::Init() // // ... 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); } } @@ -96,12 +101,12 @@ Int_t AliMUONChamber::SigGenCond(Float_t x, Float_t y, Float_t z) { // 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)) ; } } @@ -113,10 +118,10 @@ void AliMUONChamber::SigGenInit(Float_t x, Float_t y, Float_t 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) ; } } @@ -143,8 +148,8 @@ void AliMUONChamber::DisIntegration(Float_t eloss, Float_t tof, 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()) diff --git a/MUON/AliMUONChamber.h b/MUON/AliMUONChamber.h index 0ecb6477540..147dbe87eaa 100644 --- a/MUON/AliMUONChamber.h +++ b/MUON/AliMUONChamber.h @@ -6,12 +6,12 @@ /* $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 @@ -48,7 +48,7 @@ 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 @@ -60,8 +60,8 @@ public TObject 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 @@ -95,7 +95,7 @@ public TObject 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) diff --git a/MUON/AliMUONChamberTrigger.cxx b/MUON/AliMUONChamberTrigger.cxx index 4643c030a40..6eff4f5489c 100644 --- a/MUON/AliMUONChamberTrigger.cxx +++ b/MUON/AliMUONChamberTrigger.cxx @@ -15,6 +15,12 @@ /* $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 @@ -84,13 +90,13 @@ void AliMUONChamberTrigger::DisIntegration(Float_t eloss, Float_t tof, 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 @@ -116,7 +122,7 @@ void AliMUONChamberTrigger::DisIntegration(Float_t eloss, Float_t tof, // 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 diff --git a/MUON/AliMUONClusterFinderVS.cxx b/MUON/AliMUONClusterFinderVS.cxx index 424137f50df..d0fb7f016e0 100644 --- a/MUON/AliMUONClusterFinderVS.cxx +++ b/MUON/AliMUONClusterFinderVS.cxx @@ -14,6 +14,13 @@ **************************************************************************/ /* $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. @@ -60,9 +67,8 @@ Revised and extended SplitByLocalMaxima method (Isabelle Chevrot): #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" @@ -138,7 +144,7 @@ void AliMUONClusterFinderVS::SplitByLocalMaxima(AliMUONRawCluster *c) 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 @@ -895,7 +901,7 @@ void AliMUONClusterFinderVS::FindLocalMaxima(AliMUONRawCluster* c) // 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) { @@ -903,7 +909,7 @@ void AliMUONClusterFinderVS::FindLocalMaxima(AliMUONRawCluster* c) 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); @@ -948,7 +954,7 @@ void AliMUONClusterFinderVS::FindLocalMaxima(AliMUONRawCluster* c) // 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) { @@ -956,7 +962,7 @@ void AliMUONClusterFinderVS::FindLocalMaxima(AliMUONRawCluster* c) 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); @@ -1031,7 +1037,7 @@ void AliMUONClusterFinderVS::FillCluster(AliMUONRawCluster* c, Int_t flag, Int_ } // 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; @@ -1049,8 +1055,8 @@ void AliMUONClusterFinderVS::FillCluster(AliMUONRawCluster* c, Int_t flag, Int_ // 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); @@ -1081,7 +1087,7 @@ void AliMUONClusterFinderVS::FillCluster(AliMUONRawCluster* c, Int_t cath) { 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]; @@ -1164,7 +1170,7 @@ void AliMUONClusterFinderVS::FindCluster(Int_t i, Int_t j, Int_t cath, AliMUONR // 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; @@ -1196,7 +1202,7 @@ void AliMUONClusterFinderVS::FindCluster(Int_t i, Int_t j, Int_t cath, AliMUONR 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); } @@ -1207,7 +1213,7 @@ void AliMUONClusterFinderVS::FindCluster(Int_t i, Int_t j, Int_t cath, AliMUONR 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); } @@ -1330,7 +1336,7 @@ Float_t AliMUONClusterFinderVS::SingleMathiesonFit(AliMUONRawCluster *c, Int_t 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; @@ -1389,10 +1395,10 @@ Float_t AliMUONClusterFinderVS::CombiSingleMathiesonFit(AliMUONRawCluster *c) // 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; @@ -1532,11 +1538,11 @@ Float_t AliMUONClusterFinderVS::CombiDoubleMathiesonFit(AliMUONRawCluster *c) 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); @@ -1546,10 +1552,10 @@ Float_t AliMUONClusterFinderVS::CombiDoubleMathiesonFit(AliMUONRawCluster *c) 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); diff --git a/MUON/AliMUONClusterFinderVS.h b/MUON/AliMUONClusterFinderVS.h index 8b11f07af6b..8943e8f2cd6 100644 --- a/MUON/AliMUONClusterFinderVS.h +++ b/MUON/AliMUONClusterFinderVS.h @@ -14,7 +14,7 @@ #include "TF1.h" class AliMUONResponse; -class AliMUONSegmentation; +class AliSegmentation; class TClonesArray; class AliMUONRawCluster; class AliMUONDigit; diff --git a/MUON/AliMUONClusterInput.cxx b/MUON/AliMUONClusterInput.cxx index 71f82e0041b..a2042828c50 100644 --- a/MUON/AliMUONClusterInput.cxx +++ b/MUON/AliMUONClusterInput.cxx @@ -15,6 +15,13 @@ /* $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. @@ -33,7 +40,7 @@ It also naturally takes care of the TMinuit instance. #include "AliMUON.h" #include "AliMUONChamber.h" #include "AliMUONClusterInput.h" -#include "AliMUONSegmentation.h" +#include "AliSegmentation.h" #include "AliMUONResponse.h" #include "AliMUONRawCluster.h" #include "AliMUONDigit.h" diff --git a/MUON/AliMUONClusterInput.h b/MUON/AliMUONClusterInput.h index 41a42eb44c8..d6b473ae73c 100644 --- a/MUON/AliMUONClusterInput.h +++ b/MUON/AliMUONClusterInput.h @@ -11,7 +11,7 @@ class TMinuit; class AliMUONDigit; class AliMUONRawCluster; -class AliMUONSegmentation; +class AliSegmentation; class AliMUONResponse; @@ -28,7 +28,7 @@ class AliMUONClusterInput : public TObject { 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;} @@ -51,7 +51,7 @@ class AliMUONClusterInput : public TObject { // 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 diff --git a/MUON/AliMUONDisplay.cxx b/MUON/AliMUONDisplay.cxx index 54ec9c53352..a560e2c71cf 100644 --- a/MUON/AliMUONDisplay.cxx +++ b/MUON/AliMUONDisplay.cxx @@ -15,6 +15,13 @@ /* $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 @@ -128,7 +135,7 @@ 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" @@ -559,8 +566,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(); @@ -577,7 +584,7 @@ void AliMUONDisplay::DrawSegmentation() { 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); @@ -599,7 +606,7 @@ void AliMUONDisplay::DrawSegmentation() 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); @@ -883,7 +890,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); @@ -938,7 +945,7 @@ 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, 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; @@ -965,7 +972,7 @@ void AliMUONDisplay::LoadDigits(Int_t chamber, Int_t cathode) points->SetPoint(0,xpad,ypad,zpos); for (Int_t imark=0;imarkGetPadCxy(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); diff --git a/MUON/AliMUONHitMapA1.cxx b/MUON/AliMUONHitMapA1.cxx index b06c0143275..523aef3df76 100644 --- a/MUON/AliMUONHitMapA1.cxx +++ b/MUON/AliMUONHitMapA1.cxx @@ -15,6 +15,9 @@ /* $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 @@ -25,7 +28,7 @@ Most coding rule violations corrected. */ #include "AliMUONHitMapA1.h" -#include "AliMUONSegmentation.h" +#include "AliSegmentation.h" #include "AliMUONResponse.h" #include "AliMUONDigit.h" @@ -35,7 +38,7 @@ Most coding rule violations corrected. ClassImp(AliMUONHitMapA1) -AliMUONHitMapA1::AliMUONHitMapA1(AliMUONSegmentation *seg, TObjArray *dig) +AliMUONHitMapA1::AliMUONHitMapA1(AliSegmentation *seg, TObjArray *dig) { // Constructor fSegmentation = seg; diff --git a/MUON/AliMUONHitMapA1.h b/MUON/AliMUONHitMapA1.h index f490c7a9fb0..f8d6f341f6c 100644 --- a/MUON/AliMUONHitMapA1.h +++ b/MUON/AliMUONHitMapA1.h @@ -6,17 +6,17 @@ /* $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(); @@ -43,7 +43,7 @@ public AliMUONHitMap // 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 diff --git a/MUON/AliMUONPoints.cxx b/MUON/AliMUONPoints.cxx index 8287bcf084c..fc9fd6c463a 100644 --- a/MUON/AliMUONPoints.cxx +++ b/MUON/AliMUONPoints.cxx @@ -14,6 +14,9 @@ **************************************************************************/ /* $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 @@ -45,7 +48,6 @@ Log messages included #include "AliRun.h" #include "AliMUON.h" #include "AliMUONChamber.h" -#include "AliMUONSegmentation.h" #include "AliMUONResponse.h" #include "AliMUONHit.h" #include "AliMUONPadHit.h" diff --git a/MUON/AliMUONResponse.h b/MUON/AliMUONResponse.h index 0b5ad31a498..ab12ca91764 100644 --- a/MUON/AliMUONResponse.h +++ b/MUON/AliMUONResponse.h @@ -8,9 +8,7 @@ #include "TObject.h" class TF1; -class AliMUONChamber; -class AliMUONRecCluster; -class AliMUONSegmentation; +class AliSegmentation; class AliMUONResponse : @@ -50,7 +48,7 @@ public TObject { // 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; // diff --git a/MUON/AliMUONResponseTrigger.cxx b/MUON/AliMUONResponseTrigger.cxx index ff701acf117..d1bb2f9af37 100644 --- a/MUON/AliMUONResponseTrigger.cxx +++ b/MUON/AliMUONResponseTrigger.cxx @@ -15,13 +15,16 @@ /* $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 #include #include @@ -30,7 +33,7 @@ Code from AliMUONSegResTrigger.cxx 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 diff --git a/MUON/AliMUONResponseTrigger.h b/MUON/AliMUONResponseTrigger.h index 2fc47409ef4..cce273f5b8a 100644 --- a/MUON/AliMUONResponseTrigger.h +++ b/MUON/AliMUONResponseTrigger.h @@ -13,7 +13,7 @@ public AliMUONResponseV0 { 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 diff --git a/MUON/AliMUONResponseV0.cxx b/MUON/AliMUONResponseV0.cxx index 4a7f347c404..a4d8bc48e72 100644 --- a/MUON/AliMUONResponseV0.cxx +++ b/MUON/AliMUONResponseV0.cxx @@ -15,13 +15,16 @@ /* $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 #include @@ -41,7 +44,7 @@ Float_t AliMUONResponseV0::IntPH(Float_t eloss) } // ------------------------------------------- -Float_t AliMUONResponseV0::IntXY(AliMUONSegmentation * segmentation) +Float_t AliMUONResponseV0::IntXY(AliSegmentation * segmentation) { // Calculate charge on current pad according to Mathieson distribution // diff --git a/MUON/AliMUONResponseV0.h b/MUON/AliMUONResponseV0.h index 6ec01c0080f..0fb5f3ae3fe 100644 --- a/MUON/AliMUONResponseV0.h +++ b/MUON/AliMUONResponseV0.h @@ -60,7 +60,7 @@ public AliMUONResponse { // 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); diff --git a/MUON/AliMUONSegmentationTriggerX.cxx b/MUON/AliMUONSegmentationTriggerX.cxx index 3cd4a483316..738bbd398fc 100644 --- a/MUON/AliMUONSegmentationTriggerX.cxx +++ b/MUON/AliMUONSegmentationTriggerX.cxx @@ -15,6 +15,12 @@ /* $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 @@ -76,7 +82,7 @@ void AliMUONSegmentationTriggerX::Init(Int_t chamber) } //------------------------------------------------------------------ -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; @@ -95,7 +101,7 @@ void AliMUONSegmentationTriggerX::GetPadIxy(Float_t x,Float_t y,Int_t &ix,Int_t } //------------------------------------------------------------------ -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.; @@ -153,8 +159,8 @@ void AliMUONSegmentationTriggerX::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); - GetPadIxy(fx,fy,fix,fiy); + GetPadC(ix,iy,fx,fy); + GetPadI(fx,fy,fix,fiy); fSector=Sector(ix,iy); } @@ -255,8 +261,8 @@ IntegrationLimits(Float_t& x1, Float_t& x2, Float_t& x3, Float_t& width) 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 diff --git a/MUON/AliMUONSegmentationTriggerX.h b/MUON/AliMUONSegmentationTriggerX.h index 5158668623a..887a2717fab 100644 --- a/MUON/AliMUONSegmentationTriggerX.h +++ b/MUON/AliMUONSegmentationTriggerX.h @@ -19,13 +19,13 @@ public AliMUONSegmentationTrigger { 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 diff --git a/MUON/AliMUONSegmentationTriggerY.cxx b/MUON/AliMUONSegmentationTriggerY.cxx index e046e01542f..dd0d93c96f6 100644 --- a/MUON/AliMUONSegmentationTriggerY.cxx +++ b/MUON/AliMUONSegmentationTriggerY.cxx @@ -15,6 +15,12 @@ /* $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 @@ -82,7 +88,7 @@ void AliMUONSegmentationTriggerY::Init(Int_t chamber) } //------------------------------------------------------------------ -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 @@ -102,7 +108,7 @@ void AliMUONSegmentationTriggerY::GetPadIxy(Float_t x,Float_t y,Int_t &ix,Int_t } //------------------------------------------------------------------ -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.; @@ -170,8 +176,8 @@ void AliMUONSegmentationTriggerY::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); - GetPadIxy(fx,fy,fix,fiy); + GetPadC(ix,iy,fx,fy); + GetPadI(fx,fy,fix,fiy); fSector=Sector(ix,iy); } @@ -259,8 +265,8 @@ IntegrationLimits(Float_t& x1, Float_t& x2, Float_t& x3, Float_t& width) // 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 diff --git a/MUON/AliMUONSegmentationTriggerY.h b/MUON/AliMUONSegmentationTriggerY.h index c87cbb9fe46..cec67b5417b 100644 --- a/MUON/AliMUONSegmentationTriggerY.h +++ b/MUON/AliMUONSegmentationTriggerY.h @@ -19,13 +19,13 @@ public AliMUONSegmentationTrigger { 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 diff --git a/MUON/AliMUONSegmentationV0.cxx b/MUON/AliMUONSegmentationV0.cxx index fa9ae4b216c..6f998359ea8 100644 --- a/MUON/AliMUONSegmentationV0.cxx +++ b/MUON/AliMUONSegmentationV0.cxx @@ -14,6 +14,12 @@ **************************************************************************/ /* $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 @@ -72,7 +78,7 @@ void AliMUONSegmentationV0::SetPadSize(Float_t p1, Float_t p2) 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) // @@ -84,7 +90,7 @@ void AliMUONSegmentationV0:: 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) // @@ -117,7 +123,7 @@ 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); } void AliMUONSegmentationV0:: @@ -138,13 +144,13 @@ FirstPad(Float_t xhit, Float_t yhit, Float_t dx, Float_t dy) 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() @@ -164,7 +170,7 @@ 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() @@ -186,7 +192,7 @@ void AliMUONSegmentationV0::SigGenInit(Float_t x,Float_t y,Float_t z) // 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 ; } @@ -206,7 +212,7 @@ Int_t AliMUONSegmentationV0::SigGenCond(Float_t x,Float_t y,Float_t z) // 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; @@ -249,7 +255,7 @@ Float_t AliMUONSegmentationV0::Distance2AndOffset(Int_t iX, Int_t iY, Float_t X, // 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); } diff --git a/MUON/AliMUONSegmentationV0.h b/MUON/AliMUONSegmentationV0.h index fd4800ce4b4..0012e6fc643 100644 --- a/MUON/AliMUONSegmentationV0.h +++ b/MUON/AliMUONSegmentationV0.h @@ -5,14 +5,14 @@ /* $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); @@ -29,13 +29,13 @@ public AliMUONSegmentation { // 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); diff --git a/MUON/AliMUONSegmentationV01.cxx b/MUON/AliMUONSegmentationV01.cxx index 7bbb39a2229..59d15c80548 100644 --- a/MUON/AliMUONSegmentationV01.cxx +++ b/MUON/AliMUONSegmentationV01.cxx @@ -15,6 +15,12 @@ /* $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 @@ -180,7 +186,7 @@ Int_t AliMUONSegmentationV01::Sector(Int_t ix, Int_t iy) } 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) // @@ -210,7 +216,7 @@ GetPadIxy(Float_t x, Float_t y, Int_t &ix, Int_t &iy) } 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) // @@ -235,7 +241,7 @@ 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); } @@ -259,8 +265,8 @@ FirstPad(Float_t xhit, Float_t yhit, Float_t dx, Float_t dy) 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; @@ -272,7 +278,7 @@ FirstPad(Float_t xhit, Float_t yhit, Float_t dx, Float_t dy) if (fiymax < fiymin) fiymax=fiymin; fix=fixmin; fiy=fiymin; - GetPadCxy(fix,fiy,fx,fy); + GetPadC(fix,fiy,fx,fy); } @@ -295,13 +301,13 @@ void AliMUONSegmentationV01::NextPad() 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)) @@ -355,8 +361,8 @@ Neighbours(Int_t iX, Int_t iY, Int_t* Nlist, Int_t Xlist[10], Int_t Ylist[10]) 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); @@ -393,8 +399,8 @@ Neighbours(Int_t iX, Int_t iY, Int_t* Nlist, Int_t Xlist[10], Int_t Ylist[10]) // // 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); diff --git a/MUON/AliMUONSegmentationV01.h b/MUON/AliMUONSegmentationV01.h index 486ed81c1c7..148d0ac3673 100644 --- a/MUON/AliMUONSegmentationV01.h +++ b/MUON/AliMUONSegmentationV01.h @@ -37,13 +37,13 @@ public AliMUONSegmentationV0 { // 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); diff --git a/MUON/AliMUONSegmentationV02.cxx b/MUON/AliMUONSegmentationV02.cxx index d21ebc7165f..3aedd92c1e8 100644 --- a/MUON/AliMUONSegmentationV02.cxx +++ b/MUON/AliMUONSegmentationV02.cxx @@ -15,6 +15,9 @@ /* $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 @@ -64,27 +67,27 @@ Int_t AliMUONSegmentationV02::Sector(Int_t ix, Int_t iy) 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); } @@ -108,13 +111,13 @@ void AliMUONSegmentationV02::NextPad() 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 )) diff --git a/MUON/AliMUONSegmentationV02.h b/MUON/AliMUONSegmentationV02.h index 6b9f16545d5..85c8a3116ef 100644 --- a/MUON/AliMUONSegmentationV02.h +++ b/MUON/AliMUONSegmentationV02.h @@ -39,13 +39,13 @@ public AliMUONSegmentationV01 { // // 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 diff --git a/MUON/AliMUONSegmentationV1.cxx b/MUON/AliMUONSegmentationV1.cxx index 3887db02cfe..8e1c6b28ae9 100644 --- a/MUON/AliMUONSegmentationV1.cxx +++ b/MUON/AliMUONSegmentationV1.cxx @@ -15,6 +15,12 @@ /* $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 @@ -116,7 +122,7 @@ void AliMUONSegmentationV1::SetPadSize(Float_t p1, Float_t p2) } 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) // @@ -125,7 +131,7 @@ GetPadIxy(Float_t x, Float_t y, Int_t &ix, Int_t &iy) } 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) // @@ -148,7 +154,7 @@ Int_t AliMUONSegmentationV1::GetZone(Float_t X, Float_t Y) { // Get segmentation zone Int_t iX, iY; - GetPadIxy(X,Y,iX,iY); + GetPadI(X,Y,iX,iY); return GetZone( iX , iY ); } @@ -182,14 +188,14 @@ void AliMUONSegmentationV1:: 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() ) @@ -221,8 +227,8 @@ void AliMUONSegmentationV1::FirstPad(Float_t xhit, Float_t yhit, Float_t dx, Flo 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; @@ -368,7 +374,7 @@ void AliMUONSegmentationV1::SigGenInit(Float_t x,Float_t y,Float_t z) // Initialises pad and wire position during stepping fxt =x; fyt =y; - GetPadIxy(x,y,fixt,fiyt); + GetPadI(x,y,fixt,fiyt); fiwt= GetiAnod(x); } @@ -380,7 +386,7 @@ Int_t AliMUONSegmentationV1::SigGenCond(Float_t x,Float_t y,Float_t z) // 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)) { @@ -440,7 +446,7 @@ Float_t AliMUONSegmentationV1::Distance2AndOffset(Int_t iX, Int_t iY, Float_t X, for (Int_t i=0;i d2) { diff --git a/MUON/AliMUONSegmentationV1.h b/MUON/AliMUONSegmentationV1.h index 92f1bbf2efc..0221ed36b97 100644 --- a/MUON/AliMUONSegmentationV1.h +++ b/MUON/AliMUONSegmentationV1.h @@ -5,14 +5,14 @@ /* $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); @@ -60,13 +60,13 @@ public AliMUONSegmentation { // 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 diff --git a/MUON/AliMUONTriggerCircuit.cxx b/MUON/AliMUONTriggerCircuit.cxx index 8a2706d3b05..9d0cc968b46 100644 --- a/MUON/AliMUONTriggerCircuit.cxx +++ b/MUON/AliMUONTriggerCircuit.cxx @@ -14,6 +14,13 @@ **************************************************************************/ /* $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 @@ -24,7 +31,7 @@ problem with HP compiler solved (PH), static variables removed : now defined in #include "AliMUONPoints.h" #include "AliMUONTriggerCircuit.h" #include "AliMUONTriggerConstants.h" -#include "AliMUONSegmentation.h" +#include "AliSegmentation.h" #include "AliMUONResponse.h" #include "AliMUONChamber.h" #include "TMath.h" @@ -283,7 +290,7 @@ void AliMUONTriggerCircuit::LoadYPos(){ AliMUON *pMUON = (AliMUON*)gAlice->GetModule("MUON"); AliMUONChamber* iChamber; - AliMUONSegmentation* segmentation; + AliSegmentation* segmentation; // first plane (11) chamber=11; @@ -297,7 +304,7 @@ void AliMUONTriggerCircuit::LoadYPos(){ 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.; @@ -315,7 +322,7 @@ void AliMUONTriggerCircuit::LoadYPos(){ 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 @@ -340,7 +347,7 @@ void AliMUONTriggerCircuit::LoadXPos(){ 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); @@ -353,14 +360,14 @@ void AliMUONTriggerCircuit::LoadXPos(){ // 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; istripGetPadCxy(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; istripGetPadCxy(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.; } diff --git a/MUON/AliMUONTriggerCircuit.h b/MUON/AliMUONTriggerCircuit.h index 55f559d8287..80788f27f3d 100644 --- a/MUON/AliMUONTriggerCircuit.h +++ b/MUON/AliMUONTriggerCircuit.h @@ -43,8 +43,8 @@ public TObject { 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: diff --git a/MUON/AliMUONTriggerDecision.cxx b/MUON/AliMUONTriggerDecision.cxx index e2fe1ff6890..d80727e330d 100644 --- a/MUON/AliMUONTriggerDecision.cxx +++ b/MUON/AliMUONTriggerDecision.cxx @@ -14,6 +14,9 @@ **************************************************************************/ /* $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 @@ -45,7 +48,7 @@ Author and responsible for the code: Philippe Crochet #include "AliRun.h" #include "AliMUON.h" #include "AliMUONPoints.h" -#include "AliMUONSegmentation.h" +#include "AliSegmentation.h" #include "AliMUONResponse.h" #include "AliMUONChamber.h" #include "AliMUONDigit.h" @@ -221,8 +224,8 @@ void AliMUONTriggerDecision::SetBit(){ 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; -- 2.43.5