void SetEnergy(Float_t val) {fEnergy = val;}
void SetPhi(Float_t val) {fPhi = val;}
void SetEta(Float_t val) {fEta = val;}
- void SetTrackList(Int_t val, Float_t* pt, Float_t* eta, Float_t* phi);
+ void SetTrackList(Int_t val, Float_t* pt, Float_t* eta, Float_t* phi, Int_t* pdg);
Float_t Energy() {return fEnergy;}
Float_t Phi() {return fPhi;}
Float_t Eta() {return fEta;}
- Int_t TrackList(Float_t* pt, Float_t* eta, Float_t* phi);
+ Int_t TrackList(Float_t* pt, Float_t* eta, Float_t* phi, Int_t* pdg);
Int_t NTracks() {return fNt;}
protected:
Float_t fEta; // Jet Phi
Float_t fPhi; // Jet Eta
Int_t fNt; // Number of associated tracks
- Float_t fPtT [50]; //
- Float_t fEtaT[50]; //
- Float_t fPhiT[50]; //
- ClassDef(AliEMCALJet,2) // Jet for EMCAL
+ Float_t fPtT [50]; // Track pt
+ Float_t fEtaT[50]; // Track eta
+ Float_t fPhiT[50]; // Track phi
+ Int_t fPdgT[50]; // Track pdg code
+ ClassDef(AliEMCALJet,3) // Jet for EMCAL
} ;
/*
$Log$
+Revision 1.21 2002/04/27 07:43:08 morsch
+Calculation of fDphi corrected (Renan Cabrera)
+
Revision 1.20 2002/03/12 01:06:23 pavlinov
Testin output from generator
#include "AliEMCAL.h"
#include "AliHeader.h"
#include "AliPDG.h"
+#include "AliMC.h"
// Interface to FORTRAN
#include "Ecommon.h"
fPtT = 0;
fEtaT = 0;
fPhiT = 0;
-
+ fPdgT = 0;
+
fTrackListB = 0;
fPtB = 0;
fEtaB = 0;
fPhiB = 0;
+ fPdgB = 0;
fHCorrection = 0;
fHadronCorrector = 0;
fPtT = 0;
fEtaT = 0;
fPhiT = 0;
+ fPdgT = 0;
fTrackListB = 0;
fPtB = 0;
fEtaB = 0;
fPhiB = 0;
+ fPdgB = 0;
fHCorrection = 0;
fHadronCorrector = 0;
#ifndef WIN32
# define jet_finder_ua1 jet_finder_ua1_
-# define sgpdge sgpdge_
# define hf1 hf1_
# define type_of_call
#else
-# define jet_finder_ua1 J
+# define jet_finder_ua1 JET_FINDER_UA1
# define hf1 HF1
# define type_of_call _stdcall
#endif
Float_t& prec_bg, Int_t& ierror);
extern "C" void type_of_call hf1(Int_t& id, Float_t& x, Float_t& wgt);
-// PAI's staff
-extern "C" void type_of_call sgpdge(Int_t &i, Int_t &pdggea);
-// int pycomp_(int* kf); see $ROOTSYS/include/TPythia6Calls.h
+
void AliEMCALJetFinder::Init()
{
if (fPtT) delete[] fPtT;
if (fEtaT) delete[] fEtaT;
if (fPhiT) delete[] fPhiT;
+ if (fPdgT) delete[] fPdgT;
fTrackList = new Int_t [npart];
fPtT = new Float_t[npart];
fEtaT = new Float_t[npart];
fPhiT = new Float_t[npart];
+ fPdgT = new Int_t[npart];
fNt = npart;
fNtS = 0;
fPtT[part] = pT; // must be change after correction for resolution !!!
fEtaT[part] = eta;
fPhiT[part] = phi;
+ fPdgT[part] = mpart;
+
if (part < 2) continue;
if (fPtT) delete[] fPtT;
if (fEtaT) delete[] fEtaT;
if (fPhiT) delete[] fPhiT;
+ if (fPdgT) delete[] fPdgT;
fPtT = new Float_t[ntracks];
fEtaT = new Float_t[ntracks];
fPhiT = new Float_t[ntracks];
+ fPdgT = new Int_t[ntracks];
fNt = ntracks;
fNtS = 0;
fPtT[track] = pT;
fEtaT[track] = eta;
fPhiT[track] = phi;
-
+ fPdgT[track] = MPart->GetPdgCode();
+
if (track < 2) continue; //Colliding particles?
if (pT == 0 || pT < fPtCut) continue;
fNtS++;
e = MPart->Energy();
// see pyedit in Pythia's text
- sgpdge(mpart, geantPdg);
- Int_t kc = pycomp_(&mpart);
- TString name = GetPythiaParticleName(mpart);
+ geantPdg = mpart;
+// Int_t kc = pycomp_(&mpart);
+// TString name = GetPythiaParticleName(mpart);
// printf(" mpart %6.6i;kc %6.6i -> gid %3.3i",mpart,kc,geantPdg);
//printf(" (%s)\n", name.Data());
- printf("%5i: %5i(%2i) px %5.1f py %5.1f pz %6.1f e %6.1f childs %5i,%5i %s\n",
- part, mpart, geantPdg, px, py, pz, e, child1, child2, name.Data());
+ if (IsThisPartonsOrDiQuark(mpart)) continue;
+ printf("%5i: %5i(%2i) px %5.1f py %5.1f pz %6.1f e %6.1f childs %5i,%5i \n",
+ part, mpart, geantPdg, px, py, pz, e, child1, child2);
// exclude partons (21 - gluon, 92 - string)
- if (IsThisPartonsOrDiQuark(mpart)) continue;
+
+
// exclude neutrinous also ??
if (fDebug >= 11 && pT>0.01)
printf("\n part:%5d mpart %5d eta %9.2f phi %9.2f pT %9.2f ",
fPtT[part] = pT;
fEtaT[part] = eta;
fPhiT[part] = phi;
-
+ fPdgT[part] = mpart;
+
// final state only
if (child1 >= 0 && child1 < npart) continue;
if (fPtB) delete[] fPtB;
if (fEtaB) delete[] fEtaB;
if (fPhiB) delete[] fPhiB;
+ if (fPdgB) delete[] fPdgB;
if (fTrackListB) delete[] fTrackListB;
fPtB = new Float_t[fNtS];
fEtaB = new Float_t[fNtS];
fPhiB = new Float_t[fNtS];
+ fPdgB = new Int_t [fNtS];
fTrackListB = new Int_t [fNtS];
fNtB = 0;
fPtB [fNtB] = fPtT [i];
fEtaB[fNtB] = fEtaT[i];
fPhiB[fNtB] = fPhiT[i];
+ fPdgB[fNtB] = fPdgT[i];
+
fTrackListB[fNtB] = 1;
fNtB++;
}
Float_t* ptT = new Float_t[nT0];
Float_t* etaT = new Float_t[nT0];
Float_t* phiT = new Float_t[nT0];
+ Int_t* pdgT = new Int_t[nT0];
+
Int_t iT = 0;
Int_t j;
ptT [j+1] = ptT [j];
etaT[j+1] = etaT[j];
phiT[j+1] = phiT[j];
+ pdgT[j+1] = pdgT[j];
}
ptT [index] = fPtT [part];
etaT[index] = fEtaT[part];
phiT[index] = fPhiT[part];
+ pdgT[index] = fPdgT[part];
iT++;
} // particle associated
if (iT > nT0) break;
ptT [j+1] = ptT [j];
etaT[j+1] = etaT[j];
phiT[j+1] = phiT[j];
+ pdgT[j+1] = pdgT[j];
}
ptT [index] = fPtB [part];
etaT[index] = fEtaB[part];
phiT[index] = fPhiB[part];
+ pdgT[index] = fPdgB[part];
iT++;
} // particle associated
if (iT > nT0) break;
} // particle loop
} // Background available ?
- fJetT[nj]->SetTrackList(nT0, ptT, etaT, phiT);
+ fJetT[nj]->SetTrackList(nT0, ptT, etaT, phiT, pdgT);
delete[] ptT;
delete[] etaT;
delete[] phiT;
+ delete[] pdgT;
+
} // jet loop loop
}
if (fPtT) delete[] fPtT;
if (fEtaT) delete[] fEtaT;
if (fPhiT) delete[] fPhiT;
+ if (fPdgT) delete[] fPdgT;
if(npart>0) {
fTrackList = new Int_t [npart];
fPtT = new Float_t[npart];
fEtaT = new Float_t[npart];
fPhiT = new Float_t[npart];
+ fPdgT = new Int_t[npart];
} else {
printf("AliEMCALJetFinder::RearrangeParticlesMemory : npart = %d\n", npart);
}