#include <TDatabasePDG.h>
#include <TParticlePDG.h>
#include "AliAODEvent.h"
#include "AliMCEvent.h"
#include "AliRsnEvent.h"
#include "AliRsnMiniEvent.h"
#include "AliRsnMiniParticle.h"
ClassImp(AliRsnMiniParticle)
void AliRsnMiniParticle::CopyDaughter(AliRsnDaughter *daughter)
{
fDCA = 0.0;
fPDG = 0;
fMother = -1;
fMotherPDG = 0;
fNTotSisters = -1;
fIsFromB = kFALSE;
fIsQuarkFound = kFALSE;
fCutBits = 0x0;
fPsim[0] = fPrec[0] = fPmother[0] = fPsim[1] = fPrec[1] = fPmother[1] = fPsim[2] = fPrec[2] = fPmother[2] = 0.0;
if (daughter->IsPos())
fCharge = '+';
else if (daughter->IsNeg())
fCharge = '-';
else
fCharge = '0';
if (daughter->GetRef()) {
fPrec[0] = daughter->GetRef()->Px();
fPrec[1] = daughter->GetRef()->Py();
fPrec[2] = daughter->GetRef()->Pz();
}
if (daughter->GetRefMC()) {
fPsim[0] = daughter->GetRefMC()->Px();
fPsim[1] = daughter->GetRefMC()->Py();
fPsim[2] = daughter->GetRefMC()->Pz();
fPDG = daughter->GetPDG();
fMother = daughter->GetMother();
fMotherPDG = daughter->GetMotherPDG();
}
AliRsnEvent *event = (AliRsnEvent *) daughter->GetOwnerEvent();
if (!event) {
AliWarning("Invalid reference event: cannot copy DCA nor Nsisters.");
return;
}
if (event->IsAOD()){
AliAODTrack *track = (AliAODTrack*) daughter->Ref2AODtrack();
AliAODEvent *aodEvent = (AliAODEvent*) event->GetRefAOD();
if (track && aodEvent) {
AliVVertex *vertex = (AliVVertex*) aodEvent->GetPrimaryVertex();
Double_t b[2], cov[3];
if (vertex) {
if ( !((track->GetStatus() & AliESDtrack::kTPCin) == 0) && !((track->GetStatus() & AliESDtrack::kTPCrefit) == 0) && !((track->GetStatus() & AliESDtrack::kITSrefit) == 0) ){
if (track->PropagateToDCA(vertex, aodEvent->GetMagneticField(), kVeryBig, b, cov))
fDCA = b[0];
}
}
}
if (event->GetRefMC()) {
TClonesArray * list = event->GetAODList();
AliAODMCParticle *part = (AliAODMCParticle *)list->At(fMother);
if (part) {
fNTotSisters = part->GetNDaughters();
fPmother[0] = part->Px();
fPmother[1] = part->Py();
fPmother[2] = part->Pz();
Int_t istep = 0;
Int_t pdgGranma = 0;
Int_t abspdgGranma =0;
Int_t mother_temp = daughter->GetMother();
while (mother_temp >=0 ){
istep++;
AliDebug(2,Form("mother at step %d = %d", istep, mother_temp));
AliAODMCParticle* mcGranma = dynamic_cast<AliAODMCParticle*>(list->At(mother_temp));
if (mcGranma){
pdgGranma = mcGranma->GetPdgCode();
AliDebug(2,Form("Pdg mother at step %d = %d", istep, pdgGranma));
abspdgGranma = TMath::Abs(pdgGranma);
if ((abspdgGranma > 500 && abspdgGranma < 600) || (abspdgGranma > 5000 && abspdgGranma < 6000)){
fIsFromB=kTRUE;
}
if(abspdgGranma==4 || abspdgGranma==5) fIsQuarkFound=kTRUE;
mother_temp = mcGranma->GetMother();
}else{
AliError("Failed casting the mother particle!");
break;
}
}
}
}
} else {
if (event->IsESD()){
AliESDtrack *track = (AliESDtrack*) daughter->Ref2ESDtrack();
AliESDEvent *esdEvent = (AliESDEvent*) event->GetRefESD();
if (track && esdEvent) {
AliVVertex *vertex = (AliVVertex*) esdEvent->GetPrimaryVertex();
Double_t b[2], cov[3];
if (vertex) {
if ( !((track->GetStatus() & AliESDtrack::kTPCin) == 0) && !((track->GetStatus() & AliESDtrack::kTPCrefit) == 0) && !((track->GetStatus() & AliESDtrack::kITSrefit) == 0) ){
if (track->PropagateToDCA(vertex, esdEvent->GetMagneticField(), kVeryBig, b, cov))
fDCA = b[0];
}
}
}
if (event->GetRefMC()) {
AliMCParticle *part = (AliMCParticle *)event->GetRefMC()->GetTrack(fMother);
AliMCEvent * MCEvent = event->GetRefMCESD();
if(part){
fNTotSisters = part->Particle()->GetNDaughters();
fPmother[0] = part->Px();
fPmother[1] = part->Py();
fPmother[2] = part->Pz();
Int_t istep = 0;
Int_t pdgGranma = 0;
Int_t abspdgGranma =0;
Int_t mother_temp = daughter->GetMother();
while (mother_temp >=0 ){
istep++;
AliDebug(2,Form("mother at step %d = %d", istep, mother_temp));
AliMCParticle* mcGranma = dynamic_cast<AliMCParticle*>(MCEvent->GetTrack(mother_temp));
if (mcGranma){
pdgGranma = mcGranma->PdgCode();
AliDebug(2,Form("Pdg mother at step %d = %d", istep, pdgGranma));
abspdgGranma = TMath::Abs(pdgGranma);
if ((abspdgGranma > 500 && abspdgGranma < 600) || (abspdgGranma > 5000 && abspdgGranma < 6000)){
fIsFromB=kTRUE;
}
if(abspdgGranma==4 || abspdgGranma==5) fIsQuarkFound=kTRUE;
mother_temp = mcGranma->GetMother();
}else{
AliError("Failed casting the mother particle!");
break;
}
}
}
}
}
}
}
Double_t AliRsnMiniParticle::Mass()
{
TDatabasePDG *db = TDatabasePDG::Instance();
TParticlePDG *part = db->GetParticle(PDG());
return part->Mass();
}
void AliRsnMiniParticle::Set4Vector(TLorentzVector &v, Float_t mass, Bool_t mc)
{
if (mass<0.0) mass = Mass();
v.SetXYZM(Px(mc), Py(mc), Pz(mc),mass);
}
AliRsnMiniParticle.cxx:10 AliRsnMiniParticle.cxx:11 AliRsnMiniParticle.cxx:12 AliRsnMiniParticle.cxx:13 AliRsnMiniParticle.cxx:14 AliRsnMiniParticle.cxx:15 AliRsnMiniParticle.cxx:16 AliRsnMiniParticle.cxx:17 AliRsnMiniParticle.cxx:18 AliRsnMiniParticle.cxx:19 AliRsnMiniParticle.cxx:20 AliRsnMiniParticle.cxx:21 AliRsnMiniParticle.cxx:22 AliRsnMiniParticle.cxx:23 AliRsnMiniParticle.cxx:24 AliRsnMiniParticle.cxx:25 AliRsnMiniParticle.cxx:26 AliRsnMiniParticle.cxx:27 AliRsnMiniParticle.cxx:28 AliRsnMiniParticle.cxx:29 AliRsnMiniParticle.cxx:30 AliRsnMiniParticle.cxx:31 AliRsnMiniParticle.cxx:32 AliRsnMiniParticle.cxx:33 AliRsnMiniParticle.cxx:34 AliRsnMiniParticle.cxx:35 AliRsnMiniParticle.cxx:36 AliRsnMiniParticle.cxx:37 AliRsnMiniParticle.cxx:38 AliRsnMiniParticle.cxx:39 AliRsnMiniParticle.cxx:40 AliRsnMiniParticle.cxx:41 AliRsnMiniParticle.cxx:42 AliRsnMiniParticle.cxx:43 AliRsnMiniParticle.cxx:44 AliRsnMiniParticle.cxx:45 AliRsnMiniParticle.cxx:46 AliRsnMiniParticle.cxx:47 AliRsnMiniParticle.cxx:48 AliRsnMiniParticle.cxx:49 AliRsnMiniParticle.cxx:50 AliRsnMiniParticle.cxx:51 AliRsnMiniParticle.cxx:52 AliRsnMiniParticle.cxx:53 AliRsnMiniParticle.cxx:54 AliRsnMiniParticle.cxx:55 AliRsnMiniParticle.cxx:56 AliRsnMiniParticle.cxx:57 AliRsnMiniParticle.cxx:58 AliRsnMiniParticle.cxx:59 AliRsnMiniParticle.cxx:60 AliRsnMiniParticle.cxx:61 AliRsnMiniParticle.cxx:62 AliRsnMiniParticle.cxx:63 AliRsnMiniParticle.cxx:64 AliRsnMiniParticle.cxx:65 AliRsnMiniParticle.cxx:66 AliRsnMiniParticle.cxx:67 AliRsnMiniParticle.cxx:68 AliRsnMiniParticle.cxx:69 AliRsnMiniParticle.cxx:70 AliRsnMiniParticle.cxx:71 AliRsnMiniParticle.cxx:72 AliRsnMiniParticle.cxx:73 AliRsnMiniParticle.cxx:74 AliRsnMiniParticle.cxx:75 AliRsnMiniParticle.cxx:76 AliRsnMiniParticle.cxx:77 AliRsnMiniParticle.cxx:78 AliRsnMiniParticle.cxx:79 AliRsnMiniParticle.cxx:80 AliRsnMiniParticle.cxx:81 AliRsnMiniParticle.cxx:82 AliRsnMiniParticle.cxx:83 AliRsnMiniParticle.cxx:84 AliRsnMiniParticle.cxx:85 AliRsnMiniParticle.cxx:86 AliRsnMiniParticle.cxx:87 AliRsnMiniParticle.cxx:88 AliRsnMiniParticle.cxx:89 AliRsnMiniParticle.cxx:90 AliRsnMiniParticle.cxx:91 AliRsnMiniParticle.cxx:92 AliRsnMiniParticle.cxx:93 AliRsnMiniParticle.cxx:94 AliRsnMiniParticle.cxx:95 AliRsnMiniParticle.cxx:96 AliRsnMiniParticle.cxx:97 AliRsnMiniParticle.cxx:98 AliRsnMiniParticle.cxx:99 AliRsnMiniParticle.cxx:100 AliRsnMiniParticle.cxx:101 AliRsnMiniParticle.cxx:102 AliRsnMiniParticle.cxx:103 AliRsnMiniParticle.cxx:104 AliRsnMiniParticle.cxx:105 AliRsnMiniParticle.cxx:106 AliRsnMiniParticle.cxx:107 AliRsnMiniParticle.cxx:108 AliRsnMiniParticle.cxx:109 AliRsnMiniParticle.cxx:110 AliRsnMiniParticle.cxx:111 AliRsnMiniParticle.cxx:112 AliRsnMiniParticle.cxx:113 AliRsnMiniParticle.cxx:114 AliRsnMiniParticle.cxx:115 AliRsnMiniParticle.cxx:116 AliRsnMiniParticle.cxx:117 AliRsnMiniParticle.cxx:118 AliRsnMiniParticle.cxx:119 AliRsnMiniParticle.cxx:120 AliRsnMiniParticle.cxx:121 AliRsnMiniParticle.cxx:122 AliRsnMiniParticle.cxx:123 AliRsnMiniParticle.cxx:124 AliRsnMiniParticle.cxx:125 AliRsnMiniParticle.cxx:126 AliRsnMiniParticle.cxx:127 AliRsnMiniParticle.cxx:128 AliRsnMiniParticle.cxx:129 AliRsnMiniParticle.cxx:130 AliRsnMiniParticle.cxx:131 AliRsnMiniParticle.cxx:132 AliRsnMiniParticle.cxx:133 AliRsnMiniParticle.cxx:134 AliRsnMiniParticle.cxx:135 AliRsnMiniParticle.cxx:136 AliRsnMiniParticle.cxx:137 AliRsnMiniParticle.cxx:138 AliRsnMiniParticle.cxx:139 AliRsnMiniParticle.cxx:140 AliRsnMiniParticle.cxx:141 AliRsnMiniParticle.cxx:142 AliRsnMiniParticle.cxx:143 AliRsnMiniParticle.cxx:144 AliRsnMiniParticle.cxx:145 AliRsnMiniParticle.cxx:146 AliRsnMiniParticle.cxx:147 AliRsnMiniParticle.cxx:148 AliRsnMiniParticle.cxx:149 AliRsnMiniParticle.cxx:150 AliRsnMiniParticle.cxx:151 AliRsnMiniParticle.cxx:152 AliRsnMiniParticle.cxx:153 AliRsnMiniParticle.cxx:154 AliRsnMiniParticle.cxx:155 AliRsnMiniParticle.cxx:156 AliRsnMiniParticle.cxx:157 AliRsnMiniParticle.cxx:158 AliRsnMiniParticle.cxx:159 AliRsnMiniParticle.cxx:160 AliRsnMiniParticle.cxx:161 AliRsnMiniParticle.cxx:162 AliRsnMiniParticle.cxx:163 AliRsnMiniParticle.cxx:164 AliRsnMiniParticle.cxx:165 AliRsnMiniParticle.cxx:166 AliRsnMiniParticle.cxx:167 AliRsnMiniParticle.cxx:168 AliRsnMiniParticle.cxx:169 AliRsnMiniParticle.cxx:170 AliRsnMiniParticle.cxx:171 AliRsnMiniParticle.cxx:172 AliRsnMiniParticle.cxx:173 AliRsnMiniParticle.cxx:174 AliRsnMiniParticle.cxx:175 AliRsnMiniParticle.cxx:176 AliRsnMiniParticle.cxx:177 AliRsnMiniParticle.cxx:178 AliRsnMiniParticle.cxx:179 AliRsnMiniParticle.cxx:180 AliRsnMiniParticle.cxx:181 AliRsnMiniParticle.cxx:182 AliRsnMiniParticle.cxx:183 AliRsnMiniParticle.cxx:184 AliRsnMiniParticle.cxx:185 AliRsnMiniParticle.cxx:186 AliRsnMiniParticle.cxx:187 AliRsnMiniParticle.cxx:188