#include <TLorentzVector.h>
#include "AliESDCaloCluster.h"
ClassImp(AliESDCaloCluster)
AliESDCaloCluster::AliESDCaloCluster() :
AliVCluster(),
fTracksMatched(0x0),
fLabels(0x0),
fNCells(0),
fCellsAbsId(0x0),
fCellsAmpFraction(0x0),
fEnergy(0),
fDispersion(0),
fChi2(0),
fM20(0),
fM02(0),
fEmcCpvDistance(1024),
fTrackDx(1024),fTrackDz(1024),
fDistToBadChannel(1024),
fID(0),
fNExMax(0),
fClusterType(kUndef),
fTOF(0.),
fMCEnergyFraction(0.),
fCoreEnergy(0.)
{
fGlobalPos[0] = fGlobalPos[1] = fGlobalPos[2] = 0.;
for(Int_t i=0; i<AliPID::kSPECIESCN; i++) fPID[i] = 0.;
}
AliESDCaloCluster::AliESDCaloCluster(const AliESDCaloCluster& clus) :
AliVCluster(clus),
fTracksMatched(clus.fTracksMatched?new TArrayI(*clus.fTracksMatched):0x0),
fLabels(clus.fLabels?new TArrayI(*clus.fLabels):0x0),
fNCells(clus.fNCells),
fCellsAbsId(),
fCellsAmpFraction(),
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),
fClusterType(clus.fClusterType),
fTOF(clus.fTOF),
fMCEnergyFraction(clus.fMCEnergyFraction),
fCoreEnergy(clus.fCoreEnergy)
{
fGlobalPos[0] = clus.fGlobalPos[0];
fGlobalPos[1] = clus.fGlobalPos[1];
fGlobalPos[2] = clus.fGlobalPos[2];
for(Int_t i=0; i<AliPID::kSPECIESCN; i++) fPID[i] = clus.fPID[i];
if (clus.fNCells > 0) {
if(clus.fCellsAbsId){
fCellsAbsId = new UShort_t[clus.fNCells];
for (Int_t i=0; i<clus.fNCells; i++)
fCellsAbsId[i]=clus.fCellsAbsId[i];
}
if(clus.fCellsAmpFraction){
fCellsAmpFraction = new Double32_t[clus.fNCells];
for (Int_t i=0; i<clus.fNCells; i++)
fCellsAmpFraction[i]=clus.fCellsAmpFraction[i];
}
}
}
AliESDCaloCluster &AliESDCaloCluster::operator=(const AliESDCaloCluster& source)
{
if(&source == this) return *this;
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::kSPECIESCN; i++) fPID[i] = source.fPID[i];
fID = source.fID;
fNCells= source.fNCells;
if (source.fNCells > 0) {
if(source.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++){
fCellsAbsId[i]=source.fCellsAbsId[i];
}
}
if(source.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++)
fCellsAmpFraction[i]=source.fCellsAmpFraction[i];
}
}
fNExMax = source.fNExMax;
fClusterType = source.fClusterType;
fTOF = source.fTOF;
if(source.fTracksMatched){
if(fTracksMatched){
*fTracksMatched = *source.fTracksMatched;
}
else fTracksMatched = new TArrayI(*source.fTracksMatched);
}
else{
if(fTracksMatched)delete fTracksMatched;
fTracksMatched = 0;
}
if(source.fLabels){
if(fLabels){
*fLabels = *source.fLabels;
}
else fLabels = new TArrayI(*source.fLabels);
}
else{
if(fLabels)delete fLabels;
fLabels = 0;
}
fMCEnergyFraction = source.fMCEnergyFraction;
fCoreEnergy = source.fCoreEnergy;
return *this;
}
void AliESDCaloCluster::Copy(TObject &obj) const {
if(this==&obj)return;
AliESDCaloCluster *robj = dynamic_cast<AliESDCaloCluster*>(&obj);
if(!robj)return;
*robj = *this;
}
AliESDCaloCluster::~AliESDCaloCluster(){
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*){
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) {
Int_t n = AliPID::kSPECIESCN;
Float_t uniform = 1./(Float_t)n;
Float_t sum = 0;
for (Int_t i=0; i<n; i++)
if (p[i]>=0) {
sum+=p[i];
fPID[i] = p[i];
}
else {
fPID[i] = 0;
}
if(sum>0)
for (Int_t i=0; i<n; i++) fPID[i] /= sum;
else
for (Int_t i=0; i<n; i++) fPID[i] = uniform;
}
void AliESDCaloCluster::GetMomentum(TLorentzVector& p, Double_t *vertex ) const {
Double32_t pos[3]={ fGlobalPos[0], fGlobalPos[1], fGlobalPos[2]};
if(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( fEnergy*pos[0]/r, fEnergy*pos[1]/r, fEnergy*pos[2]/r, fEnergy) ;
}
void AliESDCaloCluster::SetCellsAbsId(UShort_t *array)
{
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)
{
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)
{
if (x) {
fGlobalPos[0] = x[0];
fGlobalPos[1] = x[1];
fGlobalPos[2] = x[2];
} else {
fGlobalPos[0] = -999.;
fGlobalPos[1] = -999.;
fGlobalPos[2] = -999.;
}
}
AliESDCaloCluster.cxx:100 AliESDCaloCluster.cxx:101 AliESDCaloCluster.cxx:102 AliESDCaloCluster.cxx:103 AliESDCaloCluster.cxx:104 AliESDCaloCluster.cxx:105 AliESDCaloCluster.cxx:106 AliESDCaloCluster.cxx:107 AliESDCaloCluster.cxx:108 AliESDCaloCluster.cxx:109 AliESDCaloCluster.cxx:110 AliESDCaloCluster.cxx:111 AliESDCaloCluster.cxx:112 AliESDCaloCluster.cxx:113 AliESDCaloCluster.cxx:114 AliESDCaloCluster.cxx:115 AliESDCaloCluster.cxx:116 AliESDCaloCluster.cxx:117 AliESDCaloCluster.cxx:118 AliESDCaloCluster.cxx:119 AliESDCaloCluster.cxx:120 AliESDCaloCluster.cxx:121 AliESDCaloCluster.cxx:122 AliESDCaloCluster.cxx:123 AliESDCaloCluster.cxx:124 AliESDCaloCluster.cxx:125 AliESDCaloCluster.cxx:126 AliESDCaloCluster.cxx:127 AliESDCaloCluster.cxx:128 AliESDCaloCluster.cxx:129 AliESDCaloCluster.cxx:130 AliESDCaloCluster.cxx:131 AliESDCaloCluster.cxx:132 AliESDCaloCluster.cxx:133 AliESDCaloCluster.cxx:134 AliESDCaloCluster.cxx:135 AliESDCaloCluster.cxx:136 AliESDCaloCluster.cxx:137 AliESDCaloCluster.cxx:138 AliESDCaloCluster.cxx:139 AliESDCaloCluster.cxx:140 AliESDCaloCluster.cxx:141 AliESDCaloCluster.cxx:142 AliESDCaloCluster.cxx:143 AliESDCaloCluster.cxx:144 AliESDCaloCluster.cxx:145 AliESDCaloCluster.cxx:146 AliESDCaloCluster.cxx:147 AliESDCaloCluster.cxx:148 AliESDCaloCluster.cxx:149 AliESDCaloCluster.cxx:150 AliESDCaloCluster.cxx:151 AliESDCaloCluster.cxx:152 AliESDCaloCluster.cxx:153 AliESDCaloCluster.cxx:154 AliESDCaloCluster.cxx:155 AliESDCaloCluster.cxx:156 AliESDCaloCluster.cxx:157 AliESDCaloCluster.cxx:158 AliESDCaloCluster.cxx:159 AliESDCaloCluster.cxx:160 AliESDCaloCluster.cxx:161 AliESDCaloCluster.cxx:162 AliESDCaloCluster.cxx:163 AliESDCaloCluster.cxx:164 AliESDCaloCluster.cxx:165 AliESDCaloCluster.cxx:166 AliESDCaloCluster.cxx:167 AliESDCaloCluster.cxx:168 AliESDCaloCluster.cxx:169 AliESDCaloCluster.cxx:170 AliESDCaloCluster.cxx:171 AliESDCaloCluster.cxx:172 AliESDCaloCluster.cxx:173 AliESDCaloCluster.cxx:174 AliESDCaloCluster.cxx:175 AliESDCaloCluster.cxx:176 AliESDCaloCluster.cxx:177 AliESDCaloCluster.cxx:178 AliESDCaloCluster.cxx:179 AliESDCaloCluster.cxx:180 AliESDCaloCluster.cxx:181 AliESDCaloCluster.cxx:182 AliESDCaloCluster.cxx:183 AliESDCaloCluster.cxx:184 AliESDCaloCluster.cxx:185 AliESDCaloCluster.cxx:186 AliESDCaloCluster.cxx:187 AliESDCaloCluster.cxx:188 AliESDCaloCluster.cxx:189 AliESDCaloCluster.cxx:190 AliESDCaloCluster.cxx:191 AliESDCaloCluster.cxx:192 AliESDCaloCluster.cxx:193 AliESDCaloCluster.cxx:194 AliESDCaloCluster.cxx:195 AliESDCaloCluster.cxx:196 AliESDCaloCluster.cxx:197 AliESDCaloCluster.cxx:198 AliESDCaloCluster.cxx:199 AliESDCaloCluster.cxx:200 AliESDCaloCluster.cxx:201 AliESDCaloCluster.cxx:202 AliESDCaloCluster.cxx:203 AliESDCaloCluster.cxx:204 AliESDCaloCluster.cxx:205 AliESDCaloCluster.cxx:206 AliESDCaloCluster.cxx:207 AliESDCaloCluster.cxx:208 AliESDCaloCluster.cxx:209 AliESDCaloCluster.cxx:210 AliESDCaloCluster.cxx:211 AliESDCaloCluster.cxx:212 AliESDCaloCluster.cxx:213 AliESDCaloCluster.cxx:214 AliESDCaloCluster.cxx:215 AliESDCaloCluster.cxx:216 AliESDCaloCluster.cxx:217 AliESDCaloCluster.cxx:218 AliESDCaloCluster.cxx:219 AliESDCaloCluster.cxx:220 AliESDCaloCluster.cxx:221 AliESDCaloCluster.cxx:222 AliESDCaloCluster.cxx:223 AliESDCaloCluster.cxx:224 AliESDCaloCluster.cxx:225 AliESDCaloCluster.cxx:226 AliESDCaloCluster.cxx:227 AliESDCaloCluster.cxx:228 AliESDCaloCluster.cxx:229 AliESDCaloCluster.cxx:230 AliESDCaloCluster.cxx:231 AliESDCaloCluster.cxx:232 AliESDCaloCluster.cxx:233 AliESDCaloCluster.cxx:234 AliESDCaloCluster.cxx:235 AliESDCaloCluster.cxx:236 AliESDCaloCluster.cxx:237 AliESDCaloCluster.cxx:238 AliESDCaloCluster.cxx:239 AliESDCaloCluster.cxx:240 AliESDCaloCluster.cxx:241 AliESDCaloCluster.cxx:242 AliESDCaloCluster.cxx:243 AliESDCaloCluster.cxx:244 AliESDCaloCluster.cxx:245 AliESDCaloCluster.cxx:246 AliESDCaloCluster.cxx:247 AliESDCaloCluster.cxx:248 AliESDCaloCluster.cxx:249 AliESDCaloCluster.cxx:250 AliESDCaloCluster.cxx:251 AliESDCaloCluster.cxx:252 AliESDCaloCluster.cxx:253 AliESDCaloCluster.cxx:254 AliESDCaloCluster.cxx:255 AliESDCaloCluster.cxx:256 AliESDCaloCluster.cxx:257 AliESDCaloCluster.cxx:258 AliESDCaloCluster.cxx:259 AliESDCaloCluster.cxx:260 AliESDCaloCluster.cxx:261 AliESDCaloCluster.cxx:262 AliESDCaloCluster.cxx:263 AliESDCaloCluster.cxx:264 AliESDCaloCluster.cxx:265 AliESDCaloCluster.cxx:266 AliESDCaloCluster.cxx:267 AliESDCaloCluster.cxx:268 AliESDCaloCluster.cxx:269 AliESDCaloCluster.cxx:270 AliESDCaloCluster.cxx:271 AliESDCaloCluster.cxx:272 AliESDCaloCluster.cxx:273 AliESDCaloCluster.cxx:274 AliESDCaloCluster.cxx:275 AliESDCaloCluster.cxx:276 AliESDCaloCluster.cxx:277 AliESDCaloCluster.cxx:278 AliESDCaloCluster.cxx:279 AliESDCaloCluster.cxx:280 AliESDCaloCluster.cxx:281 AliESDCaloCluster.cxx:282 AliESDCaloCluster.cxx:283 AliESDCaloCluster.cxx:284 AliESDCaloCluster.cxx:285 AliESDCaloCluster.cxx:286 AliESDCaloCluster.cxx:287 AliESDCaloCluster.cxx:288 AliESDCaloCluster.cxx:289 AliESDCaloCluster.cxx:290 AliESDCaloCluster.cxx:291 AliESDCaloCluster.cxx:292 AliESDCaloCluster.cxx:293 AliESDCaloCluster.cxx:294 AliESDCaloCluster.cxx:295 AliESDCaloCluster.cxx:296 AliESDCaloCluster.cxx:297 AliESDCaloCluster.cxx:298 AliESDCaloCluster.cxx:299 AliESDCaloCluster.cxx:300 AliESDCaloCluster.cxx:301 AliESDCaloCluster.cxx:302 AliESDCaloCluster.cxx:303 AliESDCaloCluster.cxx:304 AliESDCaloCluster.cxx:305 AliESDCaloCluster.cxx:306 AliESDCaloCluster.cxx:307 AliESDCaloCluster.cxx:308 AliESDCaloCluster.cxx:309 AliESDCaloCluster.cxx:310 AliESDCaloCluster.cxx:311 AliESDCaloCluster.cxx:312 AliESDCaloCluster.cxx:313 AliESDCaloCluster.cxx:314 AliESDCaloCluster.cxx:315 AliESDCaloCluster.cxx:316 AliESDCaloCluster.cxx:317 AliESDCaloCluster.cxx:318 AliESDCaloCluster.cxx:319 AliESDCaloCluster.cxx:320 AliESDCaloCluster.cxx:321