From 6e585aa20558e35335cd77fe14351976b68f4cfd Mon Sep 17 00:00:00 2001 From: hristov Date: Tue, 23 Oct 2001 13:03:35 +0000 Subject: [PATCH] The access to several data members was changed from public to protected. The digitisation was adapted to the multi-event case (J.Chudoba) --- RICH/AliRICH.cxx | 80 +++++++++++++---------------------- RICH/AliRICHClusterFinder.cxx | 77 +++++++++++++++++---------------- RICH/AliRICHDetect.cxx | 7 ++- RICH/AliRICHDigit.h | 2 +- RICH/AliRICHDisplay.cxx | 9 ++-- RICH/AliRICHHit.h | 3 +- RICH/AliRICHHitMapA1.cxx | 2 +- RICH/AliRICHMerger.cxx | 77 ++++++++++++++++----------------- RICH/AliRICHMerger.h | 2 +- RICH/AliRICHPatRec.cxx | 25 ++++++----- RICH/AliRICHPoints.cxx | 19 +++++---- RICH/AliRICHTransientDigit.h | 3 +- RICH/RICHdigit.C | 4 +- 13 files changed, 150 insertions(+), 160 deletions(-) diff --git a/RICH/AliRICH.cxx b/RICH/AliRICH.cxx index ce104a8f62c..ba6800bf14c 100644 --- a/RICH/AliRICH.cxx +++ b/RICH/AliRICH.cxx @@ -15,6 +15,9 @@ /* $Log$ + Revision 1.54 2001/09/07 08:38:10 hristov + Pointers initialised to 0 in the default constructors + Revision 1.53 2001/08/30 09:51:23 hristov The operator[] is replaced by At() or AddAt() in case of TObjArray. @@ -410,41 +413,18 @@ void AliRICH::SDigits2Digits(Int_t nev, Int_t flag) } int nparticles = gAlice->GetNtrack(); - if (nparticles > 0) - { - if (fMerger) { - fMerger->Init(); - fMerger->Digitise(nev,flag); - } - } - //Digitise(nev,flag); + cout << "Particles (RICH):" <Init(); + fMerger->Digitise(nev,flag); } //___________________________________________ void AliRICH::SDigits2Digits() { - -// -// Generate digits -// Called from alirun, single event only. - - AliRICHChamber* iChamber; - - printf("Generating tresholds...\n"); - - for(Int_t i=0;i<7;i++) { - iChamber = &(Chamber(i)); - iChamber->GenerateTresholds(); - } - - int nparticles = gAlice->GetNtrack(); - cout << "Particles (RICH):" < 0) - { - if (fMerger) { - fMerger->Init(); - fMerger->Digitise(0,0); - } - } + SDigits2Digits(0,0); } //___________________________________________ void AliRICH::Digits2Reco() @@ -2435,9 +2415,9 @@ void AliRICH::StepManager() mom[0] = current->Px(); mom[1] = current->Py(); mom[2] = current->Pz(); - Float_t mipPx = mipHit->fMomX; - Float_t mipPy = mipHit->fMomY; - Float_t mipPz = mipHit->fMomZ; + Float_t mipPx = mipHit->MomX(); + Float_t mipPy = mipHit->MomY(); + Float_t mipPz = mipHit->MomZ(); Float_t r = mom[0]*mom[0] + mom[1]*mom[1] + mom[2]*mom[2]; Float_t rt = TMath::Sqrt(r); @@ -2698,9 +2678,9 @@ AliRICHSDigit* AliRICH::FirstPad(AliRICHHit* hit,TClonesArray *clusters ) // Return the address of the first sdigit for hit TClonesArray *theClusters = clusters; Int_t nclust = theClusters->GetEntriesFast(); - if (nclust && hit->fPHlast > 0) { - sMaxIterPad=Int_t(hit->fPHlast); - sCurIterPad=Int_t(hit->fPHfirst); + if (nclust && hit->PHlast() > 0) { + sMaxIterPad=Int_t(hit->PHlast()); + sCurIterPad=Int_t(hit->PHfirst()); return (AliRICHSDigit*) clusters->UncheckedAt(sCurIterPad-1); } else { return 0; @@ -2817,12 +2797,12 @@ void AliRICH::DiagnosticsFE(Int_t evNumber1,Int_t evNumber2) //Float_t x = mHit->X(); // x-pos of hit //Float_t y = mHit->Z(); // y-pos //Float_t z = mHit->Y(); - //Float_t phi = mHit->fPhi; //Phi angle of incidence - Float_t theta = mHit->fTheta; //Theta angle of incidence + //Float_t phi = mHit->Phi(); //Phi angle of incidence + Float_t theta = mHit->Theta(); //Theta angle of incidence Float_t px = mHit->MomX(); Float_t py = mHit->MomY(); Int_t index = mHit->Track(); - Int_t particle = (Int_t)(mHit->fParticle); + Int_t particle = (Int_t)(mHit->Particle()); Float_t R; Float_t PTfinal; Float_t PTvertex; @@ -3394,10 +3374,10 @@ AliRICH *pRICH = (AliRICH*)gAlice->GetDetector("RICH"); //Int_t nch = mHit->fChamber; // chamber number x = mHit->X(); // x-pos of hit y = mHit->Z(); // y-pos - Float_t phi = mHit->fPhi; //Phi angle of incidence - Float_t theta = mHit->fTheta; //Theta angle of incidence + Float_t phi = mHit->Phi(); //Phi angle of incidence + Float_t theta = mHit->Theta(); //Theta angle of incidence Int_t index = mHit->Track(); - Int_t particle = (Int_t)(mHit->fParticle); + Int_t particle = (Int_t)(mHit->Particle()); //Int_t freon = (Int_t)(mHit->fLoss); hitsX->Fill(x,(float) 1); @@ -3679,9 +3659,9 @@ AliRICH *pRICH = (AliRICH*)gAlice->GetDetector("RICH"); padsev->Fill(ndigits,(float) 1); for (Int_t hit=0;hitUncheckedAt(hit); - Int_t qtot = dHit->fSignal; // charge - Int_t ipx = dHit->fPadX; // pad number on X - Int_t ipy = dHit->fPadY; // pad number on Y + Int_t qtot = dHit->Signal(); // charge + Int_t ipx = dHit->PadX(); // pad number on X + Int_t ipy = dHit->PadY(); // pad number on Y //printf("%d, %d\n",ipx,ipy); if( ipx<=100 && ipy <=100) hc0->Fill(ipx,ipy,(float) qtot); } @@ -3698,11 +3678,11 @@ AliRICH *pRICH = (AliRICH*)gAlice->GetDetector("RICH"); if (ndigits) { for (Int_t hit=0;hitUncheckedAt(hit); - //Int_t nchamber = dHit->fChamber; // chamber number + //Int_t nchamber = dHit->GetChamber(); // chamber number //Int_t nhit = dHit->fHitNumber; // hit number - Int_t qtot = dHit->fSignal; // charge - Int_t ipx = dHit->fPadX; // pad number on X - Int_t ipy = dHit->fPadY; // pad number on Y + Int_t qtot = dHit->Signal(); // charge + Int_t ipx = dHit->PadX(); // pad number on X + Int_t ipy = dHit->PadY(); // pad number on Y //Int_t iqpad = dHit->fQpad; // charge per pad //Int_t rpad = dHit->fRSec; // R-position of pad //printf ("Pad hit, PadX:%d, PadY:%d\n",ipx,ipy); diff --git a/RICH/AliRICHClusterFinder.cxx b/RICH/AliRICHClusterFinder.cxx index 521e9a082c3..098ede5cd94 100644 --- a/RICH/AliRICHClusterFinder.cxx +++ b/RICH/AliRICHClusterFinder.cxx @@ -15,6 +15,9 @@ /* $Log$ + Revision 1.10 2001/02/27 15:21:58 jbarbosa + Transition to SDigits. + Revision 1.9 2001/01/26 20:00:27 hristov Major upgrade of AliRoot code @@ -211,8 +214,8 @@ Bool_t AliRICHClusterFinder::Centered(AliRICHRawCluster *cluster) AliRICHDigit* dig; dig= (AliRICHDigit*)fDigits->UncheckedAt(cluster->fIndexMap[0]); - Int_t ix=dig->fPadX; - Int_t iy=dig->fPadY; + Int_t ix=dig->PadX(); + Int_t iy=dig->PadY(); Int_t nn; Int_t x[kMaxNeighbours], y[kMaxNeighbours], xN[kMaxNeighbours], yN[kMaxNeighbours]; @@ -310,9 +313,9 @@ void AliRICHClusterFinder::SplitByLocalMaxima(AliRICHRawCluster *c) for (i=0; iUncheckedAt(c->fIndexMap[i]); - ix[i]= dig[i]->fPadX; - iy[i]= dig[i]->fPadY; - q[i] = dig[i]->fSignal; + ix[i]= dig[i]->PadX(); + iy[i]= dig[i]->PadY(); + q[i] = dig[i]->Signal(); fSegmentation->GetPadC(ix[i], iy[i], x[i], y[i], zdum); } // @@ -330,12 +333,12 @@ void AliRICHClusterFinder::SplitByLocalMaxima(AliRICHRawCluster *c) for (j=0; jTestHit(xNei[j], yNei[j])==kEmpty) continue; digt=(AliRICHDigit*) fHitMap->GetHit(xNei[j], yNei[j]); - if (digt->fSignal > q[i]) { + if (digt->Signal() > q[i]) { isLocal[i]=kFALSE; break; // // handle special case of neighbouring pads with equal signal - } else if (digt->fSignal == q[i]) { + } else if (digt->Signal() == q[i]) { if (nLocal >0) { for (Int_t k=0; kfMultiplicity; i++) { dig= (AliRICHDigit*)fDigits->UncheckedAt(c->fIndexMap[i]); - ix=dig->fPadX+c->fOffsetMap[i]; - iy=dig->fPadY; - Int_t q=dig->fSignal; - if (dig->fPhysics >= dig->fSignal) { + ix=dig->PadX()+c->fOffsetMap[i]; + iy=dig->PadY(); + Int_t q=dig->Signal(); + if (dig->Physics() >= dig->Signal()) { c->fPhysicsMap[i]=2; - } else if (dig->fPhysics == 0) { + } else if (dig->Physics() == 0) { c->fPhysicsMap[i]=0; } else c->fPhysicsMap[i]=1; // @@ -625,28 +628,28 @@ void AliRICHClusterFinder::FillCluster(AliRICHRawCluster* c, Int_t flag) if (q>c->fPeakSignal) { c->fPeakSignal=q; /* - c->fTracks[0]=dig->fTracks[0]; - c->fTracks[1]=dig->fTracks[1]; - c->fTracks[2]=dig->fTracks[2]; + c->fTracks[0]=dig->Track(0); + c->fTracks[1]=dig->Track(1); + c->fTracks[2]=dig->Track(2); */ //c->fTracks[0]=dig->fTrack; - c->fTracks[0]=dig->fHit; - c->fTracks[1]=dig->fTracks[0]; - c->fTracks[2]=dig->fTracks[1]; + c->fTracks[0]=dig->Hit(); + c->fTracks[1]=dig->Track(0); + c->fTracks[2]=dig->Track(1); } } else { if (c->fContMap[i] > frac) { frac=c->fContMap[i]; c->fPeakSignal=q; /* - c->fTracks[0]=dig->fTracks[0]; - c->fTracks[1]=dig->fTracks[1]; - c->fTracks[2]=dig->fTracks[2]; + c->fTracks[0]=dig->Track(0); + c->fTracks[1]=dig->Track(1); + c->fTracks[2]=dig->Track(2); */ //c->fTracks[0]=dig->fTrack; - c->fTracks[0]=dig->fHit; - c->fTracks[1]=dig->fTracks[0]; - c->fTracks[2]=dig->fTracks[1]; + c->fTracks[0]=dig->Hit(); + c->fTracks[1]=dig->Track(0); + c->fTracks[2]=dig->Track(1); } } // @@ -692,7 +695,7 @@ void AliRICHClusterFinder::FindCluster(Int_t i, Int_t j, AliRICHRawCluster &c){ Int_t idx = fHitMap->GetHitIndex(i,j); AliRICHDigit* dig = (AliRICHDigit*) fHitMap->GetHit(i,j); - Int_t q=dig->fSignal; + Int_t q=dig->Signal(); if (q > TMath::Abs(c.fPeakSignal)) { c.fPeakSignal=q; /* @@ -701,9 +704,9 @@ void AliRICHClusterFinder::FindCluster(Int_t i, Int_t j, AliRICHRawCluster &c){ c.fTracks[2]=dig->fTracks[2]; */ //c.fTracks[0]=dig->fTrack; - c.fTracks[0]=dig->fHit; - c.fTracks[1]=dig->fTracks[0]; - c.fTracks[2]=dig->fTracks[1]; + c.fTracks[0]=dig->Hit(); + c.fTracks[1]=dig->Track(0); + c.fTracks[2]=dig->Track(1); } // // Make sure that list of digits is ordered @@ -711,9 +714,9 @@ void AliRICHClusterFinder::FindCluster(Int_t i, Int_t j, AliRICHRawCluster &c){ Int_t mu=c.fMultiplicity; c.fIndexMap[mu]=idx; - if (dig->fPhysics >= dig->fSignal) { + if (dig->Physics() >= dig->Signal()) { c.fPhysicsMap[mu]=2; - } else if (dig->fPhysics == 0) { + } else if (dig->Physics() == 0) { c.fPhysicsMap[mu]=0; } else c.fPhysicsMap[mu]=1; @@ -721,7 +724,7 @@ void AliRICHClusterFinder::FindCluster(Int_t i, Int_t j, AliRICHRawCluster &c){ for (Int_t ind=mu-1; ind>=0; ind--) { Int_t ist=(c.fIndexMap)[ind]; Int_t ql=((AliRICHDigit*)fDigits - ->UncheckedAt(ist))->fSignal; + ->UncheckedAt(ist))->Signal(); if (q>ql) { c.fIndexMap[ind]=idx; c.fIndexMap[ind+1]=ist; @@ -781,24 +784,24 @@ void AliRICHClusterFinder::FindRawClusters() fHitMap->FillHits(); for (ndig=0; ndigUncheckedAt(ndig); - Int_t i=dig->fPadX; - Int_t j=dig->fPadY; + Int_t i=dig->PadX(); + Int_t j=dig->PadY(); if (fHitMap->TestHit(i,j)==kUsed ||fHitMap->TestHit(i,j)==kEmpty) { nskip++; continue; } AliRICHRawCluster c; c.fMultiplicity=0; - c.fPeakSignal=dig->fSignal; + c.fPeakSignal=dig->Signal(); /* c.fTracks[0]=dig->fTracks[0]; c.fTracks[1]=dig->fTracks[1]; c.fTracks[2]=dig->fTracks[2]; */ //c.fTracks[0]=dig->fTrack; - c.fTracks[0]=dig->fHit; - c.fTracks[1]=dig->fTracks[0]; - c.fTracks[2]=dig->fTracks[1]; + c.fTracks[0]=dig->Hit(); + c.fTracks[1]=dig->Track(0); + c.fTracks[2]=dig->Track(1); // tag the beginning of cluster list in a raw cluster c.fNcluster[0]=-1; FindCluster(i,j, c); diff --git a/RICH/AliRICHDetect.cxx b/RICH/AliRICHDetect.cxx index a3e83c0a77d..b6e8f433cb9 100644 --- a/RICH/AliRICHDetect.cxx +++ b/RICH/AliRICHDetect.cxx @@ -15,6 +15,9 @@ /* $Log$ + Revision 1.15 2001/10/21 18:31:23 hristov + Several pointers were set to zero in the default constructors to avoid memory management problems + Revision 1.14 2001/05/14 13:25:54 hristov stdlib.h included (for Alpha) @@ -260,7 +263,7 @@ void AliRICHDetect::Detect(Int_t nev) } mHit = (AliRICHHit*) pHits->UncheckedAt(0); //printf("Aqui vou eu\n"); - Int_t nch = mHit->fChamber; + Int_t nch = mHit->Chamber(); //printf("Aqui fui eu\n"); trackglob[0] = mHit->X(); trackglob[1] = mHit->Y(); @@ -304,7 +307,7 @@ void AliRICHDetect::Detect(Int_t nev) for (Int_t dig=0;digUncheckedAt(dig); - segmentation->GetPadC(points->fPadX, points->fPadY,x, y, z); + segmentation->GetPadC(points->PadX(), points->PadY(),x, y, z); x=x-cx; y=y-cy; radius=TMath::Sqrt(TMath::Power(x,2)+TMath::Power(y,2)); diff --git a/RICH/AliRICHDigit.h b/RICH/AliRICHDigit.h index f859eba5485..e2896df4906 100644 --- a/RICH/AliRICHDigit.h +++ b/RICH/AliRICHDigit.h @@ -9,7 +9,7 @@ #include "AliDigit.h" class AliRICHDigit : public TObject { - public: + protected: Int_t fPadX; // Pad number along x Int_t fPadY ; // Pad number along y Int_t fSignal; // Signal amplitude diff --git a/RICH/AliRICHDisplay.cxx b/RICH/AliRICHDisplay.cxx index f586d63ee42..3aed8aacb77 100644 --- a/RICH/AliRICHDisplay.cxx +++ b/RICH/AliRICHDisplay.cxx @@ -15,6 +15,9 @@ /* $Log$ + Revision 1.16 2001/10/21 18:31:24 hristov + Several pointers were set to zero in the default constructors to avoid memory management problems + Revision 1.15 2001/10/09 07:34:09 hristov Modifications needed by Root.03.01.06 (J.Chudoba) @@ -1013,7 +1016,7 @@ void AliRICHDisplay::LoadDigits() points = new AliRICHPoints(npoints); fPoints->AddAt(points,counter); counter++; - Int_t charge=mdig->fSignal; + Int_t charge=mdig->Signal(); Int_t index=Int_t(TMath::Log(charge)/(TMath::Log(adc_satm)/22)); Int_t color=701+index; if (color>722) color=722; @@ -1021,7 +1024,7 @@ void AliRICHDisplay::LoadDigits() points->SetMarkerStyle(21); points->SetMarkerSize(0.5); Float_t xpad, ypad, zpad; - segmentation->GetPadC(mdig->fPadX, mdig->fPadY,xpad, ypad, zpad); + segmentation->GetPadC(mdig->PadX(), mdig->PadY(),xpad, ypad, zpad); Float_t vectorLoc[3]={xpad,5,ypad}; Float_t vectorGlob[3]; iChamber->LocaltoGlobal(vectorLoc,vectorGlob); @@ -1032,7 +1035,7 @@ void AliRICHDisplay::LoadDigits() points->SetPoint(0,vectorGlob[0],vectorGlob[1],vectorGlob[2]); //printf("Y position (digit): %f\n", vectorGlob[1]); - segmentation->GetPadC(mdig->fPadX, mdig->fPadY, xpad, ypad, zpad); + segmentation->GetPadC(mdig->PadX(), mdig->PadY(), xpad, ypad, zpad); Float_t theta = iChamber->GetRotMatrix()->GetTheta(); Float_t phi = iChamber->GetRotMatrix()->GetPhi(); marker=new TMarker3DBox(vectorGlob[0],vectorGlob[1],vectorGlob[2], diff --git a/RICH/AliRICHHit.h b/RICH/AliRICHHit.h index 81db3cfe87e..071b380a3be 100644 --- a/RICH/AliRICHHit.h +++ b/RICH/AliRICHHit.h @@ -11,7 +11,7 @@ #include "AliHit.h" class AliRICHHit : public AliHit { - public: + protected: Int_t fChamber; // Chamber number Float_t fParticle; // Geant3 particle type Float_t fTheta ; // Incident theta angle in degrees @@ -41,6 +41,7 @@ class AliRICHHit : public AliHit { Float_t Phi() {return fPhi;} Float_t Tlength() {return fTlength;} Float_t Eloss() {return fEloss;} + Float_t Loss() {return fLoss;} Float_t PHfirst() {return fPHfirst;} Float_t PHlast() {return fPHlast;} Float_t MomX() {return fMomX;} diff --git a/RICH/AliRICHHitMapA1.cxx b/RICH/AliRICHHitMapA1.cxx index 9531dc783bb..b9e6d592ea7 100644 --- a/RICH/AliRICHHitMapA1.cxx +++ b/RICH/AliRICHHitMapA1.cxx @@ -99,7 +99,7 @@ void AliRICHHitMapA1::FillHits() AliRICHDigit *dig; for (Int_t ndig=0; ndigUncheckedAt(ndig); - SetHit(dig->fPadX,dig->fPadY,ndig); + SetHit(dig->PadX(),dig->PadY(),ndig); } } diff --git a/RICH/AliRICHMerger.cxx b/RICH/AliRICHMerger.cxx index 4e5876bd672..f01d53cb8a4 100644 --- a/RICH/AliRICHMerger.cxx +++ b/RICH/AliRICHMerger.cxx @@ -15,6 +15,9 @@ /* $Log$ +Revision 1.4 2001/10/21 18:31:24 hristov +Several pointers were set to zero in the default constructors to avoid memory management problems + Revision 1.3 2001/05/16 14:57:20 alibrary New files for folders and Stack @@ -26,6 +29,7 @@ Revision 1.1 2001/02/27 22:13:34 jbarbosa Implementing merger class. */ +#include #include #include @@ -65,9 +69,8 @@ AliRICHMerger::AliRICHMerger() fHitsBgr = 0; fSDigitsBgr = 0; fHitMap = 0; - fList = 0; - fTrList = 0; - fAddress = 0; + fList=new TObjArray; + fAddress = 0; fBgrFile = 0; } @@ -80,7 +83,6 @@ AliRICHMerger::~AliRICHMerger() if (fSDigitsBgr) delete fSDigitsBgr; if (fHitMap) delete fHitMap; if (fList) delete fList; - if (fTrList) delete fTrList; if (fAddress) delete fAddress; } @@ -107,9 +109,9 @@ void AliRICHMerger::Update(AliRICHSDigit *mergable) (*pdigit).AddPhysicsSignal(iqpad); // update list of tracks // - TObjArray* fTrList = (TObjArray*)pdigit->TrackList(); - Int_t lastEntry = fTrList->GetLast(); - TVector *pTrack = (TVector*)fTrList->At(lastEntry); + TObjArray* digitTrList = (TObjArray*)pdigit->TrackList(); + Int_t lastEntry = digitTrList->GetLast(); + TVector *pTrack = (TVector*)digitTrList->At(lastEntry); TVector &ptrk = *pTrack; TVector &trinfo = *((TVector*) (*fAddress)[fCountadr-1]); Int_t lastTrack = Int_t(ptrk(0)); @@ -118,14 +120,14 @@ void AliRICHMerger::Update(AliRICHSDigit *mergable) if (lastTrack == fTrack) { Int_t lastCharge = Int_t(ptrk(1)); lastCharge += iqpad; - fTrList->RemoveAt(lastEntry); + digitTrList->RemoveAt(lastEntry); trinfo(1) = lastCharge; - fTrList->AddAt(&trinfo,lastEntry); + digitTrList->AddAt(&trinfo,lastEntry); } else { - fTrList->Add(&trinfo); + digitTrList->Add(&trinfo); } } else { - if (lastTrack != -1) fTrList->Add(&trinfo); + if (lastTrack != -1) digitTrList->Add(&trinfo); } } @@ -143,9 +145,9 @@ void AliRICHMerger::CreateNew(AliRICHSDigit *mergable) fCounter++; pdigit = (AliRICHTransientDigit*)fList->At(fList->GetLast()); // list of tracks - TObjArray *fTrList = (TObjArray*)pdigit->TrackList(); + TObjArray *digitTrList = (TObjArray*)pdigit->TrackList(); TVector &trinfo = *((TVector*) (*fAddress)[fCountadr-1]); - fTrList->Add(&trinfo); + digitTrList->Add(&trinfo); } @@ -190,9 +192,6 @@ void AliRICHMerger::Digitise(Int_t nev, Int_t flag) Int_t digitise=0; Int_t trk[50]; Int_t chtrk[50]; - TObjArray *list=new TObjArray; - static TClonesArray *pAddress=0; - if(!pAddress) pAddress=new TClonesArray("TVector",1000); Int_t digits[5]; AliRICH *pRICH = (AliRICH *) gAlice->GetDetector("RICH"); @@ -232,12 +231,11 @@ void AliRICHMerger::Digitise(Int_t nev, Int_t flag) } AliHitMap* hm; - Int_t countadr=0; Int_t counter=0; for (i =0; iChamber(i)); segmentation=iChamber->GetSegmentationModel(1); - pHitMap[i] = new AliRICHHitMapA1(segmentation, list); + pHitMap[i] = new AliRICHHitMapA1(segmentation, fList); } // // Loop over tracks @@ -255,7 +253,7 @@ void AliRICHMerger::Digitise(Int_t nev, Int_t flag) mHit=(AliRICHHit*)pRICH->NextHit()) { - Int_t nch = mHit->fChamber-1; // chamber number + Int_t nch = mHit->Chamber()-1; // chamber number Int_t index = mHit->Track(); if (nch >kNCH) continue; iChamber = &(pRICH->Chamber(nch)); @@ -321,11 +319,8 @@ void AliRICHMerger::Digitise(Int_t nev, Int_t flag) // //printf("X:%d, Y:%d, Q:%d\n",ipx,ipy,iqpad); - Float_t thex, they, thez; segmentation=iChamber->GetSegmentationModel(0); - segmentation->GetPadC(ipx,ipy,thex,they,thez); - new((*pAddress)[countadr++]) TVector(2); - TVector &trinfo=*((TVector*) (*pAddress)[countadr-1]); + TVector & trinfo = *(new TVector(2)); trinfo(0)=(Float_t)track; trinfo(1)=(Float_t)iqpad; @@ -336,17 +331,18 @@ void AliRICHMerger::Digitise(Int_t nev, Int_t flag) AliRICHTransientDigit* pdigit; // build the list of fired pads and update the info if (!pHitMap[nch]->TestHit(ipx, ipy)) { - list->AddAtAndExpand(new AliRICHTransientDigit(nch,digits),counter); + fList->AddAtAndExpand(new AliRICHTransientDigit(nch,digits),counter); pHitMap[nch]->SetHit(ipx, ipy, counter); counter++; - pdigit=(AliRICHTransientDigit*)list->At(list->GetLast()); + pdigit=(AliRICHTransientDigit*)fList->At(fList->GetLast()); // list of tracks TObjArray *trlist=(TObjArray*)pdigit->TrackList(); trlist->Add(&trinfo); } else { pdigit=(AliRICHTransientDigit*) pHitMap[nch]->GetHit(ipx, ipy); // update charge - (*pdigit).fSignal+=iqpad; + // (*pdigit).fSignal+=iqpad; + pdigit->AddSignal(iqpad); // update list of tracks TObjArray* trlist=(TObjArray*)pdigit->TrackList(); Int_t lastEntry=trlist->GetLast(); @@ -446,25 +442,25 @@ void AliRICHMerger::Digitise(Int_t nev, Int_t flag) Int_t tracks[10]; Int_t charges[10]; //cout<<"Start filling digits \n "<GetEntriesFast(); - //printf(" \n \n nentries %d \n",nentries); + Int_t nentries=fList->GetEntriesFast(); + printf(" \n \n nentries %d \n",nentries); // start filling the digits for (Int_t nent=0;nentAt(nent); - if (address==0) continue; + AliRICHTransientDigit *transDigit=(AliRICHTransientDigit*)fList->At(nent); + if (transDigit==0) continue; - Int_t ich=address->fChamber; - Int_t q=address->fSignal; + Int_t ich=transDigit->GetChamber(); + Int_t q=transDigit->Signal(); iChamber=&(pRICH->Chamber(ich)); AliRICHResponse * response=iChamber->GetResponseModel(); Int_t adcmax= (Int_t) response->MaxAdc(); // add white noise and do zero-suppression and signal truncation (new electronics,old electronics gaus 1.2,0.2) - //printf("Treshold: %d\n",iChamber->fTresh->GetHitIndex(address->fPadX,address->fPadY)); - Int_t pedestal = iChamber->fTresh->GetHitIndex(address->fPadX,address->fPadY); + //printf("Treshold: %d\n",iChamber->fTresh->GetHitIndex(transDigit->PadX(),transDigit->PadY())); + Int_t pedestal = iChamber->fTresh->GetHitIndex(transDigit->PadX(),transDigit->PadY()); //printf("Pedestal:%d\n",pedestal); //Int_t pedestal=0; @@ -482,11 +478,11 @@ void AliRICHMerger::Digitise(Int_t nev, Int_t flag) } q = q - pedestal; if ( q >= adcmax) q=adcmax; - digits[0]=address->fPadX; - digits[1]=address->fPadY; + digits[0]=transDigit->PadX(); + digits[1]=transDigit->PadY(); digits[2]=q; - TObjArray* trlist=(TObjArray*)address->TrackList(); + TObjArray* trlist=(TObjArray*)transDigit->TrackList(); Int_t nptracks=trlist->GetEntriesFast(); // this was changed to accomodate the real number of tracks @@ -519,8 +515,8 @@ void AliRICHMerger::Digitise(Int_t nev, Int_t flag) pRICH->AddDigits(ich,tracks,charges,digits); } gAlice->TreeD()->Fill(); - - list->Delete(); + + fList->Delete(); for(Int_t ii=0;iiTreeD()->Write(0,TObject::kOverwrite); // reset tree // gAlice->TreeD()->Reset(); - delete list; - pAddress->Clear(); + // delete fList; // deleted in dtor // gObjectTable->Print(); } diff --git a/RICH/AliRICHMerger.h b/RICH/AliRICHMerger.h index 0d8d3cbbb16..cb0d4f04bb0 100644 --- a/RICH/AliRICHMerger.h +++ b/RICH/AliRICHMerger.h @@ -51,7 +51,7 @@ class AliRICHMerger { Int_t fNch; // ! chamber nr (loop variable) Int_t fTrack; // ! track nr (loop variable) TObjArray *fList; // ! list of AliRICHTransientDigit - TObjArray *fTrList; // ! list of tracks + // TObjArray *fTrList; // ! list of tracks TClonesArray *fAddress; // ! pointer to TClonesArray of TVectors with trackinfo Int_t fCounter; // ! nr. of AliRICHTransientDigit Int_t fCountadr; // ! counter for trinfo diff --git a/RICH/AliRICHPatRec.cxx b/RICH/AliRICHPatRec.cxx index c5426fe60ff..326ee3edb22 100644 --- a/RICH/AliRICHPatRec.cxx +++ b/RICH/AliRICHPatRec.cxx @@ -15,6 +15,9 @@ /* $Log$ + Revision 1.12 2001/05/10 12:34:23 jbarbosa + Changed drwaing routines. + Revision 1.11 2001/03/14 18:21:24 jbarbosa Corrected bug in digits loading. @@ -138,9 +141,9 @@ void AliRICHPatRec::PatRec() for (Int_t dig=0;digUncheckedAt(dig); - x=padI->fPadX; - y=padI->fPadY; - q=padI->fSignal; + x=padI->PadX(); + y=padI->PadY(); + q=padI->Signal(); segmentation->GetPadC(x,y,rx,ry,rz); //printf("Pad coordinates x:%d, Real coordinates x:%f\n",x,rx); @@ -223,13 +226,13 @@ Int_t AliRICHPatRec::TrackParam(Int_t itr, Int_t &ich, Float_t rectheta, Float_t AliRICH *pRICH = (AliRICH*)gAlice->GetDetector("RICH"); AliRICHHit* mHit=(AliRICHHit*)pRICH->FirstHit(-1); if(mHit==0) return 1; - ich = mHit->fChamber-1; + ich = mHit->Chamber()-1; trackglob[0] = mHit->X(); trackglob[1] = mHit->Y(); trackglob[2] = mHit->Z(); - pX = mHit->fMomX; - pY = mHit->fMomY; - pZ = mHit->fMomZ; + pX = mHit->MomX(); + pY = mHit->MomY(); + pZ = mHit->MomZ(); fTrackMom = sqrt(TMath::Power(pX,2)+TMath::Power(pY,2)+TMath::Power(pZ,2)); if(recphi!=0 || rectheta!=0) { @@ -238,11 +241,11 @@ Int_t AliRICHPatRec::TrackParam(Int_t itr, Int_t &ich, Float_t rectheta, Float_t } else { - thetatr = mHit->fTheta*TMath::Pi()/180; - phitr = mHit->fPhi*TMath::Pi()/180; + thetatr = mHit->Theta()*TMath::Pi()/180; + phitr = mHit->Phi()*TMath::Pi()/180; } - iloss = mHit->fLoss; - part = mHit->fParticle; + iloss = mHit->Loss(); + part = mHit->Particle(); iChamber = &(pRICH->Chamber(ich)); iChamber->GlobaltoLocal(trackglob,trackloc); diff --git a/RICH/AliRICHPoints.cxx b/RICH/AliRICHPoints.cxx index ee7e08ed71f..771bc737dab 100644 --- a/RICH/AliRICHPoints.cxx +++ b/RICH/AliRICHPoints.cxx @@ -15,6 +15,9 @@ /* $Log$ + Revision 1.9 2001/02/27 15:20:56 jbarbosa + Transition to SDigits. + Revision 1.8 2001/01/26 20:00:27 hristov Major upgrade of AliRoot code @@ -221,10 +224,10 @@ void AliRICHPoints::ShowRing(Int_t highlight) { AliRICHHit *mHit = GetHit(); - printf("Hit %d on chamber: %d\n",fHitIndex, mHit->fChamber); + printf("Hit %d on chamber: %d\n",fHitIndex, mHit->Chamber()); - TClonesArray *digits = pRICH->DigitsAddress(mHit->fChamber - 1); - iChamber = &(pRICH->Chamber(mHit->fChamber - 1)); + TClonesArray *digits = pRICH->DigitsAddress(mHit->Chamber() - 1); + iChamber = &(pRICH->Chamber(mHit->Chamber() - 1)); segmentation=iChamber->GetSegmentationModel(); Float_t dpx = segmentation->Dpx(); @@ -241,11 +244,11 @@ void AliRICHPoints::ShowRing(Int_t highlight) { //printf("Particle %d belongs to ring %d \n", fTrackIndex, mdig->fTracks[1]); if (!points) continue; - if (fTrackIndex == mdig->fTracks[0]) { + if (fTrackIndex == mdig->Track(0)) { - printf("Digit %d from particle %d belongs to ring %d \n", digit, fTrackIndex, mdig->fTracks[0]); + printf("Digit %d from particle %d belongs to ring %d \n", digit, fTrackIndex, mdig->Track(0)); - Int_t charge=mdig->fSignal; + Int_t charge=mdig->Signal(); Int_t index=Int_t(TMath::Log(charge)/(TMath::Log(adc_satm)/22)); Int_t color=701+index; if (color>722) color=722; @@ -253,7 +256,7 @@ void AliRICHPoints::ShowRing(Int_t highlight) { points->SetMarkerStyle(21); points->SetMarkerSize(.5); Float_t xpad, ypad, zpad; - segmentation->GetPadC(mdig->fPadX, mdig->fPadY,xpad, ypad, zpad); + segmentation->GetPadC(mdig->PadX(), mdig->PadY(),xpad, ypad, zpad); Float_t vectorLoc[3]={xpad,6.276,ypad}; Float_t vectorGlob[3]; points->SetParticle(-1); @@ -263,7 +266,7 @@ void AliRICHPoints::ShowRing(Int_t highlight) { iChamber->LocaltoGlobal(vectorLoc,vectorGlob); points->SetPoint(0,vectorGlob[0],vectorGlob[1],vectorGlob[2]); - segmentation->GetPadC(mdig->fPadX, mdig->fPadY, xpad, ypad, zpad); + segmentation->GetPadC(mdig->PadX(), mdig->PadY(), xpad, ypad, zpad); Float_t theta = iChamber->GetRotMatrix()->GetTheta(); Float_t phi = iChamber->GetRotMatrix()->GetPhi(); marker=new TMarker3DBox(vectorGlob[0],vectorGlob[1],vectorGlob[2], diff --git a/RICH/AliRICHTransientDigit.h b/RICH/AliRICHTransientDigit.h index 4715ca9f270..a23e5243207 100644 --- a/RICH/AliRICHTransientDigit.h +++ b/RICH/AliRICHTransientDigit.h @@ -9,7 +9,7 @@ #include "AliRICHDigit.h" class AliRICHTransientDigit : public AliRICHDigit { - public: + protected: Int_t fRpad; // r_pos of pad Int_t fChamber; // chamber number of pad TObjArray *fTrackList; // list of tracks @@ -19,6 +19,7 @@ class AliRICHTransientDigit : public AliRICHDigit { virtual ~AliRICHTransientDigit(); TObjArray *TrackList() {return fTrackList;} + Int_t GetChamber() {return fChamber;} ClassDef(AliRICHTransientDigit,1) //Digits for set:RICH }; diff --git a/RICH/RICHdigit.C b/RICH/RICHdigit.C index bcff79696e9..1726f28a430 100644 --- a/RICH/RICHdigit.C +++ b/RICH/RICHdigit.C @@ -11,7 +11,7 @@ Int_t particle_type=0; #include "iostream.h" -void RICHdigit (Int_t evNumber1=0,Int_t evNumber2=0, Int_t merging) +void RICHdigit (Int_t evNumber1=0,Int_t evNumber2=0, Int_t merging=0) { ///////////////////////////////////////////////////////////////////////// // This macro is a small example of a ROOT macro @@ -31,8 +31,6 @@ void RICHdigit (Int_t evNumber1=0,Int_t evNumber2=0, Int_t merging) gAlice = 0; } - galice=0; - // Connect the Root Galice file containing Geometry, Kine and Hits TFile *file = (TFile*)gROOT->GetListOfFiles()->FindObject("galice.root"); -- 2.43.0