#include "AliStack.h"
#include "AliPHOSHit.h"
#include "AliPHOSDigit.h"
#include "AliPHOSTrackSegment.h"
#include "AliPHOSEmcRecPoint.h"
#include "AliPHOSRecParticle.h"
#include "AliPHOSLoader.h"
#include "AliPHOSGeometry.h"
#include "AliLog.h"
AliPHOSRecParticle::AliPHOSRecParticle():
fPHOSTrackSegment(0),
fDebug(kFALSE),
fPos()
{
const Int_t nSPECIES = AliPID::kSPECIESCN;
for(Int_t i = 0; i<nSPECIES ; i++)
fPID[i]=0.;
}
AliPHOSRecParticle::AliPHOSRecParticle(const AliPHOSRecParticle & rp):
AliPHOSFastRecParticle(rp),
fPHOSTrackSegment(rp.fPHOSTrackSegment),
fDebug(kFALSE),
fPos()
{
fType = rp.fType ;
fIndexInList = rp.fIndexInList ;
fPdgCode = rp.fPdgCode;
fStatusCode = rp.fStatusCode;
fMother[0] = rp.fMother[0];
fMother[1] = rp.fMother[1];
fDaughter[0] = rp.fDaughter[0];
fDaughter[1] = rp.fDaughter[1];
fWeight = rp.fWeight;
fCalcMass = rp.fCalcMass;
fPx = rp.fPx;
fPy = rp.fPy;
fPz = rp.fPz;
fE = rp.fE;
fVx = rp.fVx;
fVy = rp.fVy;
fVz = rp.fVz;
fVt = rp.fVt;
fPolarTheta = rp.fPolarTheta;
fPolarPhi = rp.fPolarPhi;
fParticlePDG = rp.fParticlePDG;
const Int_t nSPECIES = AliPID::kSPECIESCN;
for(Int_t i = 0; i<nSPECIES ; i++)
fPID[i]=rp.fPID[i];
}
AliPHOSRecParticle & AliPHOSRecParticle::operator = (const AliPHOSRecParticle &)
{
Fatal("operator =", "not implemented");
return *this;
}
Int_t AliPHOSRecParticle::GetNPrimaries() const
{
return -1;
}
Int_t AliPHOSRecParticle::GetNPrimariesToRecParticles() const
{
Int_t rv = 0 ;
AliRunLoader* rl = AliRunLoader::Instance() ;
AliPHOSLoader * phosLoader = static_cast<AliPHOSLoader*>(rl->GetLoader("PHOSLoader"));
Int_t emcRPindex = static_cast<AliPHOSTrackSegment*>(phosLoader->TrackSegments()->At(GetPHOSTSIndex()))->GetEmcIndex();
static_cast<AliPHOSEmcRecPoint*>(phosLoader->EmcRecPoints()->At(emcRPindex))->GetPrimaries(rv) ;
return rv ;
}
const TParticle * AliPHOSRecParticle::GetPrimary() const
{
AliRunLoader* rl = AliRunLoader::Instance() ;
AliPHOSLoader * phosLoader = static_cast<AliPHOSLoader*>(rl->GetLoader("PHOSLoader"));
rl->GetEvent(rl->GetEventNumber()) ;
rl->LoadKinematics("READ");
rl->LoadSDigits("READ");
if(GetNPrimaries() == 0)
return 0 ;
if(GetNPrimaries() == 1)
return GetPrimary(0) ;
Int_t AbsId = 0;
Int_t module ;
AliPHOSGeometry *geom;
if (!(geom = AliPHOSGeometry::GetInstance()))
geom = AliPHOSGeometry::GetInstance("IHEP","");
Double_t x,z ;
Double_t vtx[3]={0.,0.,0.} ;
geom->ImpactOnEmc(vtx,static_cast<double>(Theta()),static_cast<double>(Phi()), module,z,x);
Int_t amp = 0 ;
Int_t iPrim=-1 ;
if(module != 0){
geom->RelPosToAbsId(module,x,z,AbsId) ;
TClonesArray * sdigits = phosLoader->SDigits() ;
AliPHOSDigit * sdig ;
for(Int_t i = 0 ; i < sdigits->GetEntriesFast() ; i++){
sdig = static_cast<AliPHOSDigit *>(sdigits->At(i)) ;
if((sdig->GetId() == AbsId)){
if((sdig->GetAmp() > amp) && (sdig->GetNprimary())){
amp = sdig->GetAmp() ;
iPrim = sdig->GetPrimary(1) ;
}
if(sdig->GetId() > AbsId)
continue ;
}
}
}
if(iPrim >= 0)
return rl->Stack()->Particle(iPrim) ;
else
return 0 ;
}
Int_t AliPHOSRecParticle::GetPrimaryIndex() const
{
AliRunLoader* rl = AliRunLoader::Instance() ;
AliPHOSLoader * phosLoader = static_cast<AliPHOSLoader*>(rl->GetLoader("PHOSLoader"));
rl->GetEvent(rl->GetEventNumber()) ;
rl->LoadHits("READ");
rl->LoadDigits("READ");
rl->LoadRecPoints("READ");
rl->LoadTracks("READ");
const AliPHOSTrackSegment *ts = phosLoader->TrackSegment(fPHOSTrackSegment);
Int_t emcRecPointIndex = ts->GetEmcIndex();
const AliPHOSEmcRecPoint *emcRecPoint = phosLoader->EmcRecPoint(emcRecPointIndex);
Int_t nDigits = emcRecPoint->GetDigitsMultiplicity();
Int_t *digitList = emcRecPoint->GetDigitsList();
Int_t maxAmp = 0;
Int_t bestDigitIndex = -1;
for (Int_t iDigit=0; iDigit<nDigits; iDigit++) {
const AliPHOSDigit * digit = phosLoader->Digit(digitList[iDigit]);
if (digit->GetAmp() > maxAmp) {
maxAmp = digit->GetAmp();
bestDigitIndex = iDigit;
}
}
if (bestDigitIndex>-1) {
const AliPHOSDigit * digit = phosLoader->Digit(digitList[bestDigitIndex]);
if (digit==0) return -12345;
}
TClonesArray *hits = phosLoader->Hits();
if (hits==0) return -12345;
Double_t maxedep = 0;
Int_t maxtrack = -1;
Int_t nHits = hits ->GetEntries();
Int_t id = (phosLoader->Digit(digitList[bestDigitIndex]))->GetId();
for (Int_t iHit=0; iHit<nHits; iHit++) {
const AliPHOSHit * hit = phosLoader->Hit(iHit);
if(hit->GetId() == id){
Double_t edep = hit->GetEnergy();
Int_t track = hit->GetPrimary();
if(edep > maxedep){
maxedep = edep;
maxtrack = track;
}
}
}
if (maxtrack != -1) return maxtrack;
return -12345;
}
const TParticle * AliPHOSRecParticle::GetPrimary(Int_t index) const
{
if ( index > GetNPrimariesToRecParticles() ) {
if (fDebug)
Warning("GetPrimary", "AliPHOSRecParticle::GetPrimary -> %d is larger that the number of primaries %d",
index, GetNPrimaries()) ;
return 0 ;
}
else {
Int_t dummy ;
AliRunLoader* rl = AliRunLoader::Instance() ;
AliPHOSLoader * phosLoader = static_cast<AliPHOSLoader*>(rl->GetLoader("PHOSLoader"));
Int_t emcRPindex = static_cast<AliPHOSTrackSegment*>(phosLoader->TrackSegments()->At(GetPHOSTSIndex()))->GetEmcIndex();
Int_t primaryindex = static_cast<AliPHOSEmcRecPoint*>(phosLoader->EmcRecPoints()->At(emcRPindex))->GetPrimaries(dummy)[index] ;
return rl->Stack()->Particle(primaryindex) ;
}
}
void AliPHOSRecParticle::SetPID(Int_t type, Float_t weight)
{
fPID[type] = weight ;
}
AliPHOSRecParticle.cxx:10 AliPHOSRecParticle.cxx:11 AliPHOSRecParticle.cxx:12 AliPHOSRecParticle.cxx:13 AliPHOSRecParticle.cxx:14 AliPHOSRecParticle.cxx:15 AliPHOSRecParticle.cxx:16 AliPHOSRecParticle.cxx:17 AliPHOSRecParticle.cxx:18 AliPHOSRecParticle.cxx:19 AliPHOSRecParticle.cxx:20 AliPHOSRecParticle.cxx:21 AliPHOSRecParticle.cxx:22 AliPHOSRecParticle.cxx:23 AliPHOSRecParticle.cxx:24 AliPHOSRecParticle.cxx:25 AliPHOSRecParticle.cxx:26 AliPHOSRecParticle.cxx:27 AliPHOSRecParticle.cxx:28 AliPHOSRecParticle.cxx:29 AliPHOSRecParticle.cxx:30 AliPHOSRecParticle.cxx:31 AliPHOSRecParticle.cxx:32 AliPHOSRecParticle.cxx:33 AliPHOSRecParticle.cxx:34 AliPHOSRecParticle.cxx:35 AliPHOSRecParticle.cxx:36 AliPHOSRecParticle.cxx:37 AliPHOSRecParticle.cxx:38 AliPHOSRecParticle.cxx:39 AliPHOSRecParticle.cxx:40 AliPHOSRecParticle.cxx:41 AliPHOSRecParticle.cxx:42 AliPHOSRecParticle.cxx:43 AliPHOSRecParticle.cxx:44 AliPHOSRecParticle.cxx:45 AliPHOSRecParticle.cxx:46 AliPHOSRecParticle.cxx:47 AliPHOSRecParticle.cxx:48 AliPHOSRecParticle.cxx:49 AliPHOSRecParticle.cxx:50 AliPHOSRecParticle.cxx:51 AliPHOSRecParticle.cxx:52 AliPHOSRecParticle.cxx:53 AliPHOSRecParticle.cxx:54 AliPHOSRecParticle.cxx:55 AliPHOSRecParticle.cxx:56 AliPHOSRecParticle.cxx:57 AliPHOSRecParticle.cxx:58 AliPHOSRecParticle.cxx:59 AliPHOSRecParticle.cxx:60 AliPHOSRecParticle.cxx:61 AliPHOSRecParticle.cxx:62 AliPHOSRecParticle.cxx:63 AliPHOSRecParticle.cxx:64 AliPHOSRecParticle.cxx:65 AliPHOSRecParticle.cxx:66 AliPHOSRecParticle.cxx:67 AliPHOSRecParticle.cxx:68 AliPHOSRecParticle.cxx:69 AliPHOSRecParticle.cxx:70 AliPHOSRecParticle.cxx:71 AliPHOSRecParticle.cxx:72 AliPHOSRecParticle.cxx:73 AliPHOSRecParticle.cxx:74 AliPHOSRecParticle.cxx:75 AliPHOSRecParticle.cxx:76 AliPHOSRecParticle.cxx:77 AliPHOSRecParticle.cxx:78 AliPHOSRecParticle.cxx:79 AliPHOSRecParticle.cxx:80 AliPHOSRecParticle.cxx:81 AliPHOSRecParticle.cxx:82 AliPHOSRecParticle.cxx:83 AliPHOSRecParticle.cxx:84 AliPHOSRecParticle.cxx:85 AliPHOSRecParticle.cxx:86 AliPHOSRecParticle.cxx:87 AliPHOSRecParticle.cxx:88 AliPHOSRecParticle.cxx:89 AliPHOSRecParticle.cxx:90 AliPHOSRecParticle.cxx:91 AliPHOSRecParticle.cxx:92 AliPHOSRecParticle.cxx:93 AliPHOSRecParticle.cxx:94 AliPHOSRecParticle.cxx:95 AliPHOSRecParticle.cxx:96 AliPHOSRecParticle.cxx:97 AliPHOSRecParticle.cxx:98 AliPHOSRecParticle.cxx:99 AliPHOSRecParticle.cxx:100 AliPHOSRecParticle.cxx:101 AliPHOSRecParticle.cxx:102 AliPHOSRecParticle.cxx:103 AliPHOSRecParticle.cxx:104 AliPHOSRecParticle.cxx:105 AliPHOSRecParticle.cxx:106 AliPHOSRecParticle.cxx:107 AliPHOSRecParticle.cxx:108 AliPHOSRecParticle.cxx:109 AliPHOSRecParticle.cxx:110 AliPHOSRecParticle.cxx:111 AliPHOSRecParticle.cxx:112 AliPHOSRecParticle.cxx:113 AliPHOSRecParticle.cxx:114 AliPHOSRecParticle.cxx:115 AliPHOSRecParticle.cxx:116 AliPHOSRecParticle.cxx:117 AliPHOSRecParticle.cxx:118 AliPHOSRecParticle.cxx:119 AliPHOSRecParticle.cxx:120 AliPHOSRecParticle.cxx:121 AliPHOSRecParticle.cxx:122 AliPHOSRecParticle.cxx:123 AliPHOSRecParticle.cxx:124 AliPHOSRecParticle.cxx:125 AliPHOSRecParticle.cxx:126 AliPHOSRecParticle.cxx:127 AliPHOSRecParticle.cxx:128 AliPHOSRecParticle.cxx:129 AliPHOSRecParticle.cxx:130 AliPHOSRecParticle.cxx:131 AliPHOSRecParticle.cxx:132 AliPHOSRecParticle.cxx:133 AliPHOSRecParticle.cxx:134 AliPHOSRecParticle.cxx:135 AliPHOSRecParticle.cxx:136 AliPHOSRecParticle.cxx:137 AliPHOSRecParticle.cxx:138 AliPHOSRecParticle.cxx:139 AliPHOSRecParticle.cxx:140 AliPHOSRecParticle.cxx:141 AliPHOSRecParticle.cxx:142 AliPHOSRecParticle.cxx:143 AliPHOSRecParticle.cxx:144 AliPHOSRecParticle.cxx:145 AliPHOSRecParticle.cxx:146 AliPHOSRecParticle.cxx:147 AliPHOSRecParticle.cxx:148 AliPHOSRecParticle.cxx:149 AliPHOSRecParticle.cxx:150 AliPHOSRecParticle.cxx:151 AliPHOSRecParticle.cxx:152 AliPHOSRecParticle.cxx:153 AliPHOSRecParticle.cxx:154 AliPHOSRecParticle.cxx:155 AliPHOSRecParticle.cxx:156 AliPHOSRecParticle.cxx:157 AliPHOSRecParticle.cxx:158 AliPHOSRecParticle.cxx:159 AliPHOSRecParticle.cxx:160 AliPHOSRecParticle.cxx:161 AliPHOSRecParticle.cxx:162 AliPHOSRecParticle.cxx:163 AliPHOSRecParticle.cxx:164 AliPHOSRecParticle.cxx:165 AliPHOSRecParticle.cxx:166 AliPHOSRecParticle.cxx:167 AliPHOSRecParticle.cxx:168 AliPHOSRecParticle.cxx:169 AliPHOSRecParticle.cxx:170 AliPHOSRecParticle.cxx:171 AliPHOSRecParticle.cxx:172 AliPHOSRecParticle.cxx:173 AliPHOSRecParticle.cxx:174 AliPHOSRecParticle.cxx:175 AliPHOSRecParticle.cxx:176 AliPHOSRecParticle.cxx:177 AliPHOSRecParticle.cxx:178 AliPHOSRecParticle.cxx:179 AliPHOSRecParticle.cxx:180 AliPHOSRecParticle.cxx:181 AliPHOSRecParticle.cxx:182 AliPHOSRecParticle.cxx:183 AliPHOSRecParticle.cxx:184 AliPHOSRecParticle.cxx:185 AliPHOSRecParticle.cxx:186 AliPHOSRecParticle.cxx:187 AliPHOSRecParticle.cxx:188 AliPHOSRecParticle.cxx:189 AliPHOSRecParticle.cxx:190 AliPHOSRecParticle.cxx:191 AliPHOSRecParticle.cxx:192 AliPHOSRecParticle.cxx:193 AliPHOSRecParticle.cxx:194 AliPHOSRecParticle.cxx:195 AliPHOSRecParticle.cxx:196 AliPHOSRecParticle.cxx:197 AliPHOSRecParticle.cxx:198 AliPHOSRecParticle.cxx:199 AliPHOSRecParticle.cxx:200 AliPHOSRecParticle.cxx:201 AliPHOSRecParticle.cxx:202 AliPHOSRecParticle.cxx:203 AliPHOSRecParticle.cxx:204 AliPHOSRecParticle.cxx:205 AliPHOSRecParticle.cxx:206 AliPHOSRecParticle.cxx:207 AliPHOSRecParticle.cxx:208 AliPHOSRecParticle.cxx:209 AliPHOSRecParticle.cxx:210 AliPHOSRecParticle.cxx:211 AliPHOSRecParticle.cxx:212 AliPHOSRecParticle.cxx:213 AliPHOSRecParticle.cxx:214 AliPHOSRecParticle.cxx:215 AliPHOSRecParticle.cxx:216 AliPHOSRecParticle.cxx:217 AliPHOSRecParticle.cxx:218 AliPHOSRecParticle.cxx:219 AliPHOSRecParticle.cxx:220 AliPHOSRecParticle.cxx:221 AliPHOSRecParticle.cxx:222 AliPHOSRecParticle.cxx:223 AliPHOSRecParticle.cxx:224 AliPHOSRecParticle.cxx:225 AliPHOSRecParticle.cxx:226 AliPHOSRecParticle.cxx:227 AliPHOSRecParticle.cxx:228 AliPHOSRecParticle.cxx:229 AliPHOSRecParticle.cxx:230 AliPHOSRecParticle.cxx:231 AliPHOSRecParticle.cxx:232 AliPHOSRecParticle.cxx:233 AliPHOSRecParticle.cxx:234 AliPHOSRecParticle.cxx:235 AliPHOSRecParticle.cxx:236 AliPHOSRecParticle.cxx:237 AliPHOSRecParticle.cxx:238 AliPHOSRecParticle.cxx:239 AliPHOSRecParticle.cxx:240 AliPHOSRecParticle.cxx:241 AliPHOSRecParticle.cxx:242 AliPHOSRecParticle.cxx:243 AliPHOSRecParticle.cxx:244 AliPHOSRecParticle.cxx:245 AliPHOSRecParticle.cxx:246 AliPHOSRecParticle.cxx:247 AliPHOSRecParticle.cxx:248 AliPHOSRecParticle.cxx:249 AliPHOSRecParticle.cxx:250 AliPHOSRecParticle.cxx:251 AliPHOSRecParticle.cxx:252 AliPHOSRecParticle.cxx:253 AliPHOSRecParticle.cxx:254 AliPHOSRecParticle.cxx:255 AliPHOSRecParticle.cxx:256 AliPHOSRecParticle.cxx:257 AliPHOSRecParticle.cxx:258 AliPHOSRecParticle.cxx:259 AliPHOSRecParticle.cxx:260 AliPHOSRecParticle.cxx:261 AliPHOSRecParticle.cxx:262 AliPHOSRecParticle.cxx:263 AliPHOSRecParticle.cxx:264 AliPHOSRecParticle.cxx:265 AliPHOSRecParticle.cxx:266 AliPHOSRecParticle.cxx:267 AliPHOSRecParticle.cxx:268 AliPHOSRecParticle.cxx:269 AliPHOSRecParticle.cxx:270 AliPHOSRecParticle.cxx:271 AliPHOSRecParticle.cxx:272 AliPHOSRecParticle.cxx:273 AliPHOSRecParticle.cxx:274 AliPHOSRecParticle.cxx:275 AliPHOSRecParticle.cxx:276 AliPHOSRecParticle.cxx:277 AliPHOSRecParticle.cxx:278 AliPHOSRecParticle.cxx:279 AliPHOSRecParticle.cxx:280 AliPHOSRecParticle.cxx:281 AliPHOSRecParticle.cxx:282 AliPHOSRecParticle.cxx:283 AliPHOSRecParticle.cxx:284 AliPHOSRecParticle.cxx:285 AliPHOSRecParticle.cxx:286 AliPHOSRecParticle.cxx:287 AliPHOSRecParticle.cxx:288 AliPHOSRecParticle.cxx:289 AliPHOSRecParticle.cxx:290 AliPHOSRecParticle.cxx:291 AliPHOSRecParticle.cxx:292 AliPHOSRecParticle.cxx:293 AliPHOSRecParticle.cxx:294 AliPHOSRecParticle.cxx:295 AliPHOSRecParticle.cxx:296 AliPHOSRecParticle.cxx:297 AliPHOSRecParticle.cxx:298 AliPHOSRecParticle.cxx:299 AliPHOSRecParticle.cxx:300 AliPHOSRecParticle.cxx:301 AliPHOSRecParticle.cxx:302 AliPHOSRecParticle.cxx:303 AliPHOSRecParticle.cxx:304 AliPHOSRecParticle.cxx:305 AliPHOSRecParticle.cxx:306 AliPHOSRecParticle.cxx:307 AliPHOSRecParticle.cxx:308 AliPHOSRecParticle.cxx:309 AliPHOSRecParticle.cxx:310 AliPHOSRecParticle.cxx:311 AliPHOSRecParticle.cxx:312 AliPHOSRecParticle.cxx:313 AliPHOSRecParticle.cxx:314