///////////////////////////////////////////////////////////////////////////
#include "AliCalcluster.h"
+#include "Riostream.h"
ClassImp(AliCalcluster) // Class implementation to enable ROOT I/O
-AliCalcluster::AliCalcluster()
+AliCalcluster::AliCalcluster() : AliSignal()
{
-// Default constructer, all data is set to 0
- fCenter=0;
+// Default constructor, all data is set to 0
+ fRow=0;
+ fCol=0;
fNmods=0;
fRowdisp=0.;
fColdisp=0.;
fNvetos=0;
fVetos=0;
- SetName("AliCalcluster [sig, sig11, sig33, sig55, ...]");
+ SetName("AliCalcluster [sig, sig11, sig33, sig55,...]");
}
///////////////////////////////////////////////////////////////////////////
AliCalcluster::~AliCalcluster()
}
}
///////////////////////////////////////////////////////////////////////////
-AliCalcluster::AliCalcluster(AliCalmodule& m)
+AliCalcluster::AliCalcluster(AliCalcluster& c) : AliSignal(c)
+{
+// Copy constructor
+ fRow=c.fRow;
+ fCol=c.fCol;
+ fNmods=c.fNmods;
+ fRowdisp=c.fRowdisp;
+ fColdisp=c.fColdisp;
+ fNvetos=c.fNvetos;
+
+ fVetos=new TObjArray();
+ fVetos->SetOwner();
+
+ for (Int_t i=1; i<=fNvetos; i++)
+ {
+ AliSignal* sx=c.GetVetoSignal(i);
+ fVetos->Add(new AliSignal(*sx));
+ }
+}
+///////////////////////////////////////////////////////////////////////////
+AliCalcluster::AliCalcluster(AliCalmodule& m) : AliSignal()
{
// Cluster constructor with module m as center.
// Module data is only entered for a module which contains a signal,
if (sig>0. && m.GetDeadValue()==0)
{
- fCenter=&m;
+ fRow=m.GetRow();
+ fCol=m.GetColumn();
r=m.GetPosition();
SetPosition(r);
SetSignal(sig);
}
else
{
- fCenter=0;
+ fRow=0;
+ fCol=0;
SetPosition(r);
fNmods=0;
fRowdisp=0.;
fNvetos=0;
fVetos=0;
}
- SetName("AliCalcluster [sig, sig11, sig33, sig55, ...]");
+ SetName("AliCalcluster [sig, sig11, sig33, sig55,...]");
}
///////////////////////////////////////////////////////////////////////////
Int_t AliCalcluster::GetRow()
{
// Provide the row number of the cluster center
- if (fCenter)
- {
- return fCenter->GetRow();
- }
- else
- {
- return 0;
- }
+ return fRow;
}
///////////////////////////////////////////////////////////////////////////
Int_t AliCalcluster::GetColumn()
{
// Provide the column number of the cluster center
- if (fCenter)
- {
- return fCenter->GetColumn();
- }
- else
- {
- return 0;
- }
+ return fCol;
}
///////////////////////////////////////////////////////////////////////////
Int_t AliCalcluster::GetNmodules()
if (m.GetClusteredSignal()>0. && m.GetDeadValue()==0)
{
- fCenter=&m;
+ fRow=m.GetRow();
+ fCol=m.GetColumn();
r=m.GetPosition();
SetPosition(r);
SetSignal(m.GetSignal());
}
else
{
- fCenter=0;
+ fRow=0;
+ fCol=0;
SetPosition(r);
fNmods=0;
fRowdisp=0.;
}
Int_t nvalues=s.GetNvalues();
- AliSignal* sx=new AliSignal(nvalues+3); // Additional value added
+ AliSignal* sx=new AliSignal(s); // Additional values will be added
TString name=s.GetName();
name.Append(" + additional chi2, ndf and CL values");
sx->SetName(name);
Double_t vecc[3],vecv[3];
- if (!extr)
- {
- sx->SetPosition((Ali3Vector&)s);
- }
- else
+ if (extr)
{
// Extrapolate the veto hit position
Double_t scale=1;
sx->SetPosition(r);
}
- Double_t sig,err;
- for (Int_t i=1; i<=nvalues; i++)
- {
- sig=s.GetSignal(i);
- err=s.GetSignalError(i);
- sx->SetSignal(sig,i);
- sx->SetSignalError(err,i);
- }
-
// Calculate the confidence level of association
GetPosition(vecc,"car");
sx->GetPosition(vecv,"car");