#include <iostream>
#include <TParticle.h>
#include "AliStack.h"
#include "AliESDEvent.h"
#include "AliAODTrack.h"
#include "AliESDtrack.h"
#include "AliVCluster.h"
#include "AliAODCaloCluster.h"
#include "AliESDCaloCluster.h"
#include "AliCaloClusterInfo.h"
class TObject;
ClassImp(AliCaloClusterInfo)
AliCaloClusterInfo::AliCaloClusterInfo():
TObject(), fLorentzVector(), fModule(0), fTRUNumber(0), fNCells(0), fPIDBit(0x0),
fLabels(0), fDistToBad(0.), fM02(0.), fM20(0.), fTOF(0.)
{
}
AliCaloClusterInfo::AliCaloClusterInfo(AliVCluster* const clust, Int_t relID[4]):
TObject(), fLorentzVector(), fModule(0), fTRUNumber(0), fNCells(0), fPIDBit(0x0),
fLabels(0), fDistToBad(0.), fM02(0.), fM20(0.), fTOF(0.)
{
this->FillCaloClusterInfo(clust, relID);
}
AliCaloClusterInfo::AliCaloClusterInfo(const AliCaloClusterInfo &src):
TObject(src), fLorentzVector(src.fLorentzVector), fModule(src.fModule), fTRUNumber(src.fTRUNumber),fNCells(src.fNCells), fPIDBit(src.fPIDBit),
fLabels(src.fLabels), fDistToBad(src.fDistToBad), fM02(src.fM02), fM20(src.fM20), fTOF(src.fTOF)
{
}
AliCaloClusterInfo& AliCaloClusterInfo::operator=(const AliCaloClusterInfo &src)
{
if(&src==this) return *this;
fLorentzVector = src.fLorentzVector;
fModule = src.fModule;
fTRUNumber = src.fTRUNumber;
fNCells = src.fNCells;
fPIDBit = src.fPIDBit;
fLabels = src.fLabels;
fDistToBad = src.fDistToBad;
fM02 = src.fM02;
fM20 = src.fM20;
fTOF = src.fTOF;
return *this;
}
AliCaloClusterInfo::~AliCaloClusterInfo()
{
}
void AliCaloClusterInfo::FillCaloClusterInfo(AliVCluster* const clust, Int_t relID[4])
{
fModule = relID[0];
fTRUNumber = GetTRUNumber(relID[2], relID[3]);
fNCells = clust->GetNCells();
fDistToBad = clust->GetDistanceToBadChannel();
fM02 = clust->GetM02();
fM20 = clust->GetM20();
fTOF = clust->GetTOF();
Double_t cpv = clust->GetEmcCpvDistance();
Double_t disp = TestDisp();
if (cpv > 2.) this->SetPIDBit(BIT(0));
if (cpv > 4.) this->SetPIDBit(BIT(2));
if (disp < 2.5*2.5) this->SetPIDBit(BIT(1));
if (disp < 1.5*1.5) this->SetPIDBit(BIT(3));
return;
}
Bool_t AliCaloClusterInfo::IsInFiducialRegion(Int_t cellX, Int_t cellZ)
{
const Int_t edgeX = 2;
const Int_t edgeZ = 2;
if (cellX >edgeX && cellX<(65-edgeX) && cellZ>edgeZ && cellZ <(57-edgeZ)) return kTRUE;
return kFALSE;
}
Bool_t AliCaloClusterInfo::IsMergedClusterFromPi0(AliStack* const stack, Int_t &pi0Indx)
{
pi0Indx = -1;
if (GetNLabels()>1) {
Int_t pi0Indx1 = -1, pi0Indx2 = -2;
if (IsClusterFromPi0(stack, GetLabelAt(0), pi0Indx1) &&
IsClusterFromPi0(stack, GetLabelAt(1), pi0Indx2) && pi0Indx1 == pi0Indx2) {
pi0Indx = pi0Indx1;
return kTRUE;
} else return kFALSE;
} else return kFALSE;
}
Bool_t AliCaloClusterInfo::IsClusterFromCvtedPi0(AliStack* const stack, Bool_t &isConverted, Int_t &pi0Indx)
{
if (IsClusterFromPi0Pure(stack, GetLabel(), pi0Indx))
return kTRUE;
else {
isConverted = IsClusterFromPi0Converted(stack, GetLabel(), pi0Indx);
if (isConverted) return kTRUE;
else return kFALSE;
}
}
Bool_t AliCaloClusterInfo::IsClusterFromPi0(AliStack* const stack, Int_t label, Int_t &pi0Indx)
{
if (IsClusterFromPi0Pure(stack, label, pi0Indx))
return kTRUE;
else if (IsClusterFromPi0Converted(stack, label, pi0Indx))
return kTRUE;
else return kFALSE;
}
Bool_t AliCaloClusterInfo::IsClusterFromPi0Pure(AliStack* const stack, Int_t label, Int_t &pi0Indx)
{
if (label>-1) {
TParticle* track = stack->Particle(label);
if (track->GetPdgCode() == 22) {
pi0Indx = track->GetFirstMother();
if (pi0Indx>-1 && ((TParticle*)stack->Particle(pi0Indx))->GetPdgCode() == 111)
return kTRUE;
else return kFALSE;
}
else return kFALSE;
} else return kFALSE;
}
Bool_t AliCaloClusterInfo::IsClusterFromPi0Converted(AliStack* const stack, Int_t label, Int_t &pi0Indx)
{
if (label>-1) {
TParticle* track = stack->Particle(label);
if (TMath::Abs(track->GetPdgCode()) == 11)
if (track->GetFirstMother()>-1 && ((TParticle*)stack->Particle(track->GetFirstMother()))->GetPdgCode() == 22) {
TParticle *gamma = stack->Particle(track->GetFirstMother());
pi0Indx = gamma->GetFirstMother();
if (pi0Indx>-1 && ((TParticle*)stack->Particle(pi0Indx))->GetPdgCode() == 111) {
Int_t e1 = gamma->GetFirstDaughter();
Int_t e2 = gamma->GetLastDaughter();
if (label == (((TParticle*)stack->Particle(e1))->Pt()>((TParticle*)stack->Particle(e2))->Pt() ? e1 : e2))
return kTRUE;
else return kFALSE;
} else return kFALSE;
} else return kFALSE;
else return kFALSE;
} else return kFALSE;
}
Double_t AliCaloClusterInfo::TestDisp()
{
Double_t pt = fLorentzVector.E();
Double_t l0 = fM02;
Double_t l1 = fM20;
Double_t l0Mean = 1.53126+9.50835e+06/(1.+1.08728e+07*pt+1.73420e+06*pt*pt);
Double_t l1Mean = 1.12365+0.123770*TMath::Exp(-pt*0.246551)+5.30000e-03*pt;
Double_t l0Sigma = 6.48260e-02+7.60261e+10/(1.+1.53012e+11*pt+5.01265e+05*pt*pt)+9.00000e-03*pt;
Double_t l1Sigma = 4.44719e-04+6.99839e-01/(1.+1.22497e+00*pt+6.78604e-07*pt*pt)+9.00000e-03*pt;
Double_t c =-0.35-0.550*TMath::Exp(-0.390730*pt);
Double_t R2 = 0.5*(l1-l1Mean)*(l1-l1Mean)/l1Sigma/l1Sigma +
0.5*(l0-l0Mean)*(l0-l0Mean)/l0Sigma/l0Sigma +
0.5*c*(l1-l1Mean)*(l0-l0Mean)/l1Sigma/l0Sigma;
return R2;
}
Int_t AliCaloClusterInfo::GetTRUNumber(Int_t cellX, Int_t cellZ)
{
if (0<cellX && cellX<17) {
if (0<cellZ && cellZ<29) return 2;
else return 1;
}
if (16<cellX && cellX<33) {
if (0<cellZ && cellZ<29) return 4;
else return 3;
}
if (32<cellX && cellX<49) {
if (0<cellZ && cellZ<29) return 6;
else return 5;
}
if (48<cellX && cellX<65) {
if (0<cellZ && cellZ<29) return 8;
else return 7;
}
return -1;
}
AliCaloClusterInfo.cxx:10 AliCaloClusterInfo.cxx:11 AliCaloClusterInfo.cxx:12 AliCaloClusterInfo.cxx:13 AliCaloClusterInfo.cxx:14 AliCaloClusterInfo.cxx:15 AliCaloClusterInfo.cxx:16 AliCaloClusterInfo.cxx:17 AliCaloClusterInfo.cxx:18 AliCaloClusterInfo.cxx:19 AliCaloClusterInfo.cxx:20 AliCaloClusterInfo.cxx:21 AliCaloClusterInfo.cxx:22 AliCaloClusterInfo.cxx:23 AliCaloClusterInfo.cxx:24 AliCaloClusterInfo.cxx:25 AliCaloClusterInfo.cxx:26 AliCaloClusterInfo.cxx:27 AliCaloClusterInfo.cxx:28 AliCaloClusterInfo.cxx:29 AliCaloClusterInfo.cxx:30 AliCaloClusterInfo.cxx:31 AliCaloClusterInfo.cxx:32 AliCaloClusterInfo.cxx:33 AliCaloClusterInfo.cxx:34 AliCaloClusterInfo.cxx:35 AliCaloClusterInfo.cxx:36 AliCaloClusterInfo.cxx:37 AliCaloClusterInfo.cxx:38 AliCaloClusterInfo.cxx:39 AliCaloClusterInfo.cxx:40 AliCaloClusterInfo.cxx:41 AliCaloClusterInfo.cxx:42 AliCaloClusterInfo.cxx:43 AliCaloClusterInfo.cxx:44 AliCaloClusterInfo.cxx:45 AliCaloClusterInfo.cxx:46 AliCaloClusterInfo.cxx:47 AliCaloClusterInfo.cxx:48 AliCaloClusterInfo.cxx:49 AliCaloClusterInfo.cxx:50 AliCaloClusterInfo.cxx:51 AliCaloClusterInfo.cxx:52 AliCaloClusterInfo.cxx:53 AliCaloClusterInfo.cxx:54 AliCaloClusterInfo.cxx:55 AliCaloClusterInfo.cxx:56 AliCaloClusterInfo.cxx:57 AliCaloClusterInfo.cxx:58 AliCaloClusterInfo.cxx:59 AliCaloClusterInfo.cxx:60 AliCaloClusterInfo.cxx:61 AliCaloClusterInfo.cxx:62 AliCaloClusterInfo.cxx:63 AliCaloClusterInfo.cxx:64 AliCaloClusterInfo.cxx:65 AliCaloClusterInfo.cxx:66 AliCaloClusterInfo.cxx:67 AliCaloClusterInfo.cxx:68 AliCaloClusterInfo.cxx:69 AliCaloClusterInfo.cxx:70 AliCaloClusterInfo.cxx:71 AliCaloClusterInfo.cxx:72 AliCaloClusterInfo.cxx:73 AliCaloClusterInfo.cxx:74 AliCaloClusterInfo.cxx:75 AliCaloClusterInfo.cxx:76 AliCaloClusterInfo.cxx:77 AliCaloClusterInfo.cxx:78 AliCaloClusterInfo.cxx:79 AliCaloClusterInfo.cxx:80 AliCaloClusterInfo.cxx:81 AliCaloClusterInfo.cxx:82 AliCaloClusterInfo.cxx:83 AliCaloClusterInfo.cxx:84 AliCaloClusterInfo.cxx:85 AliCaloClusterInfo.cxx:86 AliCaloClusterInfo.cxx:87 AliCaloClusterInfo.cxx:88 AliCaloClusterInfo.cxx:89 AliCaloClusterInfo.cxx:90 AliCaloClusterInfo.cxx:91 AliCaloClusterInfo.cxx:92 AliCaloClusterInfo.cxx:93 AliCaloClusterInfo.cxx:94 AliCaloClusterInfo.cxx:95 AliCaloClusterInfo.cxx:96 AliCaloClusterInfo.cxx:97 AliCaloClusterInfo.cxx:98 AliCaloClusterInfo.cxx:99 AliCaloClusterInfo.cxx:100 AliCaloClusterInfo.cxx:101 AliCaloClusterInfo.cxx:102 AliCaloClusterInfo.cxx:103 AliCaloClusterInfo.cxx:104 AliCaloClusterInfo.cxx:105 AliCaloClusterInfo.cxx:106 AliCaloClusterInfo.cxx:107 AliCaloClusterInfo.cxx:108 AliCaloClusterInfo.cxx:109 AliCaloClusterInfo.cxx:110 AliCaloClusterInfo.cxx:111 AliCaloClusterInfo.cxx:112 AliCaloClusterInfo.cxx:113 AliCaloClusterInfo.cxx:114 AliCaloClusterInfo.cxx:115 AliCaloClusterInfo.cxx:116 AliCaloClusterInfo.cxx:117 AliCaloClusterInfo.cxx:118 AliCaloClusterInfo.cxx:119 AliCaloClusterInfo.cxx:120 AliCaloClusterInfo.cxx:121 AliCaloClusterInfo.cxx:122 AliCaloClusterInfo.cxx:123 AliCaloClusterInfo.cxx:124 AliCaloClusterInfo.cxx:125 AliCaloClusterInfo.cxx:126 AliCaloClusterInfo.cxx:127 AliCaloClusterInfo.cxx:128 AliCaloClusterInfo.cxx:129 AliCaloClusterInfo.cxx:130 AliCaloClusterInfo.cxx:131 AliCaloClusterInfo.cxx:132 AliCaloClusterInfo.cxx:133 AliCaloClusterInfo.cxx:134 AliCaloClusterInfo.cxx:135 AliCaloClusterInfo.cxx:136 AliCaloClusterInfo.cxx:137 AliCaloClusterInfo.cxx:138 AliCaloClusterInfo.cxx:139 AliCaloClusterInfo.cxx:140 AliCaloClusterInfo.cxx:141 AliCaloClusterInfo.cxx:142 AliCaloClusterInfo.cxx:143 AliCaloClusterInfo.cxx:144 AliCaloClusterInfo.cxx:145 AliCaloClusterInfo.cxx:146 AliCaloClusterInfo.cxx:147 AliCaloClusterInfo.cxx:148 AliCaloClusterInfo.cxx:149 AliCaloClusterInfo.cxx:150 AliCaloClusterInfo.cxx:151 AliCaloClusterInfo.cxx:152 AliCaloClusterInfo.cxx:153 AliCaloClusterInfo.cxx:154 AliCaloClusterInfo.cxx:155 AliCaloClusterInfo.cxx:156 AliCaloClusterInfo.cxx:157 AliCaloClusterInfo.cxx:158 AliCaloClusterInfo.cxx:159 AliCaloClusterInfo.cxx:160 AliCaloClusterInfo.cxx:161 AliCaloClusterInfo.cxx:162 AliCaloClusterInfo.cxx:163 AliCaloClusterInfo.cxx:164 AliCaloClusterInfo.cxx:165 AliCaloClusterInfo.cxx:166 AliCaloClusterInfo.cxx:167 AliCaloClusterInfo.cxx:168 AliCaloClusterInfo.cxx:169 AliCaloClusterInfo.cxx:170 AliCaloClusterInfo.cxx:171 AliCaloClusterInfo.cxx:172 AliCaloClusterInfo.cxx:173 AliCaloClusterInfo.cxx:174 AliCaloClusterInfo.cxx:175 AliCaloClusterInfo.cxx:176 AliCaloClusterInfo.cxx:177 AliCaloClusterInfo.cxx:178 AliCaloClusterInfo.cxx:179 AliCaloClusterInfo.cxx:180 AliCaloClusterInfo.cxx:181 AliCaloClusterInfo.cxx:182 AliCaloClusterInfo.cxx:183 AliCaloClusterInfo.cxx:184 AliCaloClusterInfo.cxx:185 AliCaloClusterInfo.cxx:186 AliCaloClusterInfo.cxx:187 AliCaloClusterInfo.cxx:188 AliCaloClusterInfo.cxx:189 AliCaloClusterInfo.cxx:190 AliCaloClusterInfo.cxx:191 AliCaloClusterInfo.cxx:192 AliCaloClusterInfo.cxx:193 AliCaloClusterInfo.cxx:194 AliCaloClusterInfo.cxx:195 AliCaloClusterInfo.cxx:196 AliCaloClusterInfo.cxx:197 AliCaloClusterInfo.cxx:198 AliCaloClusterInfo.cxx:199 AliCaloClusterInfo.cxx:200 AliCaloClusterInfo.cxx:201 AliCaloClusterInfo.cxx:202 AliCaloClusterInfo.cxx:203 AliCaloClusterInfo.cxx:204 AliCaloClusterInfo.cxx:205 AliCaloClusterInfo.cxx:206 AliCaloClusterInfo.cxx:207 AliCaloClusterInfo.cxx:208 AliCaloClusterInfo.cxx:209 AliCaloClusterInfo.cxx:210 AliCaloClusterInfo.cxx:211 AliCaloClusterInfo.cxx:212 AliCaloClusterInfo.cxx:213 AliCaloClusterInfo.cxx:214 AliCaloClusterInfo.cxx:215 AliCaloClusterInfo.cxx:216 AliCaloClusterInfo.cxx:217 AliCaloClusterInfo.cxx:218 AliCaloClusterInfo.cxx:219 AliCaloClusterInfo.cxx:220 AliCaloClusterInfo.cxx:221 AliCaloClusterInfo.cxx:222 AliCaloClusterInfo.cxx:223 AliCaloClusterInfo.cxx:224 AliCaloClusterInfo.cxx:225 AliCaloClusterInfo.cxx:226 AliCaloClusterInfo.cxx:227 AliCaloClusterInfo.cxx:228 AliCaloClusterInfo.cxx:229 AliCaloClusterInfo.cxx:230 AliCaloClusterInfo.cxx:231 AliCaloClusterInfo.cxx:232 AliCaloClusterInfo.cxx:233 AliCaloClusterInfo.cxx:234 AliCaloClusterInfo.cxx:235 AliCaloClusterInfo.cxx:236 AliCaloClusterInfo.cxx:237 AliCaloClusterInfo.cxx:238 AliCaloClusterInfo.cxx:239 AliCaloClusterInfo.cxx:240 AliCaloClusterInfo.cxx:241 AliCaloClusterInfo.cxx:242 AliCaloClusterInfo.cxx:243 AliCaloClusterInfo.cxx:244 AliCaloClusterInfo.cxx:245 AliCaloClusterInfo.cxx:246 AliCaloClusterInfo.cxx:247 AliCaloClusterInfo.cxx:248 AliCaloClusterInfo.cxx:249 AliCaloClusterInfo.cxx:250 AliCaloClusterInfo.cxx:251 AliCaloClusterInfo.cxx:252 AliCaloClusterInfo.cxx:253 AliCaloClusterInfo.cxx:254 AliCaloClusterInfo.cxx:255 AliCaloClusterInfo.cxx:256 AliCaloClusterInfo.cxx:257