/*
$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.
}
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()
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);
// 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;
//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;
//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);
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);
}
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);
/*
$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
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];
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);
}
//
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]]){
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;
//
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);
}
}
//
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;
/*
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
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;
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;
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);
/*
$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)
}
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();
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));
#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
/*
$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)
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;
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);
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],
#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
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;}
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);
}
}
/*
$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
Implementing merger class.
*/
+#include <iostream>
#include <TTree.h>
#include <TVector.h>
fHitsBgr = 0;
fSDigitsBgr = 0;
fHitMap = 0;
- fList = 0;
- fTrList = 0;
- fAddress = 0;
+ fList=new TObjArray;
+ fAddress = 0;
fBgrFile = 0;
}
if (fSDigitsBgr) delete fSDigitsBgr;
if (fHitMap) delete fHitMap;
if (fList) delete fList;
- if (fTrList) delete fTrList;
if (fAddress) delete fAddress;
}
(*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));
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);
}
}
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);
}
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");
}
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
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));
//
//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;
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();
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;
}
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
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];
gAlice->TreeD()->Write(0,TObject::kOverwrite);
// reset tree
// gAlice->TreeD()->Reset();
- delete list;
- pAddress->Clear();
+ // delete fList; // deleted in dtor
// gObjectTable->Print();
}
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
/*
$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.
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);
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)
{
}
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);
/*
$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
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();
//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;
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);
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],
#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
virtual ~AliRICHTransientDigit();
TObjArray *TrackList() {return fTrackList;}
+ Int_t GetChamber() {return fChamber;}
ClassDef(AliRICHTransientDigit,1) //Digits for set:RICH
};
#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
gAlice = 0;
}
- galice=0;
-
// Connect the Root Galice file containing Geometry, Kine and Hits
TFile *file = (TFile*)gROOT->GetListOfFiles()->FindObject("galice.root");