//_______________________________________________________________________
AliESDCaloCluster::AliESDCaloCluster() :
- TObject(),
+ AliVCluster(),
fTracksMatched(0x0),
fLabels(0x0),
fNCells(0),
fCellsAbsId(0x0),
fCellsAmpFraction(0x0),
- fDigitAmplitude(0x0),//not in use
- fDigitTime(0x0),//not in use
- fDigitIndex(0x0),//not in use
fEnergy(0),
fDispersion(0),
fChi2(0),
fM20(0),
fM02(0),
fEmcCpvDistance(1024),
+ fTrackDx(1024),fTrackDz(1024),
fDistToBadChannel(1024),
fID(0),
fNExMax(0),
//_______________________________________________________________________
AliESDCaloCluster::AliESDCaloCluster(const AliESDCaloCluster& clus) :
- TObject(clus),
+ AliVCluster(clus),
fTracksMatched(clus.fTracksMatched?new TArrayI(*clus.fTracksMatched):0x0),
fLabels(clus.fLabels?new TArrayI(*clus.fLabels):0x0),
fNCells(clus.fNCells),
fCellsAbsId(),
fCellsAmpFraction(),
- fDigitAmplitude(clus.fDigitAmplitude?new TArrayS(*clus.fDigitAmplitude):0x0),//not in use
- fDigitTime(clus.fDigitTime?new TArrayS(*clus.fDigitTime):0x0),//not in use
- fDigitIndex(clus.fDigitIndex?new TArrayS(*clus.fDigitIndex):0x0),//not in use
fEnergy(clus.fEnergy),
fDispersion(clus.fDispersion),
fChi2(clus.fChi2),
fM20(clus.fM20),
fM02(clus.fM02),
fEmcCpvDistance(clus.fEmcCpvDistance),
+ fTrackDx(clus.fTrackDx),
+ fTrackDz(clus.fTrackDz),
fDistToBadChannel(clus.fDistToBadChannel),
fID(clus.fID),
fNExMax(clus.fNExMax),
// assignment operator
if(&source == this) return *this;
- TObject::operator=(source);
-
+ AliVCluster::operator=(source);
fGlobalPos[0] = source.fGlobalPos[0];
fGlobalPos[1] = source.fGlobalPos[1];
fGlobalPos[2] = source.fGlobalPos[2];
-
fEnergy = source.fEnergy;
fDispersion = source.fDispersion;
fChi2 = source.fChi2;
fM20 = source.fM20;
fM02 = source.fM02;
fEmcCpvDistance = source.fEmcCpvDistance;
+ fTrackDx= source.fTrackDx ;
+ fTrackDz= source.fTrackDz ;
fDistToBadChannel = source.fDistToBadChannel ;
for(Int_t i=0; i<AliPID::kSPECIESN; i++) fPID[i] = source.fPID[i];
fID = source.fID;
if (source.fNCells > 0) {
if(source.fCellsAbsId){
- if(fNCells != source.fNCells){
- delete [] fCellsAbsId;
+ if(fNCells != source.fNCells||!fCellsAbsId){
+ if(fCellsAbsId)delete [] fCellsAbsId;
fCellsAbsId = new UShort_t[source.fNCells];
}
- for (Int_t i=0; i<source.fNCells; i++)
+ for (Int_t i=0; i<source.fNCells; i++){
fCellsAbsId[i]=source.fCellsAbsId[i];
+ }
}
if(source.fCellsAmpFraction){
- if(fNCells != source.fNCells){
- delete [] fCellsAmpFraction;
+ if(fNCells != source.fNCells||!fCellsAmpFraction){
+ if(fCellsAmpFraction) delete [] fCellsAmpFraction;
fCellsAmpFraction = new Double32_t[source.fNCells];
}
for (Int_t i=0; i<source.fNCells; i++)
//not in use
if(source.fTracksMatched){
// assign or copy construct
- if(fTracksMatched) *fTracksMatched = *source.fTracksMatched;
+ if(fTracksMatched){
+ *fTracksMatched = *source.fTracksMatched;
+ }
else fTracksMatched = new TArrayI(*source.fTracksMatched);
}
else{
- delete fTracksMatched;
+ if(fTracksMatched)delete fTracksMatched;
fTracksMatched = 0;
}
if(source.fLabels){
// assign or copy construct
- if(fLabels) *fLabels = *source.fLabels;
+ if(fLabels){
+ *fLabels = *source.fLabels;
+ }
else fLabels = new TArrayI(*source.fLabels);
}
else{
- delete fLabels;
+ if(fLabels)delete fLabels;
fLabels = 0;
}
-
- if(source.fDigitAmplitude){
- // assign or copy construct
- if(fDigitAmplitude) *fDigitAmplitude = *source.fDigitAmplitude;
- else fDigitAmplitude = new TArrayS(*source.fDigitAmplitude);
- }
- else{
- delete fDigitAmplitude;
- fDigitAmplitude = 0;
- }
-
-
-
- if(source.fDigitTime){
- // assign or copy construct
- if(fDigitTime) *fDigitTime = *source.fDigitTime;
- else fDigitTime = new TArrayS(*source.fDigitTime);
- }
- else{
- delete fDigitTime;
- fDigitTime = 0;
- }
-
-
-
- if(source.fDigitIndex){
- // assign or copy construct
- if(fDigitIndex) *fDigitIndex = *source.fDigitIndex;
- else fDigitIndex = new TArrayS(*source.fDigitIndex);
- }
- else{
- delete fDigitIndex;
- fDigitIndex = 0;
- }
return *this;
}
+//_______________________________________________________________________
void AliESDCaloCluster::Copy(TObject &obj) const {
// this overwrites the virtual TOBject::Copy()
//
// This is destructor according Coding Conventions
//
- delete fTracksMatched;
- delete fLabels;
- delete fDigitAmplitude; //not in use
- delete fDigitTime; //not in use
- delete fDigitIndex; //not in use
- if(fCellsAmpFraction) delete[] fCellsAmpFraction; fCellsAmpFraction=0;
- if(fCellsAbsId) delete[] fCellsAbsId; fCellsAbsId = 0;
+ if(fTracksMatched)delete fTracksMatched;fTracksMatched = 0;
+ if(fLabels) delete fLabels; fLabels = 0;
+ if(fCellsAmpFraction){ delete[] fCellsAmpFraction; fCellsAmpFraction=0;}
+ if(fCellsAbsId){ delete[] fCellsAbsId; fCellsAbsId = 0;}
+}
+
+//_______________________________________________________________________
+void AliESDCaloCluster::Clear(const Option_t*){
+ //
+ // This is destructor according Coding Conventions
+ //
+ if(fTracksMatched)delete fTracksMatched;fTracksMatched = 0;
+ if(fLabels) delete fLabels; fLabels = 0;
+ if(fCellsAmpFraction){ delete[] fCellsAmpFraction; fCellsAmpFraction=0;}
+ if(fCellsAbsId){ delete[] fCellsAbsId; fCellsAbsId = 0;}
}
+
//_______________________________________________________________________
-void AliESDCaloCluster::SetPid(const Float_t *p) {
+void AliESDCaloCluster::SetPID(const Float_t *p) {
// Sets the probability of each particle type
// Copied from AliESDtrack SetPIDValues
// This function copies "n" PID weights from "scr" to "dest"
//Vertex can be recovered with esd pointer doing:
//" Double_t vertex[3] ; esd->GetVertex()->GetXYZ(vertex) ; "
+ Double32_t pos[3]={ fGlobalPos[0], fGlobalPos[1], fGlobalPos[2]};
if(vertex){//calculate direction from vertex
- fGlobalPos[0]-=vertex[0];
- fGlobalPos[1]-=vertex[1];
- fGlobalPos[2]-=vertex[2];
+ pos[0]-=vertex[0];
+ pos[1]-=vertex[1];
+ pos[2]-=vertex[2];
}
- Double_t r = TMath::Sqrt(fGlobalPos[0]*fGlobalPos[0]+
- fGlobalPos[1]*fGlobalPos[1]+
- fGlobalPos[2]*fGlobalPos[2] ) ;
-
- p.SetPxPyPzE( fEnergy*fGlobalPos[0]/r, fEnergy*fGlobalPos[1]/r, fEnergy*fGlobalPos[2]/r, fEnergy) ;
+ Double_t r = TMath::Sqrt(pos[0]*pos[0]+pos[1]*pos[1]+pos[2]*pos[2] ) ;
+ p.SetPxPyPzE( fEnergy*pos[0]/r, fEnergy*pos[1]/r, fEnergy*pos[2]/r, fEnergy) ;
}
//_______________________________________________________________________
void AliESDCaloCluster::SetCellsAbsId(UShort_t *array)
{
// Set the array of cell absId numbers
- if (fNCells) {
- fCellsAbsId = new UShort_t[fNCells];
- for (Int_t i = 0; i < fNCells; i++) fCellsAbsId[i] = array[i];
- }
+ if (fNCells) {
+ fCellsAbsId = new UShort_t[fNCells];
+ for (Int_t i = 0; i < fNCells; i++) fCellsAbsId[i] = array[i];
+ }
}
//_______________________________________________________________________
void AliESDCaloCluster::SetCellsAmplitudeFraction(Double32_t *array)
{
- // Set the array of cell amplitude fraction
- if (fNCells) {
- fCellsAmpFraction = new Double32_t[fNCells];
- for (Int_t i = 0; i < fNCells; i++) fCellsAmpFraction[i] = array[i];
- }
+ // Set the array of cell amplitude fraction
+ if (fNCells) {
+ fCellsAmpFraction = new Double32_t[fNCells];
+ for (Int_t i = 0; i < fNCells; i++) fCellsAmpFraction[i] = array[i];
+ }
}
+
+//______________________________________________________________________________
+void AliESDCaloCluster::SetPosition(Float_t *x)
+{
+ // set the position
+
+ if (x) {
+ fGlobalPos[0] = x[0];
+ fGlobalPos[1] = x[1];
+ fGlobalPos[2] = x[2];
+ } else {
+
+ fGlobalPos[0] = -999.;
+ fGlobalPos[1] = -999.;
+ fGlobalPos[2] = -999.;
+ }
+}
+
+