// Author: Markus Oldenburg, CERN
//-------------------------------------------------------------------------
+#include <TLorentzVector.h>
#include "AliAODCaloCluster.h"
ClassImp(AliAODCaloCluster)
fDistToBadChannel(-999.),
fDispersion(-1),
fM20(0.),
- fM01(0.),
fM02(0.),
- fM11(0.),
fEmcCpvDistance(-999.),
- fNExMax(0),
+ fNExMax(0),
+ fTOF(0.),
fTracksMatched(),
fNCells(0),
- fCellsAbsId(),
- fCellsAmpFraction()
+ fCellsAbsId(0x0),
+ fCellsAmpFraction(0x0)
{
// default constructor
Int_t *label,
Double_t energy,
Double_t x[3],
- Double_t pid[9],
+ Double_t pid[13],
Char_t ttype,
UInt_t selectInfo) :
AliAODCluster(id, nLabel, label, energy, x, pid, ttype, selectInfo),
fDistToBadChannel(-999.),
fDispersion(-1),
fM20(0.),
- fM01(0.),
fM02(0.),
- fM11(0.),
fEmcCpvDistance(-999.),
fNExMax(0),
+ fTOF(0.),
fTracksMatched(),
fNCells(0),
- fCellsAbsId(),
- fCellsAmpFraction()
+ fCellsAbsId(0x0),
+ fCellsAmpFraction(0x0)
{
// constructor
Int_t *label,
Float_t energy,
Float_t x[3],
- Float_t pid[9],
+ Float_t pid[13],
Char_t ttype,
UInt_t selectInfo) :
AliAODCluster(id, nLabel, label, energy, x, pid, ttype, selectInfo),
fDistToBadChannel(-999.),
fDispersion(-1),
fM20(0.),
- fM01(0.),
fM02(0.),
- fM11(0.),
fEmcCpvDistance(-999.),
fNExMax(0),
+ fTOF(0.),
fTracksMatched(),
fNCells(0),
- fCellsAbsId(),
- fCellsAmpFraction()
+ fCellsAbsId(0x0),
+ fCellsAmpFraction(0x0)
{
// constructor
}
fDistToBadChannel(clus.fDistToBadChannel),
fDispersion(clus.fDispersion),
fM20(clus.fM20),
- fM01(clus.fM01),
fM02(clus.fM02),
- fM11(clus.fM11),
fEmcCpvDistance(clus.fEmcCpvDistance),
fNExMax(clus.fNExMax),
+ fTOF(clus.fTOF),
fTracksMatched(clus.fTracksMatched),
fNCells(clus.fNCells),
- fCellsAbsId(),
- fCellsAmpFraction()
+ fCellsAbsId(0x0),
+ fCellsAmpFraction(0x0)
{
// Copy constructor
fDistToBadChannel = clus.fDistToBadChannel;
fDispersion = clus.fDispersion;
fM20 = clus.fM20;
- fM01 = clus.fM01;
fM02 = clus.fM02;
- fM11 = clus.fM11;
fEmcCpvDistance = clus.fEmcCpvDistance;
fNExMax = clus.fNExMax;
+ fTOF = clus.fTOF;
fTracksMatched = clus.fTracksMatched;
fNCells= clus. fNCells;
+ // delete anyway
+ if(fCellsAbsId)delete [] fCellsAbsId;
+ if(fCellsAmpFraction)delete [] fCellsAmpFraction;
+
if (clus.fNCells > 0) {
if(clus.fCellsAbsId){
}
return kFALSE;
}
+
+//_______________________________________________________________________
+void AliAODCaloCluster::GetMomentum(TLorentzVector& p, Double_t *vertex ) {
+ // Returns TLorentzVector with momentum of the cluster. Only valid for clusters
+ // identified as photons or pi0 (overlapped gamma) produced on the vertex
+ //Vertex can be recovered with esd pointer doing:
+ //" Double_t vertex[3] ; esd->GetVertex()->GetXYZ(vertex) ; "
+
+ Double32_t energy = E();
+ Float_t pos[3];
+ GetPosition(pos);
+
+ if(vertex){//calculate direction from vertex
+ pos[0]-=vertex[0];
+ pos[1]-=vertex[1];
+ pos[2]-=vertex[2];
+ }
+
+ Double_t r = TMath::Sqrt(pos[0]*pos[0]+
+ pos[1]*pos[1]+
+ pos[2]*pos[2] ) ;
+
+ p.SetPxPyPzE( energy*pos[0]/r, energy*pos[1]/r, energy*pos[2]/r, energy) ;
+
+}
+
+
+void AliAODCaloCluster::SetCellsAbsId(UShort_t *array)
+{
+ // Set the array of cell absId numbers
+ if (fNCells) {
+ if(!fCellsAbsId)fCellsAbsId = new UShort_t[fNCells];
+ for (Int_t i = 0; i < fNCells; i++) fCellsAbsId[i] = array[i];
+ }
+}
+
+void AliAODCaloCluster::SetCellsAmplitudeFraction(Double32_t *array)
+{
+ // Set the array of cell amplitude fraction
+ if (fNCells) {
+ if(!fCellsAmpFraction)fCellsAmpFraction = new Double32_t[fNCells];
+ for (Int_t i = 0; i < fNCells; i++) fCellsAmpFraction[i] = array[i];
+ }
+}