* provided "as is" without express or implied warranty. *
**************************************************************************/
-/*
- $Log$
- Revision 1.6 2000/10/02 21:28:12 fca
- Removal of useless dependecies via forward declarations
-
- Revision 1.5 2000/10/02 15:45:58 jbarbosa
- Fixed forward declarations.
-
- Revision 1.4 2000/06/12 19:01:29 morsch
- Clean-up bug in Centered() corrected.
-
- Revision 1.3 2000/06/12 15:49:44 jbarbosa
- Removed verbose output.
-
- Revision 1.2 2000/06/12 15:18:19 jbarbosa
- Cleaned up version.
-
- Revision 1.1 2000/04/19 13:01:48 morsch
- A cluster finder and hit reconstruction class for RICH (adapted from MUON).
- Cluster Finders for MUON and RICH should derive from the same class in the
- future (JB, AM).
-
-*/
-
+/* $Id$ */
#include "AliRICHClusterFinder.h"
#include "AliRun.h"
#include "AliRICH.h"
-#include "AliRICHHit.h"
#include "AliRICHHitMapA1.h"
-#include "AliRICHCerenkov.h"
-#include "AliRICHPadHit.h"
+#include "AliRICHSDigit.h"
#include "AliRICHDigit.h"
#include "AliRICHRawCluster.h"
-#include "AliRICHRecHit.h"
#include <TTree.h>
#include <TCanvas.h>
#include <TPad.h>
#include <TGraph.h>
#include <TPostScript.h>
-#include <TMinuit.h>
+#include <TMinuit.h>
//----------------------------------------------------------
static AliSegmentation* gSegmentation;
}
AliRICHClusterFinder::AliRICHClusterFinder(const AliRICHClusterFinder& ClusterFinder)
+ :TObject(ClusterFinder)
{
// Copy Constructor
}
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);
Float_t x[5];
Float_t y[5];
Int_t n, i;
- TF1 func;
if (fSegmentation) {
+ TF1 *func;
fSegmentation->GiveTestPoints(n, x, y);
for (i=0; i<n; i++) {
+ func = 0;
Float_t xtest=x[i];
Float_t ytest=y[i];
SinoidalFit(xtest, ytest, func);
- fSegmentation->SetCorrFunc(i, new TF1(func));
+ if (func) fSegmentation->SetCorrFunc(i, new TF1(*func));
}
}
}
void AliRICHClusterFinder::
-SinoidalFit(Float_t x, Float_t y, TF1 &func)
+SinoidalFit(Float_t x, Float_t y, TF1 *func)
{
// Sinoidal fit
Double_t sinoid(Double_t *x, Double_t *par);
new TF1("sinoidf",sinoid,0.5,0.5,5);
graphyr->Fit("sinoidf","Q");
- func = *((TF1*)((graphyr->GetListOfFunctions())->At(0)));
+ func = (TF1*)graphyr->GetListOfFunctions()->At(0);
/*
TCanvas *c1=new TCanvas(canvasname,canvasname,400,10,600,700);
//
// Minimisation function
-void fcn(Int_t &npar, Double_t *gin, Double_t &f, Double_t *par, Int_t iflag)
+void fcn(Int_t &npar, Double_t */*gin*/, Double_t &f, Double_t *par, Int_t /*iflag*/)
{
+ npar=1;
Int_t i;
Float_t delta;
Float_t chisq=0;
fNdigits = fDigits->GetEntriesFast();
}
-AliRICHClusterFinder& AliRICHClusterFinder::operator=(const AliRICHClusterFinder& rhs)
+AliRICHClusterFinder& AliRICHClusterFinder::operator=(const AliRICHClusterFinder& /*rhs*/)
{
// Assignment operator
return *this;
}
-
-//______________________________________________________________________________
-void AliRICHClusterFinder::Streamer(TBuffer &R__b)
-{
- // Stream an object of class AliRICHClusterFinder.
-
- if (R__b.IsReading()) {
- Version_t R__v = R__b.ReadVersion(); if (R__v) { }
- TObject::Streamer(R__b);
- R__b >> fSegmentation;
- R__b >> fResponse;
- R__b >> fRawClusters;
- R__b >> fHitMap;
- R__b >> fCogCorr;
- R__b >> fDigits;
- R__b >> fNdigits;
- R__b >> fChamber;
- R__b >> fNRawClusters;
- R__b >> fNperMax;
- R__b >> fDeclusterFlag;
- R__b >> fClusterSize;
- R__b >> fNPeaks;
- } else {
- R__b.WriteVersion(AliRICHClusterFinder::IsA());
- TObject::Streamer(R__b);
- R__b << fSegmentation;
- R__b << fResponse;
- R__b << fRawClusters;
- R__b << fHitMap;
- R__b << fCogCorr;
- R__b << fDigits;
- R__b << fNdigits;
- R__b << fChamber;
- R__b << fNRawClusters;
- R__b << fNperMax;
- R__b << fDeclusterFlag;
- R__b << fClusterSize;
- R__b << fNPeaks;
- }
-}