ClassImp(AliAODCluster)
//______________________________________________________________________________
-AliAODCluster::AliAODCluster() :
+AliAODCluster::AliAODCluster() :
+ AliVCluster(),
fEnergy(0),
fChi2(-999.),
fID(-999),
{
// default constructor
- SetPosition((Float_t*)NULL);
- SetPID((Float_t*)NULL);
+ SetPosition(NULL);
+ SetPID(NULL);
}
//______________________________________________________________________________
Int_t *label,
Double_t energy,
Double_t x[3],
- Double_t pid[9],
+ Double_t pid[13],
Char_t ttype,
UInt_t selectInfo) :
+ AliVCluster(),
fEnergy(energy),
fChi2(-999.),
fID(id),
fType(ttype)
{
// constructor
+ for (Int_t i = 0; i < 3; i++) fPosition[i] = 0.;
+ for (Int_t i = 0; i < 13; i++) fPID[i] = 0;
- SetPosition(x);
- SetPID(pid);
+ if(x) {for (Int_t i = 0; i < 3 ; i++) SetPositionAt(x[i] ,i);}
+ if(pid) {for (Int_t i = 0; i < 13 ; i++) SetPIDAt (pid[i],i);}
SetLabel(label, nLabel);
}
Int_t *label,
Float_t energy,
Float_t x[3],
- Float_t pid[9],
+ Float_t pid[13],
Char_t ttype,
UInt_t selectInfo) :
+ AliVCluster(),
fEnergy(energy),
fChi2(-999.),
fID(id),
fType(ttype)
{
// constructor
-
- SetPosition(x);
- SetPID(pid);
+ for (Int_t i = 0; i < 3; i++) fPosition[i] = 0.;
+ for (Int_t i = 0; i < 13; i++) fPID[i] = 0;
+
+ if(x) {for (Int_t i = 0; i < 3 ; i++) SetPositionAt(x[i] ,i);}
+ if(pid) {for (Int_t i = 0; i < 13 ; i++) SetPIDAt (pid[i],i);}
SetLabel(label, nLabel);
}
RemoveLabel();
}
+//______________________________________________________________________________
+void AliAODCluster::Clear(const Option_t*)
+{
+ // Clear
+
+ RemoveLabel();
+}
+
//______________________________________________________________________________
AliAODCluster::AliAODCluster(const AliAODCluster& clus) :
- TObject(clus),
+ AliVCluster(clus),
fEnergy(clus.fEnergy),
fChi2(clus.fChi2),
fID(clus.fID),
{
// Copy constructor
- clus.GetPosition(fPosition);
- SetPID(clus.fPID);
+ for(Int_t i = 0; i < 3 ; i++) fPosition[i] = clus.fPosition[i];
+ for(Int_t i = 0; i < 13 ; i++) fPID[i] = clus.fPID[i];
+
SetLabel(clus.fLabel, clus.fNLabel);
}
{
// Assignment operator
if(this!=&clus) {
-
- clus.GetPosition(fPosition);
- clus.GetPID(fPID);
-
+
+ for(Int_t i = 0; i < 3 ; i++) fPosition[i] = clus.fPosition[i];
+ for(Int_t i = 0; i < 13 ; i++) fPID[i] = clus.fPID[i];
+
fEnergy = clus.fEnergy;
fChi2 = clus.fChi2;
}
//______________________________________________________________________________
-template <class T> void AliAODCluster::SetPosition(const T *x)
+void AliAODCluster::SetPosition(Float_t *x)
{
// set the position
-
+
if (x) {
- fPosition[0] = x[0];
- fPosition[1] = x[1];
- fPosition[2] = x[2];
+ fPosition[0] = x[0];
+ fPosition[1] = x[1];
+ fPosition[2] = x[2];
} else {
-
fPosition[0] = -999.;
fPosition[1] = -999.;
fPosition[2] = -999.;
}
//______________________________________________________________________________
-AliAODCluster::AODCluPID_t AliAODCluster::GetMostProbablePID() const
+UShort_t AliAODCluster::GetMostProbablePID() const
{
// Returns the most probable PID array element.
- Int_t nPID = 9;
- if (fPID) {
- AODCluPID_t loc = kUnknown;
- Double_t max = 0.;
- Bool_t allTheSame = kTRUE;
-
- for (Int_t iPID = 0; iPID < nPID; iPID++) {
- if (fPID[iPID] >= max) {
- if (fPID[iPID] > max) {
- allTheSame = kFALSE;
- max = fPID[iPID];
- loc = (AODCluPID_t)iPID;
- } else {
- allTheSame = kTRUE;
- }
+ Int_t nPID = 13;
+ UShort_t unknown = AliVCluster::kUnknown;
+
+ UShort_t loc = unknown;
+ Double_t max = 0.;
+ Bool_t allTheSame = kTRUE;
+
+ for (Int_t iPID = 0; iPID < nPID; iPID++) {
+ if (fPID[iPID] >= max) {
+ if (fPID[iPID] > max) {
+ allTheSame = kFALSE;
+ max = fPID[iPID];
+ loc = (UShort_t)iPID;
+ } else {
+ allTheSame = kTRUE;
}
}
-
- return allTheSame ? kUnknown : loc;
- } else {
- return kUnknown;
}
+ return allTheSame ? unknown : loc;
}
//______________________________________________________________________________
}
//______________________________________________________________________________
-Int_t AliAODCluster::GetLabel(UInt_t i) const
+Int_t AliAODCluster::GetLabelAt(UInt_t i) const
{
if (fLabel && i < (UInt_t)fNLabel) {
return fLabel[i];
printf("Cluster type: %d\n", GetType());
printf(" energy = %f\n", E());
printf(" chi2 = %f\n", Chi2());
- printf(" PID object: %p\n", PID());
+ const Double_t *pid = GetPID();
+ printf("PID weights: photon %0.2f, pi0 %0.2f, electron %0.2f, conversion electron %0.2f\n, hadrons: pion %0.2f, kaon %0.2f, proton %0.2f , neutron %0.2f, kaon %0.2f \n",
+ pid[AliVCluster::kPhoton], pid[AliVCluster::kPi0],
+ pid[AliVCluster::kElectron], pid[AliVCluster::kEleCon],
+ pid[AliVCluster::kPion], pid[AliVCluster::kKaon], pid[AliVCluster::kProton],
+ pid[AliVCluster::kNeutron], pid[AliVCluster::kKaon0]);
}