13 #include "AliAnalysisManager.h"
14 #include "AliInputEventHandler.h"
15 #include "AliVEvent.h"
16 #include "AliVTrack.h"
17 #include "AliVVertex.h"
18 #include "AliVMultiplicity.h"
21 #include "AliMCEvent.h"
22 #include "AliGenPythiaEventHeader.h"
26 #include "AliESDEvent.h"
27 #include "AliESDInputHandler.h"
28 #include "AliESDtrack.h"
29 #include "AliESDtrackCuts.h"
32 #include "AliAODEvent.h"
33 #include "AliAODJet.h"
34 #include "AliAODTrack.h"
60 fEtaMaxForEvshape(.9),
62 fShortTaskId(
"jets_evshape")
69 AliInfo(Form(
"creating output slot #%i",
kOutputTask));
81 AliInfo(
"creating output objects");
87 printf(
"setup jet container: %p, from available:\n",
fJetsCont);
113 histStat->GetXaxis()->SetBinLabel(
ID(
kStatTrg));
125 40, 0., 40., 100, 0., 500., 50, 0., 1.);
141 return AliAnalysisTaskEmcalJet::Notify();
148 AliAnalysisTaskEmcalJet::Terminate(option);
153 AliAnalysisTaskEmcalJet::PrintTask(option, indent);
155 std::cout << std::setw(indent) <<
" " <<
"nothing to say: " << std::endl;
176 printf(
"event: %s-%06i\n", CurrentFileName(),
fESDEvent->GetEventNumberInFile());
179 if (
fRunNumber != InputEvent()->GetRunNumber()) {
231 const AliVMultiplicity *mult = InputEvent()->GetMultiplicity();
232 const Int_t nTracklets =
233 stack ? stack->GetNprimary() :
234 mult ? mult->GetNumberOfTracklets() :
270 const AliVEvent *
event =
fUseMC ? MCEvent() : InputEvent();
273 const Int_t nTracksAll =
event ?
event->GetNumberOfTracks() : 0;
277 std::vector<TVector3> p;
278 for (
Int_t iTrack = 0; iTrack < nTracksAll; ++iTrack) {
279 AliVParticle *track =
event->GetTrack(iTrack);
280 if (
fUseMC && !MCEvent()->IsPhysicalPrimary(iTrack))
291 const Int_t nTracks = p.size();
295 Char_t *signmax = signset2;
303 for (
Int_t i = 0; i < nTracks; i++) {
305 for (
Int_t j = i+1; j < nTracks; j++) {
306 Pn = p[i].Cross(p[j]);
310 Pthrust.SetXYZ(0., 0., 0.);
311 for (
Int_t iTrack = 0; iTrack < nTracks; iTrack++) {
312 if ((iTrack == i) || (iTrack == j))
314 sign[iTrack] = (Pn.Dot(p[iTrack]) > 0) ? 1 : -1;
315 if (sign[iTrack] > 0)
316 Pthrust += p[iTrack];
318 Pthrust -= p[iTrack];
321 Ptemp[0] = Ptemp[1] = Ptemp[2] = Ptemp[3] = Pthrust;
322 Ptemp[0] += p[i]; Ptemp[0] -= p[j];
323 Ptemp[1] += p[i]; Ptemp[0] += p[j];
324 Ptemp[2] -= p[i]; Ptemp[0] -= p[j];
325 Ptemp[3] -= p[i]; Ptemp[0] += p[j];
329 for (
Int_t k = 0; k < 4; k++) {
330 if (Ptemp[k].
Mag() > thrustmaxtemp) {
332 thrustmaxtemp = Ptemp[k].Mag();
335 if (thrustmaxtemp > thrustmax) {
339 thrustmax = thrustmaxtemp;
354 const AliVEvent *
event =
fUseMC ? MCEvent() : InputEvent();
356 const Int_t nTracks =
event->GetNumberOfTracks();
363 for (
Int_t iTrack = 0; iTrack < nTracks; iTrack++) {
364 AliVParticle *part=
event->GetTrack(iTrack);
365 if (
fUseMC && !MCEvent()->IsPhysicalPrimary(iTrack))
371 const Float_t py = TMath::Sqrt(pt * pt - px * px);
372 smatrix[0] += px * px / pt;
373 smatrix[1] += px * py / pt;
374 smatrix[2] += py * py / pt;
384 Float_t lambda1 = ((smatrix[0] + smatrix[2]) + TMath::Sqrt((smatrix[0] + smatrix[2])*(smatrix[0] + smatrix[2]) - 4 * (smatrix[0] * smatrix[2] - smatrix[1] * smatrix[1]))) / 2;
385 Float_t lambda2 = ((smatrix[0] + smatrix[2]) - TMath::Sqrt((smatrix[0] + smatrix[2])*(smatrix[0] + smatrix[2]) - 4 * (smatrix[0] * smatrix[2] - smatrix[1] * smatrix[1]))) / 2;
387 if (TMath::Abs(lambda1 + lambda2) > 1.e-9) {
388 fSphericityT = 2. * TMath::Min(lambda1, lambda2) / (lambda1 + lambda2);
408 h =
new TH1F(hName.Data(),
title,
TH1 * AddHistogram(Hist_t hist, const char *hid, TString title, Int_t xbins, Float_t xmin, Float_t xmax, Int_t binType=1)
AliJetContainer * GetJetContainer(Int_t i=0) const
AliJetContainer * fJetsCont
virtual void UserCreateOutputObjects()
AliClusterContainer * GetClusterContainer() const
void FillH1(Hist_t hist, Float_t x, Float_t weight=1., Int_t idx=0)
virtual void PrintTask(Option_t *option, Int_t indent) const
const char * fShortTaskId
pointers to histogram
virtual void Terminate(const Option_t *option)
AliParticleContainer * GetParticleContainer(Int_t i=0) const
AliParticleContainer * GetParticleContainer() const
Bool_t CalculateSphericityT()
void FillH3(Hist_t hist, Float_t x, Float_t y, Float_t z, Float_t weight=1., Int_t idx=0)
AliClusterContainer * GetClusterContainer(Int_t i=0) const
AliClusterContainer * fCaloClustersCont
Tracks.
Double_t Mag(const AliVParticle &trk)
AliEmcalJet * GetNextAcceptJet()
TObjArray fJetCollArray
jet collection array
void UserExec(Option_t *option)
AliParticleContainer * fTracksCont
Jets.
TH1 *& GetHistogram(Hist_t hist, const Int_t idx=0)
short identifier for the task
AliAnalysisTaskJetsEvshape(const char *name="jets_trg_trd")
AliEmcalList * fOutput
!output list
void FillH2(Hist_t hist, Float_t x, Float_t y, Float_t weight=1., Int_t idx=0)
virtual Bool_t FillHistograms()
void SetMakeGeneralHistograms(Bool_t g)
Base task in the EMCAL jet framework.
virtual ~AliAnalysisTaskJetsEvshape()
Represent a jet reconstructed using the EMCal jet framework.
Float_t fEtaMaxForEvshape
void UserCreateOutputObjects()
virtual void UserExec(Option_t *option)
Bool_t PrepareEvent()
current run number
TList * OpenFile(const char *fname)