The access to several data members was changed from public to protected. The digitisa...
authorhristov <hristov@f7af4fe6-9843-0410-8265-dc069ae4e863>
Tue, 23 Oct 2001 13:03:35 +0000 (13:03 +0000)
committerhristov <hristov@f7af4fe6-9843-0410-8265-dc069ae4e863>
Tue, 23 Oct 2001 13:03:35 +0000 (13:03 +0000)
13 files changed:
RICH/AliRICH.cxx
RICH/AliRICHClusterFinder.cxx
RICH/AliRICHDetect.cxx
RICH/AliRICHDigit.h
RICH/AliRICHDisplay.cxx
RICH/AliRICHHit.h
RICH/AliRICHHitMapA1.cxx
RICH/AliRICHMerger.cxx
RICH/AliRICHMerger.h
RICH/AliRICHPatRec.cxx
RICH/AliRICHPoints.cxx
RICH/AliRICHTransientDigit.h
RICH/RICHdigit.C

index ce104a8..ba6800b 100644 (file)
@@ -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):" <<nparticles<<endl;
+  if (nparticles <= 0) return;
+  if (!fMerger) {
+    fMerger = new AliRICHMerger();
+  }
+  fMerger->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):" <<nparticles<<endl;
-  if (nparticles > 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;hit<ndigits;hit++) {
             AliRICHDigit* dHit = (AliRICHDigit*) Digits->UncheckedAt(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;hit<ndigits;hit++) {
                   AliRICHDigit* dHit = (AliRICHDigit*) Digits->UncheckedAt(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);
index 521e9a0..098ede5 100644 (file)
@@ -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; i<mul; i++)
     {
        dig[i]= (AliRICHDigit*)fDigits->UncheckedAt(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; j<nn; j++) {
            if (fHitMap->TestHit(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; k<nLocal; k++) {
                        if (xNei[j]==ix[indLocal[k]] && yNei[j]==iy[indLocal[k]]){
@@ -610,12 +613,12 @@ void  AliRICHClusterFinder::FillCluster(AliRICHRawCluster* c, Int_t flag)
     for (Int_t i=0; i<c->fMultiplicity; 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; ndig<fNdigits; ndig++) {
        dig = (AliRICHDigit*)fDigits->UncheckedAt(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);
index a3e83c0..b6e8f43 100644 (file)
@@ -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;dig<ndigits;dig++)
              { 
                points=(AliRICHDigit*) pDigits->UncheckedAt(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));
index f859eba..e2896df 100644 (file)
@@ -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
index f586d63..3aed8aa 100644 (file)
@@ -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],
index 81db3cf..071b380 100644 (file)
@@ -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;}
index 9531dc7..b9e6d59 100644 (file)
@@ -99,7 +99,7 @@ void  AliRICHHitMapA1::FillHits()
     AliRICHDigit *dig;
     for (Int_t ndig=0; ndig<fNdigits; ndig++) {
        dig = (AliRICHDigit*)fDigits->UncheckedAt(ndig);
-       SetHit(dig->fPadX,dig->fPadY,ndig);
+       SetHit(dig->PadX(),dig->PadY(),ndig);
     }
 }
 
index 4e5876b..f01d53c 100644 (file)
@@ -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 <iostream> 
 
 #include <TTree.h> 
 #include <TVector.h>
@@ -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; i<kNCH; i++) {
       iChamber= &(pRICH->Chamber(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 "<<endl;
-    Int_t nentries=list->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;nent<nentries;nent++) {
-      AliRICHTransientDigit *address=(AliRICHTransientDigit*)list->At(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;ii<kNCH;++ii) {
       if (pHitMap[ii]) {
        hm=pHitMap[ii];
@@ -545,8 +541,7 @@ void AliRICHMerger::Digitise(Int_t nev, Int_t flag)
     gAlice->TreeD()->Write(0,TObject::kOverwrite);
     // reset tree
     //    gAlice->TreeD()->Reset();
-    delete list;
-    pAddress->Clear();
+    //    delete fList; // deleted in dtor
     // gObjectTable->Print();
 
 }
index 0d8d3cb..cb0d4f0 100644 (file)
@@ -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
index c5426fe..326ee3e 100644 (file)
@@ -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;dig<ndigits[ich];dig++) {
       padI=(AliRICHDigit*) pDigitss->UncheckedAt(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);
index ee7e08e..771bc73 100644 (file)
@@ -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],
index 4715ca9..a23e524 100644 (file)
@@ -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
 };
index bcff796..1726f28 100644 (file)
@@ -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");