1 /*************************************************************************
3 * Task for Fragmentation Function Analysis in PWG4 Jet Task Force Train *
5 *************************************************************************/
8 /**************************************************************************
9 * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
11 * Author: The ALICE Off-line Project. *
12 * Contributors are mentioned in the code where appropriate. *
14 * Permission to use, copy, modify and distribute this software and its *
15 * documentation strictly for non-commercial purposes is hereby granted *
16 * without fee, provided that the above copyright notice appears in all *
17 * copies and that both the copyright notice and this permission notice *
18 * appear in the supporting documentation. The authors make no claims *
19 * about the suitability of this software for any purpose. It is *
20 * provided "as is" without express or implied warranty. *
21 **************************************************************************/
29 #include "THnSparse.h"
34 #include "AliAODInputHandler.h"
35 #include "AliAODHandler.h"
36 #include "AliESDEvent.h"
37 #include "AliAODMCParticle.h"
38 #include "AliAODJet.h"
39 #include "AliGenPythiaEventHeader.h"
40 #include "AliInputEventHandler.h"
42 #include "AliAnalysisHelperJetTasks.h"
43 #include "AliAnalysisManager.h"
44 #include "AliAnalysisTaskSE.h"
46 #include "AliAnalysisTaskFragmentationFunction.h"
49 ClassImp(AliAnalysisTaskFragmentationFunction)
51 //____________________________________________________________________________
52 AliAnalysisTaskFragmentationFunction::AliAnalysisTaskFragmentationFunction()
57 ,fBranchRecJets("jets")
63 ,fUsePhysicsSelection(kTRUE)
76 ,fDiJetPtFractionCut(0)
83 ,fTracksAODMCCharged(0)
84 ,fTracksRecQualityCuts(0)
90 ,fQATrackHistosRecCuts(0)
93 ,fQAJetHistosRecCuts(0)
94 ,fQAJetHistosRecCutsLeading(0)
96 ,fQAJetHistosGenLeading(0)
97 ,fQAJetHistosRecEffLeading(0)
99 ,fFFHistosRecLeading(0)
100 ,fFFHistosRecLeadingTrack(0)
102 ,fFFHistosGenLeading(0)
103 ,fFFHistosGenLeadingTrack(0)
105 ,fIJHistosRecLeading(0)
106 ,fIJHistosRecLeadingTrack(0)
108 ,fIJHistosGenLeading(0)
109 ,fIJHistosGenLeadingTrack(0)
110 ,fFFDiJetHistosRecCuts(0)
111 ,fFFDiJetHistosRecLeading(0)
112 ,fFFDiJetHistosRecLeadingTrack(0)
113 ,fFFDiJetHistosGen(0)
114 ,fFFDiJetHistosGenLeading(0)
115 ,fFFDiJetHistosGenLeadingTrack(0)
116 ,fQADiJetHistosRecCuts(0)
117 ,fQADiJetHistosGen(0)
118 ,fQATrackHighPtThreshold(0)
167 ,fDiJetNBinsJetInvMass(0)
168 ,fDiJetJetInvMassMin(0)
169 ,fDiJetJetInvMassMax(0)
182 ,fQADiJetNBinsInvMass(0)
183 ,fQADiJetInvMassMin(0)
184 ,fQADiJetInvMassMax(0)
185 ,fQADiJetNBinsJetPt(0)
188 ,fQADiJetNBinsDeltaPhi(0)
189 ,fQADiJetDeltaPhiMin(0)
190 ,fQADiJetDeltaPhiMax(0)
191 ,fQADiJetNBinsDeltaEta(0)
192 ,fQADiJetDeltaEtaMin(0)
193 ,fQADiJetDeltaEtaMax(0)
194 ,fQADiJetNBinsDeltaPt(0)
195 ,fQADiJetDeltaPtMin(0)
196 ,fQADiJetDeltaPtMax(0)
199 ,fh1VertexNContributors(0)
209 ,fhnSingleTrackRecEffHisto(0)
210 ,fhnJetTrackRecEffHisto(0)
212 // default constructor
215 //__________________________________________________________________________________________
216 AliAnalysisTaskFragmentationFunction::AliAnalysisTaskFragmentationFunction(const char *name)
217 : AliAnalysisTaskSE(name)
221 ,fBranchRecJets("jets")
227 ,fUsePhysicsSelection(kTRUE)
239 ,fDiJetDeltaPhiCut(0)
240 ,fDiJetPtFractionCut(0)
247 ,fTracksAODMCCharged(0)
248 ,fTracksRecQualityCuts(0)
253 ,fQATrackHistosRec(0)
254 ,fQATrackHistosRecCuts(0)
255 ,fQATrackHistosGen(0)
257 ,fQAJetHistosRecCuts(0)
258 ,fQAJetHistosRecCutsLeading(0)
260 ,fQAJetHistosGenLeading(0)
261 ,fQAJetHistosRecEffLeading(0)
263 ,fFFHistosRecLeading(0)
264 ,fFFHistosRecLeadingTrack(0)
266 ,fFFHistosGenLeading(0)
267 ,fFFHistosGenLeadingTrack(0)
269 ,fIJHistosRecLeading(0)
270 ,fIJHistosRecLeadingTrack(0)
272 ,fIJHistosGenLeading(0)
273 ,fIJHistosGenLeadingTrack(0)
274 ,fFFDiJetHistosRecCuts(0)
275 ,fFFDiJetHistosRecLeading(0)
276 ,fFFDiJetHistosRecLeadingTrack(0)
277 ,fFFDiJetHistosGen(0)
278 ,fFFDiJetHistosGenLeading(0)
279 ,fFFDiJetHistosGenLeadingTrack(0)
280 ,fQADiJetHistosRecCuts(0)
281 ,fQADiJetHistosGen(0)
282 ,fQATrackHighPtThreshold(0)
331 ,fDiJetNBinsJetInvMass(0)
332 ,fDiJetJetInvMassMin(0)
333 ,fDiJetJetInvMassMax(0)
346 ,fQADiJetNBinsInvMass(0)
347 ,fQADiJetInvMassMin(0)
348 ,fQADiJetInvMassMax(0)
349 ,fQADiJetNBinsJetPt(0)
352 ,fQADiJetNBinsDeltaPhi(0)
353 ,fQADiJetDeltaPhiMin(0)
354 ,fQADiJetDeltaPhiMax(0)
355 ,fQADiJetNBinsDeltaEta(0)
356 ,fQADiJetDeltaEtaMin(0)
357 ,fQADiJetDeltaEtaMax(0)
358 ,fQADiJetNBinsDeltaPt(0)
359 ,fQADiJetDeltaPtMin(0)
360 ,fQADiJetDeltaPtMax(0)
363 ,fh1VertexNContributors(0)
373 ,fhnSingleTrackRecEffHisto(0)
374 ,fhnJetTrackRecEffHisto(0)
378 DefineOutput(1,TList::Class());
383 //__________________________________________________________________________________________________________________________
384 AliAnalysisTaskFragmentationFunction::AliAnalysisTaskFragmentationFunction(const AliAnalysisTaskFragmentationFunction ©)
385 : AliAnalysisTaskSE()
388 ,fMCEvent(copy.fMCEvent)
389 ,fBranchRecJets(copy.fBranchRecJets)
390 ,fBranchGenJets(copy.fBranchGenJets)
391 ,fTrackTypeGen(copy.fTrackTypeGen)
392 ,fJetTypeGen(copy.fJetTypeGen)
393 ,fJetTypeRecEff(copy.fJetTypeRecEff)
394 ,fFilterMask(copy.fFilterMask)
395 ,fUsePhysicsSelection(copy.fUsePhysicsSelection)
396 ,fTrackPtCut(copy.fTrackPtCut)
397 ,fTrackEtaMin(copy.fTrackEtaMin)
398 ,fTrackEtaMax(copy.fTrackEtaMax)
399 ,fTrackPhiMin(copy.fTrackPhiMin)
400 ,fTrackPhiMax(copy.fTrackPhiMax)
401 ,fJetPtCut(copy.fJetPtCut)
402 ,fJetEtaMin(copy.fJetEtaMin)
403 ,fJetEtaMax(copy.fJetEtaMax)
404 ,fJetPhiMin(copy.fJetPhiMin)
405 ,fJetPhiMax(copy.fJetPhiMax)
406 ,fDiJetCut(copy.fDiJetCut)
407 ,fDiJetDeltaPhiCut(copy.fDiJetDeltaPhiCut)
408 ,fDiJetPtFractionCut(copy.fDiJetPtFractionCut)
409 ,fDiJetCDFCut(copy.fDiJetCDFCut)
410 ,fDiJetKindBins(copy.fDiJetKindBins)
411 ,fFFRadius(copy.fFFRadius)
412 ,fTracksRec(copy.fTracksRec)
413 ,fTracksRecCuts(copy.fTracksRecCuts)
414 ,fTracksGen(copy.fTracksGen)
415 ,fTracksAODMCCharged(copy.fTracksAODMCCharged)
416 ,fTracksRecQualityCuts(copy.fTracksRecQualityCuts)
417 ,fJetsRec(copy.fJetsRec)
418 ,fJetsRecCuts(copy.fJetsRecCuts)
419 ,fJetsGen(copy.fJetsGen)
420 ,fJetsRecEff(copy.fJetsRecEff)
421 ,fQATrackHistosRec(copy.fQATrackHistosRec)
422 ,fQATrackHistosRecCuts(copy.fQATrackHistosRecCuts)
423 ,fQATrackHistosGen(copy.fQATrackHistosGen)
424 ,fQAJetHistosRec(copy.fQAJetHistosRec)
425 ,fQAJetHistosRecCuts(copy.fQAJetHistosRecCuts)
426 ,fQAJetHistosRecCutsLeading(copy.fQAJetHistosRecCutsLeading)
427 ,fQAJetHistosGen(copy.fQAJetHistosGen)
428 ,fQAJetHistosGenLeading(copy.fQAJetHistosGenLeading)
429 ,fQAJetHistosRecEffLeading(copy.fQAJetHistosRecEffLeading)
430 ,fFFHistosRecCuts(copy.fFFHistosRecCuts)
431 ,fFFHistosRecLeading(copy.fFFHistosRecLeading)
432 ,fFFHistosRecLeadingTrack(copy.fFFHistosRecLeadingTrack)
433 ,fFFHistosGen(copy.fFFHistosGen)
434 ,fFFHistosGenLeading(copy.fFFHistosGenLeading)
435 ,fFFHistosGenLeadingTrack(copy.fFFHistosGenLeadingTrack)
436 ,fIJHistosRecCuts(copy.fIJHistosRecCuts)
437 ,fIJHistosRecLeading(copy.fIJHistosRecLeading)
438 ,fIJHistosRecLeadingTrack(copy.fIJHistosRecLeadingTrack)
439 ,fIJHistosGen(copy.fIJHistosGen)
440 ,fIJHistosGenLeading(copy.fIJHistosGenLeading)
441 ,fIJHistosGenLeadingTrack(copy.fIJHistosGenLeadingTrack)
442 ,fFFDiJetHistosRecCuts(copy.fFFDiJetHistosRecCuts)
443 ,fFFDiJetHistosRecLeading(copy.fFFDiJetHistosRecLeading)
444 ,fFFDiJetHistosRecLeadingTrack(copy.fFFDiJetHistosRecLeadingTrack)
445 ,fFFDiJetHistosGen(copy.fFFDiJetHistosGen)
446 ,fFFDiJetHistosGenLeading(copy.fFFDiJetHistosGenLeading)
447 ,fFFDiJetHistosGenLeadingTrack(copy.fFFDiJetHistosGenLeadingTrack)
448 ,fQADiJetHistosRecCuts(copy.fQADiJetHistosRecCuts)
449 ,fQADiJetHistosGen(copy.fQADiJetHistosGen)
450 ,fQATrackHighPtThreshold(copy.fQATrackHighPtThreshold)
451 ,fFFNBinsJetPt(copy.fFFNBinsJetPt)
452 ,fFFJetPtMin(copy.fFFJetPtMin)
453 ,fFFJetPtMax(copy.fFFJetPtMax)
454 ,fFFNBinsPt(copy.fFFNBinsPt)
455 ,fFFPtMin(copy.fFFPtMin)
456 ,fFFPtMax(copy.fFFPtMax)
457 ,fFFNBinsXi(copy.fFFNBinsXi)
458 ,fFFXiMin(copy.fFFXiMin)
459 ,fFFXiMax(copy.fFFXiMax)
460 ,fFFNBinsZ(copy.fFFNBinsZ)
461 ,fFFZMin(copy.fFFZMin)
462 ,fFFZMax(copy.fFFZMax)
463 ,fQAJetNBinsPt(copy.fQAJetNBinsPt)
464 ,fQAJetPtMin(copy.fQAJetPtMin)
465 ,fQAJetPtMax(copy.fQAJetPtMax)
466 ,fQAJetNBinsEta(copy.fQAJetNBinsEta)
467 ,fQAJetEtaMin(copy.fQAJetEtaMin)
468 ,fQAJetEtaMax(copy.fQAJetEtaMax)
469 ,fQAJetNBinsPhi(copy.fQAJetNBinsPhi)
470 ,fQAJetPhiMin(copy.fQAJetPhiMin)
471 ,fQAJetPhiMax(copy.fQAJetPhiMax)
472 ,fQATrackNBinsPt(copy.fQATrackNBinsPt)
473 ,fQATrackPtMin(copy.fQATrackPtMin)
474 ,fQATrackPtMax(copy.fQATrackPtMax)
475 ,fQATrackNBinsEta(copy.fQATrackNBinsEta)
476 ,fQATrackEtaMin(copy.fQATrackEtaMin)
477 ,fQATrackEtaMax(copy.fQATrackEtaMax)
478 ,fQATrackNBinsPhi(copy.fQATrackNBinsPhi)
479 ,fQATrackPhiMin(copy.fQATrackPhiMin)
480 ,fQATrackPhiMax(copy.fQATrackPhiMax)
481 ,fIJNBinsJetPt(copy.fIJNBinsJetPt)
482 ,fIJJetPtMin(copy.fIJJetPtMin)
483 ,fIJJetPtMax(copy.fIJJetPtMax)
484 ,fIJNBinsPt(copy.fIJNBinsPt)
485 ,fIJPtMin(copy.fIJPtMin)
486 ,fIJPtMax(copy.fIJPtMax)
487 ,fIJNBinsZ(copy.fIJNBinsZ)
488 ,fIJZMin(copy.fIJZMin)
489 ,fIJZMax(copy.fIJZMax)
490 ,fIJNBinsCosTheta(copy.fIJNBinsCosTheta)
491 ,fIJCosThetaMin(copy.fIJCosThetaMin)
492 ,fIJCosThetaMax(copy.fIJCosThetaMax)
493 ,fIJNBinsTheta(copy.fIJNBinsTheta)
494 ,fIJThetaMin(copy.fIJThetaMin)
495 ,fIJThetaMax(copy.fIJThetaMax)
496 ,fIJNBinsJt(copy.fIJNBinsJt)
497 ,fIJJtMin(copy.fIJJtMin)
498 ,fIJJtMax(copy.fIJJtMax)
499 ,fDiJetNBinsJetInvMass(copy.fDiJetNBinsJetInvMass)
500 ,fDiJetJetInvMassMin(copy.fDiJetJetInvMassMin)
501 ,fDiJetJetInvMassMax(copy.fDiJetJetInvMassMax)
502 ,fDiJetNBinsJetPt(copy.fDiJetNBinsJetPt)
503 ,fDiJetJetPtMin(copy.fDiJetJetPtMin)
504 ,fDiJetJetPtMax(copy.fDiJetJetPtMax)
505 ,fDiJetNBinsPt(copy.fDiJetNBinsPt)
506 ,fDiJetPtMin(copy.fDiJetPtMin)
507 ,fDiJetPtMax(copy.fDiJetPtMax)
508 ,fDiJetNBinsXi(copy.fDiJetNBinsXi)
509 ,fDiJetXiMin(copy.fDiJetXiMin)
510 ,fDiJetXiMax(copy.fDiJetXiMax)
511 ,fDiJetNBinsZ(copy.fDiJetNBinsZ)
512 ,fDiJetZMin(copy.fDiJetZMin)
513 ,fDiJetZMax(copy.fDiJetZMax)
514 ,fQADiJetNBinsInvMass(copy.fQADiJetNBinsInvMass)
515 ,fQADiJetInvMassMin(copy.fQADiJetInvMassMin)
516 ,fQADiJetInvMassMax(copy.fQADiJetInvMassMax)
517 ,fQADiJetNBinsJetPt(copy.fQADiJetNBinsJetPt)
518 ,fQADiJetJetPtMin(copy.fQADiJetJetPtMin)
519 ,fQADiJetJetPtMax(copy.fQADiJetJetPtMax)
520 ,fQADiJetNBinsDeltaPhi(copy.fQADiJetNBinsDeltaPhi)
521 ,fQADiJetDeltaPhiMin(copy.fQADiJetDeltaPhiMin)
522 ,fQADiJetDeltaPhiMax(copy.fQADiJetDeltaPhiMax)
523 ,fQADiJetNBinsDeltaEta(copy.fQADiJetNBinsDeltaEta)
524 ,fQADiJetDeltaEtaMin(copy.fQADiJetDeltaEtaMin)
525 ,fQADiJetDeltaEtaMax(copy.fQADiJetDeltaEtaMax)
526 ,fQADiJetNBinsDeltaPt(copy.fQADiJetNBinsDeltaPt)
527 ,fQADiJetDeltaPtMin(copy.fQADiJetDeltaPtMin)
528 ,fQADiJetDeltaPtMax(copy.fQADiJetDeltaPtMax)
529 ,fCommonHistList(copy.fCommonHistList)
530 ,fh1EvtSelection(copy.fh1EvtSelection)
531 ,fh1VertexNContributors(copy.fh1VertexNContributors)
532 ,fh1VertexZ(copy.fh1VertexZ)
533 ,fh1EvtMult(copy.fh1EvtMult)
534 ,fh1Xsec(copy.fh1Xsec)
535 ,fh1Trials(copy.fh1Trials)
536 ,fh1PtHard(copy.fh1PtHard)
537 ,fh1PtHardTrials(copy.fh1PtHardTrials)
538 ,fh1nRecJetsCuts(copy.fh1nRecJetsCuts)
539 ,fh1nGenJets(copy.fh1nGenJets)
540 ,fh1nRecEffJets(copy.fh1nRecEffJets)
541 ,fhnSingleTrackRecEffHisto(copy.fhnSingleTrackRecEffHisto)
542 ,fhnJetTrackRecEffHisto(copy.fhnJetTrackRecEffHisto)
548 // _________________________________________________________________________________________________________________________________
549 AliAnalysisTaskFragmentationFunction& AliAnalysisTaskFragmentationFunction::operator=(const AliAnalysisTaskFragmentationFunction& o)
555 AliAnalysisTaskSE::operator=(o);
558 fMCEvent = o.fMCEvent;
559 fBranchRecJets = o.fBranchRecJets;
560 fBranchGenJets = o.fBranchGenJets;
561 fTrackTypeGen = o.fTrackTypeGen;
562 fJetTypeGen = o.fJetTypeGen;
563 fJetTypeRecEff = o.fJetTypeRecEff;
564 fFilterMask = o.fFilterMask;
565 fUsePhysicsSelection = o.fUsePhysicsSelection;
566 fTrackPtCut = o.fTrackPtCut;
567 fTrackEtaMin = o.fTrackEtaMin;
568 fTrackEtaMax = o.fTrackEtaMax;
569 fTrackPhiMin = o.fTrackPhiMin;
570 fTrackPhiMax = o.fTrackPhiMax;
571 fJetPtCut = o.fJetPtCut;
572 fJetEtaMin = o.fJetEtaMin;
573 fJetEtaMax = o.fJetEtaMax;
574 fJetPhiMin = o.fJetPhiMin;
575 fJetPhiMax = o.fJetPhiMin;
576 fDiJetCut = o.fDiJetCut;
577 fDiJetDeltaPhiCut = o.fDiJetDeltaPhiCut;
578 fDiJetPtFractionCut = o.fDiJetPtFractionCut;
579 fDiJetCDFCut = o.fDiJetCDFCut;
580 fDiJetKindBins = o.fDiJetKindBins;
581 fFFRadius = o.fFFRadius;
582 fTracksRec = o.fTracksRec;
583 fTracksRecCuts = o.fTracksRecCuts;
584 fTracksGen = o.fTracksGen;
585 fTracksAODMCCharged = o.fTracksAODMCCharged;
586 fTracksRecQualityCuts = o.fTracksRecQualityCuts;
587 fJetsRec = o.fJetsRec;
588 fJetsRecCuts = o.fJetsRecCuts;
589 fJetsGen = o.fJetsGen;
590 fJetsRecEff = o.fJetsRecEff;
591 fQATrackHistosRec = o.fQATrackHistosRec;
592 fQATrackHistosRecCuts = o.fQATrackHistosRecCuts;
593 fQATrackHistosGen = o.fQATrackHistosGen;
594 fQAJetHistosRec = o.fQAJetHistosRec;
595 fQAJetHistosRecCuts = o.fQAJetHistosRecCuts;
596 fQAJetHistosRecCutsLeading = o.fQAJetHistosRecCutsLeading;
597 fQAJetHistosGen = o.fQAJetHistosGen;
598 fQAJetHistosGenLeading = o.fQAJetHistosGenLeading;
599 fQAJetHistosRecEffLeading = o.fQAJetHistosRecEffLeading;
600 fFFHistosRecCuts = o.fFFHistosRecCuts;
601 fFFHistosRecLeading = o.fFFHistosRecLeading;
602 fFFHistosRecLeadingTrack = o.fFFHistosRecLeadingTrack;
603 fFFHistosGen = o.fFFHistosGen;
604 fFFHistosGenLeading = o.fFFHistosGenLeading;
605 fFFHistosGenLeadingTrack = o.fFFHistosGenLeadingTrack;
606 fIJHistosRecCuts = o.fIJHistosRecCuts;
607 fIJHistosRecLeading = o.fIJHistosRecLeading;
608 fIJHistosRecLeadingTrack = o.fIJHistosRecLeadingTrack;
609 fIJHistosGen = o.fIJHistosGen;
610 fIJHistosGenLeading = o.fIJHistosGenLeading;
611 fIJHistosGenLeadingTrack = o.fIJHistosGenLeadingTrack;
612 fFFDiJetHistosRecCuts = o.fFFDiJetHistosRecCuts;
613 fFFDiJetHistosRecLeading = o.fFFDiJetHistosRecLeading;
614 fFFDiJetHistosRecLeadingTrack = o.fFFDiJetHistosRecLeadingTrack;
615 fFFDiJetHistosGen = o.fFFDiJetHistosGen;
616 fFFDiJetHistosGenLeading = o.fFFDiJetHistosGenLeading;
617 fFFDiJetHistosGenLeadingTrack = o.fFFDiJetHistosGenLeadingTrack;
618 fQADiJetHistosRecCuts = o.fQADiJetHistosRecCuts;
619 fQADiJetHistosGen = o.fQADiJetHistosGen;
620 fQATrackHighPtThreshold = o.fQATrackHighPtThreshold;
621 fFFNBinsJetPt = o.fFFNBinsJetPt;
622 fFFJetPtMin = o.fFFJetPtMin;
623 fFFJetPtMax = o.fFFJetPtMax;
624 fFFNBinsPt = o.fFFNBinsPt;
625 fFFPtMin = o.fFFPtMin;
626 fFFPtMax = o.fFFPtMax;
627 fFFNBinsXi = o.fFFNBinsXi;
628 fFFXiMin = o.fFFXiMin;
629 fFFXiMax = o.fFFXiMax;
630 fFFNBinsZ = o.fFFNBinsZ;
633 fQAJetNBinsPt = o.fQAJetNBinsPt;
634 fQAJetPtMin = o.fQAJetPtMin;
635 fQAJetPtMax = o.fQAJetPtMax;
636 fQAJetNBinsEta = o.fQAJetNBinsEta;
637 fQAJetEtaMin = o.fQAJetEtaMin;
638 fQAJetEtaMax = o.fQAJetEtaMax;
639 fQAJetNBinsPhi = o.fQAJetNBinsPhi;
640 fQAJetPhiMin = o.fQAJetPhiMin;
641 fQAJetPhiMax = o.fQAJetPhiMax;
642 fQATrackNBinsPt = o.fQATrackNBinsPt;
643 fQATrackPtMin = o.fQATrackPtMin;
644 fQATrackPtMax = o.fQATrackPtMax;
645 fQATrackNBinsEta = o.fQATrackNBinsEta;
646 fQATrackEtaMin = o.fQATrackEtaMin;
647 fQATrackEtaMax = o.fQATrackEtaMax;
648 fQATrackNBinsPhi = o.fQATrackNBinsPhi;
649 fQATrackPhiMin = o.fQATrackPhiMin;
650 fQATrackPhiMax = o.fQATrackPhiMax;
651 fIJNBinsJetPt = o.fIJNBinsJetPt;
652 fIJJetPtMin = o.fIJJetPtMin;
653 fIJJetPtMax = o.fIJJetPtMax;
654 fIJNBinsPt = o.fIJNBinsPt;
655 fIJPtMin = o.fIJPtMin;
656 fIJPtMax = o.fIJPtMax;
657 fIJNBinsZ = o.fIJNBinsZ;
660 fIJNBinsCosTheta = o.fIJNBinsCosTheta;
661 fIJCosThetaMin = o.fIJCosThetaMin;
662 fIJCosThetaMax = o.fIJCosThetaMax;
663 fIJNBinsTheta = o.fIJNBinsTheta;
664 fIJThetaMin = o.fIJThetaMin;
665 fIJThetaMax = o.fIJThetaMax;
666 fIJNBinsJt = o.fIJNBinsJt;
667 fIJJtMin = o.fIJJtMin;
668 fIJJtMax = o.fIJJtMax;
669 fDiJetNBinsJetInvMass = o.fDiJetNBinsJetInvMass;
670 fDiJetJetInvMassMin = o.fDiJetJetInvMassMin;
671 fDiJetJetInvMassMax = o.fDiJetJetInvMassMax;
672 fDiJetNBinsJetPt = o.fDiJetNBinsJetPt;
673 fDiJetJetPtMin = o.fDiJetJetPtMin;
674 fDiJetJetPtMax = o.fDiJetJetPtMax;
675 fDiJetNBinsPt = o.fDiJetNBinsPt;
676 fDiJetPtMin = o.fDiJetPtMin;
677 fDiJetPtMax = o.fDiJetPtMax;
678 fDiJetNBinsXi = o.fDiJetNBinsXi;
679 fDiJetXiMin = o.fDiJetXiMin;
680 fDiJetXiMax = o.fDiJetXiMax;
681 fDiJetNBinsZ = o.fDiJetNBinsZ;
682 fDiJetZMin = o.fDiJetZMin;
683 fDiJetZMax = o.fDiJetZMax;
684 fQADiJetNBinsInvMass = o.fQADiJetNBinsInvMass;
685 fQADiJetInvMassMin = o.fQADiJetInvMassMin;
686 fQADiJetInvMassMax = o.fQADiJetInvMassMax;
687 fQADiJetNBinsJetPt = o.fQADiJetNBinsJetPt;
688 fQADiJetJetPtMin = o.fQADiJetJetPtMin;
689 fQADiJetJetPtMax = o.fQADiJetJetPtMax;
690 fQADiJetNBinsDeltaPhi = o.fQADiJetNBinsDeltaPhi;
691 fQADiJetDeltaPhiMin = o.fQADiJetDeltaPhiMin;
692 fQADiJetDeltaPhiMax = o.fQADiJetDeltaPhiMax;
693 fQADiJetNBinsDeltaEta = o.fQADiJetNBinsDeltaEta;
694 fQADiJetDeltaEtaMin = o.fQADiJetDeltaEtaMin;
695 fQADiJetDeltaEtaMax = o.fQADiJetDeltaEtaMax;
696 fQADiJetNBinsDeltaPt = o.fQADiJetNBinsDeltaPt;
697 fQADiJetDeltaPtMin = o.fQADiJetDeltaPtMin;
698 fQADiJetDeltaPtMax = o.fQADiJetDeltaPtMax;
699 fCommonHistList = o.fCommonHistList;
700 fh1EvtSelection = o.fh1EvtSelection;
701 fh1VertexNContributors = o.fh1VertexNContributors;
702 fh1VertexZ = o.fh1VertexZ;
703 fh1EvtMult = o.fh1EvtMult;
705 fh1Trials = o.fh1Trials;
706 fh1PtHard = o.fh1PtHard;
707 fh1PtHardTrials = o.fh1PtHardTrials;
708 fh1nRecJetsCuts = o.fh1nRecJetsCuts;
709 fh1nGenJets = o.fh1nGenJets;
710 fh1nRecEffJets = o.fh1nRecEffJets;
711 fhnSingleTrackRecEffHisto = o.fhnSingleTrackRecEffHisto;
712 fhnJetTrackRecEffHisto = o.fhnJetTrackRecEffHisto;
718 //___________________________________________________________________________
719 AliAnalysisTaskFragmentationFunction::~AliAnalysisTaskFragmentationFunction()
723 if(fTracksRec) delete fTracksRec;
724 if(fTracksRecCuts) delete fTracksRecCuts;
725 if(fTracksGen) delete fTracksGen;
726 if(fTracksAODMCCharged) delete fTracksAODMCCharged;
727 if(fTracksRecQualityCuts) delete fTracksRecQualityCuts;
728 if(fJetsRec) delete fJetsRec;
729 if(fJetsRecCuts) delete fJetsRecCuts;
730 if(fJetsGen) delete fJetsGen;
731 if(fJetsRecEff) delete fJetsRecEff;
733 // if(fDiJetBins) delete fDiJetBins;
737 //______________________________________________________________________________________________________
738 AliAnalysisTaskFragmentationFunction::AliFragFuncHistos::AliFragFuncHistos(const char* name,
739 Int_t nJetPt, Float_t jetPtMin, Float_t jetPtMax,
740 Int_t nPt, Float_t ptMin, Float_t ptMax,
741 Int_t nXi, Float_t xiMin, Float_t xiMax,
742 Int_t nZ , Float_t zMin , Float_t zMax )
762 // default constructor
766 //___________________________________________________________________________
767 AliAnalysisTaskFragmentationFunction::AliFragFuncHistos::AliFragFuncHistos(const AliFragFuncHistos& copy)
769 ,fNBinsJetPt(copy.fNBinsJetPt)
770 ,fJetPtMin(copy.fJetPtMin)
771 ,fJetPtMax(copy.fJetPtMax)
772 ,fNBinsPt(copy.fNBinsPt)
775 ,fNBinsXi(copy.fNBinsXi)
778 ,fNBinsZ(copy.fNBinsZ)
781 ,fh2TrackPt(copy.fh2TrackPt)
784 ,fh1JetPt(copy.fh1JetPt)
790 //_______________________________________________________________________________________________________________________________________________________________
791 AliAnalysisTaskFragmentationFunction::AliFragFuncHistos& AliAnalysisTaskFragmentationFunction::AliFragFuncHistos::operator=(const AliAnalysisTaskFragmentationFunction::AliFragFuncHistos& o)
796 TObject::operator=(o);
797 fNBinsJetPt = o.fNBinsJetPt;
798 fJetPtMin = o.fJetPtMin;
799 fJetPtMax = o.fJetPtMax;
800 fNBinsPt = o.fNBinsPt;
803 fNBinsXi = o.fNBinsXi;
809 fh2TrackPt = o.fh2TrackPt;
812 fh1JetPt = o.fh1JetPt;
819 //_________________________________________________________
820 AliAnalysisTaskFragmentationFunction::AliFragFuncHistos::~AliFragFuncHistos()
824 if(fh1JetPt) delete fh1JetPt;
825 if(fh2TrackPt) delete fh2TrackPt;
826 if(fh2Xi) delete fh2Xi;
827 if(fh2Z) delete fh2Z;
830 //_________________________________________________________________
831 void AliAnalysisTaskFragmentationFunction::AliFragFuncHistos::DefineHistos()
835 fh1JetPt = new TH1F(Form("fh1FFJetPt%s", fName.Data()),"",fNBinsJetPt,fJetPtMin,fJetPtMax);
836 fh2TrackPt = new TH2F(Form("fh2FFTrackPt%s",fName.Data()),"",fNBinsJetPt, fJetPtMin, fJetPtMax,fNBinsPt, fPtMin, fPtMax);
837 fh2Xi = new TH2F(Form("fh2FFXi%s",fName.Data()),"",fNBinsJetPt, fJetPtMin, fJetPtMax, fNBinsXi, fXiMin, fXiMax);
838 fh2Z = new TH2F(Form("fh2FFZ%s",fName.Data()),"",fNBinsJetPt, fJetPtMin, fJetPtMax, fNBinsZ, fZMin, fZMax);
840 AliAnalysisTaskFragmentationFunction::SetProperties(fh1JetPt, "p_{T} [GeV/c]", "entries");
841 AliAnalysisTaskFragmentationFunction::SetProperties(fh2TrackPt,"jet p_{T} [GeV/c]","p_{T} [GeV/c]","entries");
842 AliAnalysisTaskFragmentationFunction::SetProperties(fh2Xi,"jet p_{T} [GeV/c]","#xi", "entries");
843 AliAnalysisTaskFragmentationFunction::SetProperties(fh2Z,"jet p_{T} [GeV/c]","z","entries");
846 //_______________________________________________________________________________________________________________
847 void AliAnalysisTaskFragmentationFunction::AliFragFuncHistos::FillFF(Float_t trackPt, Float_t jetPt, Bool_t incrementJetPt)
851 if(incrementJetPt) fh1JetPt->Fill(jetPt);
852 fh2TrackPt->Fill(jetPt,trackPt);
855 if(jetPt>0) z = trackPt / jetPt;
857 if(z>0) xi = TMath::Log(1/z);
859 fh2Xi->Fill(jetPt,xi);
863 //_________________________________________________________________________________
864 void AliAnalysisTaskFragmentationFunction::AliFragFuncHistos::AddToOutput(TList* list) const
866 // add histos to list
870 list->Add(fh2TrackPt);
875 //_________________________________________________________________________________________________________
876 AliAnalysisTaskFragmentationFunction::AliFragFuncQAJetHistos::AliFragFuncQAJetHistos(const char* name,
877 Int_t nPt, Float_t ptMin, Float_t ptMax,
878 Int_t nEta, Float_t etaMin, Float_t etaMax,
879 Int_t nPhi, Float_t phiMin, Float_t phiMax)
894 // default constructor
897 //____________________________________________________________________________________
898 AliAnalysisTaskFragmentationFunction::AliFragFuncQAJetHistos::AliFragFuncQAJetHistos(const AliFragFuncQAJetHistos& copy)
900 ,fNBinsPt(copy.fNBinsPt)
903 ,fNBinsEta(copy.fNBinsEta)
904 ,fEtaMin(copy.fEtaMin)
905 ,fEtaMax(copy.fEtaMax)
906 ,fNBinsPhi(copy.fNBinsPhi)
907 ,fPhiMin(copy.fPhiMin)
908 ,fPhiMax(copy.fPhiMax)
909 ,fh2EtaPhi(copy.fh2EtaPhi)
916 //________________________________________________________________________________________________________________________________________________________________________
917 AliAnalysisTaskFragmentationFunction::AliFragFuncQAJetHistos& AliAnalysisTaskFragmentationFunction::AliFragFuncQAJetHistos::operator=(const AliAnalysisTaskFragmentationFunction::AliFragFuncQAJetHistos& o)
922 TObject::operator=(o);
923 fNBinsPt = o.fNBinsPt;
926 fNBinsEta = o.fNBinsEta;
929 fNBinsPhi = o.fNBinsPhi;
932 fh2EtaPhi = o.fh2EtaPhi;
940 //______________________________________________________________
941 AliAnalysisTaskFragmentationFunction::AliFragFuncQAJetHistos::~AliFragFuncQAJetHistos()
945 if(fh2EtaPhi) delete fh2EtaPhi;
946 if(fh1Pt) delete fh1Pt;
949 //____________________________________________________________________
950 void AliAnalysisTaskFragmentationFunction::AliFragFuncQAJetHistos::DefineHistos()
952 // book jet QA histos
954 fh2EtaPhi = new TH2F(Form("fh2JetQAEtaPhi%s", fName.Data()), Form("%s: #eta - #phi distribution", fName.Data()), fNBinsEta, fEtaMin, fEtaMax, fNBinsPhi, fPhiMin, fPhiMax);
955 fh1Pt = new TH1F(Form("fh1JetQAPt%s", fName.Data()), Form("%s: p_{T} distribution", fName.Data()), fNBinsPt, fPtMin, fPtMax);
957 AliAnalysisTaskFragmentationFunction::SetProperties(fh2EtaPhi, "#eta", "#phi");
958 AliAnalysisTaskFragmentationFunction::SetProperties(fh1Pt, "p_{T} [GeV/c]", "entries");
961 //____________________________________________________________________________________________________
962 void AliAnalysisTaskFragmentationFunction::AliFragFuncQAJetHistos::FillJetQA(Float_t eta, Float_t phi, Float_t pt)
964 // fill jet QA histos
966 fh2EtaPhi->Fill( eta, phi);
970 //____________________________________________________________________________________
971 void AliAnalysisTaskFragmentationFunction::AliFragFuncQAJetHistos::AddToOutput(TList* list) const
973 // add histos to list
975 list->Add(fh2EtaPhi);
979 //___________________________________________________________________________________________________________
980 AliAnalysisTaskFragmentationFunction::AliFragFuncQATrackHistos::AliFragFuncQATrackHistos(const char* name,
981 Int_t nPt, Float_t ptMin, Float_t ptMax,
982 Int_t nEta, Float_t etaMin, Float_t etaMax,
983 Int_t nPhi, Float_t phiMin, Float_t phiMax,
995 ,fHighPtThreshold(ptThresh)
1001 // default constructor
1004 //__________________________________________________________________________________________
1005 AliAnalysisTaskFragmentationFunction::AliFragFuncQATrackHistos::AliFragFuncQATrackHistos(const AliFragFuncQATrackHistos& copy)
1007 ,fNBinsPt(copy.fNBinsPt)
1008 ,fPtMin(copy.fPtMin)
1009 ,fPtMax(copy.fPtMax)
1010 ,fNBinsEta(copy.fNBinsEta)
1011 ,fEtaMin(copy.fEtaMin)
1012 ,fEtaMax(copy.fEtaMax)
1013 ,fNBinsPhi(copy.fNBinsPhi)
1014 ,fPhiMin(copy.fPhiMin)
1015 ,fPhiMax(copy.fPhiMax)
1016 ,fHighPtThreshold(copy.fHighPtThreshold)
1017 ,fh2EtaPhi(copy.fh2EtaPhi)
1019 ,fh2HighPtEtaPhi(copy.fh2HighPtEtaPhi)
1025 // _____________________________________________________________________________________________________________________________________________________________________________
1026 AliAnalysisTaskFragmentationFunction::AliFragFuncQATrackHistos& AliAnalysisTaskFragmentationFunction::AliFragFuncQATrackHistos::operator=(const AliAnalysisTaskFragmentationFunction::AliFragFuncQATrackHistos& o)
1031 TObject::operator=(o);
1032 fNBinsPt = o.fNBinsPt;
1035 fNBinsEta = o.fNBinsEta;
1036 fEtaMin = o.fEtaMin;
1037 fEtaMax = o.fEtaMax;
1038 fNBinsPhi = o.fNBinsPhi;
1039 fPhiMin = o.fPhiMin;
1040 fPhiMax = o.fPhiMax;
1041 fHighPtThreshold = o.fHighPtThreshold;
1042 fh2EtaPhi = o.fh2EtaPhi;
1044 fh2HighPtEtaPhi = o.fh2HighPtEtaPhi;
1051 //___________________________________________________________________
1052 AliAnalysisTaskFragmentationFunction::AliFragFuncQATrackHistos::~AliFragFuncQATrackHistos()
1056 if(fh2EtaPhi) delete fh2EtaPhi;
1057 if(fh2HighPtEtaPhi) delete fh2HighPtEtaPhi;
1058 if(fh1Pt) delete fh1Pt;
1061 //______________________________________________________________________
1062 void AliAnalysisTaskFragmentationFunction::AliFragFuncQATrackHistos::DefineHistos()
1064 // book track QA histos
1066 fh2EtaPhi = new TH2F(Form("fh2TrackQAEtaPhi%s", fName.Data()), Form("%s: #eta - #phi distribution", fName.Data()), fNBinsEta, fEtaMin, fEtaMax, fNBinsPhi, fPhiMin, fPhiMax);
1067 fh2HighPtEtaPhi = new TH2F(Form("fh2TrackQAHighPtEtaPhi%s", fName.Data()), Form("%s: #eta - #phi distribution for high-p_{T}", fName.Data()), fNBinsEta, fEtaMin, fEtaMax, fNBinsPhi, fPhiMin, fPhiMax);
1068 fh1Pt = new TH1F(Form("fh1TrackQAPt%s", fName.Data()), Form("%s: p_{T} distribution", fName.Data()), fNBinsPt, fPtMin, fPtMax);
1070 AliAnalysisTaskFragmentationFunction::SetProperties(fh2EtaPhi, "#eta", "#phi");
1071 AliAnalysisTaskFragmentationFunction::SetProperties(fh2HighPtEtaPhi, "#eta", "#phi");
1072 AliAnalysisTaskFragmentationFunction::SetProperties(fh1Pt, "p_{T} [GeV/c]", "entries");
1075 //________________________________________________________________________________________________________
1076 void AliAnalysisTaskFragmentationFunction::AliFragFuncQATrackHistos::FillTrackQA(Float_t eta, Float_t phi, Float_t pt)
1078 // fill track QA histos
1080 fh2EtaPhi->Fill( eta, phi);
1081 if(pt > fHighPtThreshold) fh2HighPtEtaPhi->Fill( eta, phi);
1085 //______________________________________________________________________________________
1086 void AliAnalysisTaskFragmentationFunction::AliFragFuncQATrackHistos::AddToOutput(TList* list) const
1088 // add histos to list
1090 list->Add(fh2EtaPhi);
1091 list->Add(fh2HighPtEtaPhi);
1095 //______________________________________________________________________________________________________
1096 AliAnalysisTaskFragmentationFunction::AliFragFuncIntraJetHistos::AliFragFuncIntraJetHistos(const char* name,
1097 Int_t nJetPt, Float_t jetPtMin, Float_t jetPtMax,
1098 Int_t nPt, Float_t ptMin, Float_t ptMax,
1099 Int_t nZ , Float_t zMin , Float_t zMax,
1100 Int_t nCosTheta , Float_t costhetaMin , Float_t costhetaMax,
1101 Int_t nTheta , Float_t thetaMin , Float_t thetaMax,
1102 Int_t nJt , Float_t jtMin , Float_t jtMax)
1104 ,fNBinsJetPt(nJetPt)
1105 ,fJetPtMin(jetPtMin)
1106 ,fJetPtMax(jetPtMax)
1116 ,fNBinsTheta(nTheta)
1117 ,fThetaMin(thetaMin)
1118 ,fThetaMax(thetaMax)
1119 ,fNBinsCosTheta(nCosTheta)
1120 ,fCosThetaMin(costhetaMin)
1121 ,fCosThetaMax(costhetaMax)
1130 // default constructor
1134 //___________________________________________________________________________
1135 AliAnalysisTaskFragmentationFunction::AliFragFuncIntraJetHistos::AliFragFuncIntraJetHistos(const AliFragFuncIntraJetHistos& copy)
1137 ,fNBinsJetPt(copy.fNBinsJetPt)
1138 ,fJetPtMin(copy.fJetPtMin)
1139 ,fJetPtMax(copy.fJetPtMax)
1140 ,fNBinsPt(copy.fNBinsPt)
1141 ,fPtMin(copy.fPtMin)
1142 ,fPtMax(copy.fPtMax)
1143 ,fNBinsZ(copy.fNBinsZ)
1146 ,fNBinsJt(copy.fNBinsJt)
1147 ,fJtMin(copy.fJtMin)
1148 ,fJtMax(copy.fJtMax)
1149 ,fNBinsTheta(copy.fNBinsTheta)
1150 ,fThetaMin(copy.fThetaMin)
1151 ,fThetaMax(copy.fThetaMax)
1152 ,fNBinsCosTheta(copy.fNBinsCosTheta)
1153 ,fCosThetaMin(copy.fCosThetaMin)
1154 ,fCosThetaMax(copy.fCosThetaMax)
1155 ,fh2Theta(copy.fh2Theta)
1156 ,fh2CosTheta(copy.fh2CosTheta)
1158 ,fh2PtvsZ(copy.fh2PtvsZ)
1159 ,fhnIntraJet(copy.fhnIntraJet)
1166 //_______________________________________________________________________________________________________________________________________________________________
1167 AliAnalysisTaskFragmentationFunction::AliFragFuncIntraJetHistos& AliAnalysisTaskFragmentationFunction::AliFragFuncIntraJetHistos::operator=(const AliAnalysisTaskFragmentationFunction::AliFragFuncIntraJetHistos& o)
1172 TObject::operator=(o);
1173 fNBinsJetPt = o.fNBinsJetPt;
1174 fJetPtMin = o.fJetPtMin;
1175 fJetPtMax = o.fJetPtMax;
1176 fNBinsPt = o.fNBinsPt;
1179 fNBinsZ = o.fNBinsZ;
1182 fNBinsJt = o.fNBinsJt;
1185 fNBinsTheta = o.fNBinsTheta;
1186 fThetaMin = o.fThetaMin;
1187 fThetaMax = o.fThetaMax;
1188 fNBinsCosTheta = o.fNBinsCosTheta;
1189 fCosThetaMin = o.fCosThetaMin;
1190 fCosThetaMax = o.fCosThetaMax;
1191 fh2Theta = o.fh2Theta;
1192 fh2CosTheta = o.fh2CosTheta;
1194 fh2PtvsZ = o.fh2PtvsZ;
1195 fhnIntraJet = o.fhnIntraJet;
1203 //_________________________________________________________
1204 AliAnalysisTaskFragmentationFunction::AliFragFuncIntraJetHistos::~AliFragFuncIntraJetHistos()
1209 if(fh2Theta) delete fh2Theta;
1210 if(fh2CosTheta) delete fh2CosTheta;
1211 if(fh2Jt) delete fh2Jt;
1212 if(fh2PtvsZ) delete fh2PtvsZ;
1213 if(fhnIntraJet) delete fhnIntraJet;
1217 //_________________________________________________________________
1218 void AliAnalysisTaskFragmentationFunction::AliFragFuncIntraJetHistos::DefineHistos()
1222 fh2Theta = new TH2F(Form("fh2IJTheta%s",fName.Data()),"",fNBinsJetPt, fJetPtMin, fJetPtMax,fNBinsTheta, fThetaMin, fThetaMax);
1223 fh2CosTheta = new TH2F(Form("fh2IJcosTheta%s",fName.Data()),"",fNBinsJetPt, fJetPtMin, fJetPtMax,fNBinsCosTheta, fCosThetaMin, fCosThetaMax);
1224 fh2Jt = new TH2F(Form("fh2IJJt%s",fName.Data()),"",fNBinsJetPt, fJetPtMin, fJetPtMax, fNBinsJt, fJtMin, fJtMax);
1226 // Create 3D histograms
1227 Int_t *iBin = new Int_t[fnDim];
1228 Double_t *min = new Double_t[fnDim];
1229 Double_t *max = new Double_t[fnDim];
1231 iBin[0] = fNBinsJetPt; iBin[1] = fNBinsTheta; iBin[2] = fNBinsCosTheta; iBin[3] = fNBinsJt; iBin[4] = fNBinsZ; iBin[5] = fNBinsPt;
1232 min[0] = fJetPtMin; min[1] = fThetaMin; min[2] = fCosThetaMin; min[3] = fJtMin; min[4] = fZMin; min[5] = fPtMin;
1233 max[0] = fJetPtMax; max[1] = fThetaMax; max[2] = fCosThetaMax; max[3] = fJtMax; max[4] = fZMax; max[5] = fPtMax;
1235 const char* title = Form("fhnIntraJetPart%s",fName.Data());
1236 const char* comment = "THnSparseF p_{T} jet [GeV/c] : #Theta : cos(#Theta) : j_{T} : Z : p_{T} part [GeV/c]";
1237 fhnIntraJet = new THnSparseF(title,comment,fnDim,iBin,min,max);
1239 const char** axisTitle = new const char*[fnDim];
1240 axisTitle[0] = "p_{T}^{jet} [GeV/c]";
1241 axisTitle[1] = "#Theta";
1242 axisTitle[2] = "Cos(#Theta)";
1243 axisTitle[3] = "j_{T} [GeV]";
1244 axisTitle[4] = "z = p_{T}^{had}/p_{T}^{jet}";
1245 axisTitle[5] = "p_{T}^{had} [GeV/c]";
1247 AliAnalysisTaskFragmentationFunction::SetProperties(fh2Theta,"jet p_{T} [GeV/c]","#Theta","entries");
1248 AliAnalysisTaskFragmentationFunction::SetProperties(fh2CosTheta,"jet p_{T} [GeV/c]","cos(#Theta)", "entries");
1249 AliAnalysisTaskFragmentationFunction::SetProperties(fh2Jt,"jet p_{T} [GeV/c]","j_{T}","entries");
1250 AliAnalysisTaskFragmentationFunction::SetProperties(fhnIntraJet,fnDim,axisTitle);
1257 //_______________________________________________________________________________________________________________
1258 void AliAnalysisTaskFragmentationFunction::AliFragFuncIntraJetHistos::FillIntraJet(TLorentzVector* trackV, TLorentzVector* jetV)
1260 // fill IntraJet histos
1262 Float_t cosTheta = 0.; Float_t theta = 0.;
1263 Float_t jt = 0.; Float_t z = 0.;
1264 // For Theta distribution
1265 Float_t pxT = trackV->Px();
1266 Float_t pyT = trackV->Py();
1267 Float_t pzT = trackV->Pz();
1268 Float_t ptT = trackV->Pt();
1269 Float_t pT = trackV->P();
1270 Float_t etaT = trackV->Eta();
1271 Float_t phiT = trackV->Phi(); // Check the value returned
1272 Float_t pxJ = jetV->Px();
1273 Float_t pyJ = jetV->Py();
1274 Float_t pzJ = jetV->Pz();
1275 Float_t ptJ = jetV->Pt();
1276 Float_t pJ = jetV->P();
1279 z = (Float_t)(ptT/ptJ);
1282 cosTheta = (pxT*pxJ+pyT*pyJ+pzT*pzJ)/(pT*pJ);
1283 theta = TMath::ACos(cosTheta);
1286 TVector3 trackP; TVector3 jetP;
1290 trackP.SetPtEtaPhi(ptT,etaT,phiT);
1291 jt = TMath::Sin(trackP.Angle(jetP))*trackP.Mag();
1293 // Fill histos and THnSparse
1294 fh2CosTheta->Fill(ptJ,cosTheta);
1295 fh2Theta->Fill(ptJ,theta);
1296 fh2Jt->Fill(ptJ,jt);
1299 Double_t *content = new Double_t[fnDim];
1300 content[0]= ptJ; content[1] = theta; content[2] = cosTheta; content[3] = jt; content[4] = z; content[5] = ptT;
1302 fhnIntraJet->Fill(content);
1308 //______________________________________________________________________________________________________
1309 AliAnalysisTaskFragmentationFunction::AliFragFuncDiJetHistos::AliFragFuncDiJetHistos(const char* name, Int_t kindSlices,
1310 Int_t nJetInvMass, Float_t jetInvMassMin, Float_t jetInvMassMax,
1311 Int_t nJetPt, Float_t jetPtMin, Float_t jetPtMax,
1312 Int_t nPt, Float_t ptMin, Float_t ptMax,
1313 Int_t nXi, Float_t xiMin, Float_t xiMax,
1314 Int_t nZ , Float_t zMin , Float_t zMax)
1316 ,fKindSlices(kindSlices)
1317 ,fNBinsJetInvMass(nJetInvMass)
1318 ,fJetInvMassMin(jetInvMassMin)
1319 ,fJetInvMassMax(jetInvMassMax)
1320 ,fNBinsJetPt(nJetPt)
1321 ,fJetPtMin(jetPtMin)
1322 ,fJetPtMax(jetPtMax)
1349 // default constructor
1353 //______________________________________________________________________________________________________
1354 AliAnalysisTaskFragmentationFunction::AliFragFuncDiJetHistos::AliFragFuncDiJetHistos(const AliFragFuncDiJetHistos& copy)
1356 ,fKindSlices(copy.fKindSlices)
1357 ,fNBinsJetInvMass(copy.fNBinsJetInvMass)
1358 ,fJetInvMassMin(copy.fJetInvMassMin)
1359 ,fJetInvMassMax(copy.fJetInvMassMax)
1360 ,fNBinsJetPt(copy.fNBinsJetPt)
1361 ,fJetPtMin(copy.fJetPtMin)
1362 ,fJetPtMax(copy.fJetPtMax)
1363 ,fNBinsPt(copy.fNBinsPt)
1364 ,fPtMin(copy.fPtMin)
1365 ,fPtMax(copy.fPtMax)
1366 ,fNBinsXi(copy.fNBinsXi)
1367 ,fXiMin(copy.fXiMin)
1368 ,fXiMax(copy.fXiMax)
1369 ,fNBinsZ(copy.fNBinsZ)
1372 ,fh2TrackPtJet1(copy.fh2TrackPtJet1)
1373 ,fh2TrackPtJet2(copy.fh2TrackPtJet2)
1374 ,fh2TrackPtJet(copy.fh2TrackPtJet)
1375 ,fh1Jet1Pt(copy.fh1Jet1Pt)
1376 ,fh1Jet2Pt(copy.fh1Jet2Pt)
1377 ,fh1JetPt(copy.fh1JetPt)
1378 ,fh2Xi1(copy.fh2Xi1)
1379 ,fh2Xi2(copy.fh2Xi2)
1384 ,fh2Pt1(copy.fh2Pt1)
1385 ,fh2Pt2(copy.fh2Pt2)
1389 // default constructor
1393 //_______________________________________________________________________________________________________________________________________________________________
1394 AliAnalysisTaskFragmentationFunction::AliFragFuncDiJetHistos& AliAnalysisTaskFragmentationFunction::AliFragFuncDiJetHistos::operator=(const AliAnalysisTaskFragmentationFunction::AliFragFuncDiJetHistos& o)
1399 TObject::operator=(o);
1400 fKindSlices = o.fKindSlices;
1401 fNBinsJetInvMass = o.fNBinsJetInvMass;
1402 fJetInvMassMin = o.fJetInvMassMin;
1403 fJetInvMassMax = o.fJetInvMassMax;
1404 fNBinsJetPt = o.fNBinsJetPt;
1405 fJetPtMin = o.fJetPtMin;
1406 fJetPtMax = o.fJetPtMax;
1407 fNBinsPt = o.fNBinsPt;
1410 fNBinsXi = o.fNBinsXi;
1413 fNBinsZ = o.fNBinsZ;
1416 fh2TrackPtJet1 = o.fh2TrackPtJet1;
1417 fh2TrackPtJet2 = o.fh2TrackPtJet2;
1418 fh2TrackPtJet = o.fh2TrackPtJet;
1419 fh1Jet1Pt = o.fh1Jet1Pt;
1420 fh1Jet2Pt = o.fh1Jet2Pt;
1421 fh1JetPt = o.fh1JetPt;
1437 //_________________________________________________________
1438 AliAnalysisTaskFragmentationFunction::AliFragFuncDiJetHistos::~AliFragFuncDiJetHistos()
1442 if(fh2TrackPtJet1) delete fh2TrackPtJet1;
1443 if(fh2TrackPtJet2) delete fh2TrackPtJet2;
1444 if(fh2TrackPtJet ) delete fh2TrackPtJet;
1445 if(fh1Jet1Pt) delete fh1Jet1Pt;
1446 if(fh1Jet2Pt) delete fh1Jet2Pt;
1447 if(fh1JetPt) delete fh1JetPt;
1448 if(fh2Xi1) delete fh2Xi1;
1449 if(fh2Xi2) delete fh2Xi2;
1450 if(fh2Xi) delete fh2Xi;
1451 if(fh2Z1) delete fh2Z1;
1452 if(fh2Z2) delete fh2Z2;
1453 if(fh2Z) delete fh2Z;
1454 if(fh2Pt1) delete fh2Pt1;
1455 if(fh2Pt2) delete fh2Pt2;
1456 if(fh2Pt) delete fh2Pt;
1459 //________________________________________________________________________
1460 void AliAnalysisTaskFragmentationFunction::AliFragFuncDiJetHistos::DefineDiJetHistos()
1466 const char *xaxis = "";
1467 if(fKindSlices == 1)
1469 nBins = fNBinsJetInvMass;
1470 min = fJetInvMassMin;
1471 max = fJetInvMassMax;
1472 xaxis = "M_{JJ} [GeV]";
1474 if(fKindSlices == 2 || fKindSlices == 3)
1476 nBins = fNBinsJetPt;
1479 if(fKindSlices == 2) xaxis = "E_{Tmean} [GeV]";
1480 if(fKindSlices == 3) xaxis ="leading jet p_{T} [GeV/c]";
1483 fh1Jet1Pt = new TH1F(Form("fh1DJJet1Pt%s", fName.Data()), "", fNBinsJetPt, fJetPtMin, fJetPtMax);
1484 fh1Jet2Pt = new TH1F(Form("fh1DJJet2Pt%s", fName.Data()), "", fNBinsJetPt, fJetPtMin, fJetPtMax);
1485 fh1JetPt = new TH1F(Form("fh1DJJetPt%s", fName.Data()), "", fNBinsJetPt, fJetPtMin, fJetPtMax);
1487 fh2TrackPtJet1 = new TH2F(Form("fh2DJTrackPtJet1%s", fName.Data()), "",nBins, min, max, fNBinsPt, fPtMin, fPtMax);
1488 fh2TrackPtJet2 = new TH2F(Form("fh2DJTrackPtJet2%s", fName.Data()), "",nBins, min, max, fNBinsPt, fPtMin, fPtMax);
1489 fh2TrackPtJet = new TH2F(Form("fh2DJTrackPtJet%s", fName.Data()), "",nBins, min, max, fNBinsPt, fPtMin, fPtMax);
1491 fh2Xi1 = new TH2F(Form("fh2DJXi1%s", fName.Data()), "",nBins, min, max, fNBinsXi, fXiMin, fXiMax);
1492 fh2Xi2 = new TH2F(Form("fh2DJXi2%s", fName.Data()), "",nBins, min, max, fNBinsXi, fXiMin, fXiMax);
1493 fh2Xi = new TH2F(Form("fh2DJXi%s", fName.Data()), "",nBins, min, max, fNBinsXi, fXiMin, fXiMax);
1495 fh2Z1 = new TH2F(Form("fh2DJZ1%s", fName.Data()), "",nBins, min, max, fNBinsZ, fZMin, fZMax);
1496 fh2Z2 = new TH2F(Form("fh2DJZ2%s", fName.Data()), "",nBins, min, max, fNBinsZ, fZMin, fZMax);
1497 fh2Z = new TH2F(Form("fh2DJZ%s", fName.Data()), "",nBins, min, max, fNBinsZ, fZMin, fZMax);
1499 fh2Pt1 = new TH2F(Form("fh2DJPt1%s", fName.Data()), "",nBins, min, max, fNBinsPt, fPtMin, fPtMax);
1500 fh2Pt2 = new TH2F(Form("fh2DJPt2%s", fName.Data()), "",nBins, min, max, fNBinsPt, fPtMin, fPtMax);
1501 fh2Pt = new TH2F(Form("fh2DJPtZ%s", fName.Data()), "",nBins, min, max, fNBinsPt, fPtMin, fPtMax);
1503 AliAnalysisTaskFragmentationFunction::SetProperties(fh1Jet1Pt, "p_{T} [GeV/c]", "entries");
1504 AliAnalysisTaskFragmentationFunction::SetProperties(fh1Jet2Pt, "p_{T} [GeV/c]", "entries");
1505 AliAnalysisTaskFragmentationFunction::SetProperties(fh1JetPt, "p_{T} [GeV/c]", "entries");
1507 AliAnalysisTaskFragmentationFunction::SetProperties(fh2TrackPtJet1, xaxis, "p_{T} [GeV/c]", "Entries");
1508 AliAnalysisTaskFragmentationFunction::SetProperties(fh2TrackPtJet2, xaxis, "p_{T} [GeV/c]", "Entries");
1509 AliAnalysisTaskFragmentationFunction::SetProperties(fh2TrackPtJet, xaxis, "p_{T} [GeV/c]", "Entries");
1510 AliAnalysisTaskFragmentationFunction::SetProperties(fh2Xi1, xaxis, "#xi", "Entries");
1511 AliAnalysisTaskFragmentationFunction::SetProperties(fh2Xi2, xaxis, "#xi", "Entries");
1512 AliAnalysisTaskFragmentationFunction::SetProperties(fh2Xi, xaxis, "#xi", "Entries");
1513 AliAnalysisTaskFragmentationFunction::SetProperties(fh2Z1, xaxis, "z", "Entries");
1514 AliAnalysisTaskFragmentationFunction::SetProperties(fh2Z2, xaxis, "z", "Entries");
1515 AliAnalysisTaskFragmentationFunction::SetProperties(fh2Z, xaxis, "z", "Entries");
1516 AliAnalysisTaskFragmentationFunction::SetProperties(fh2Pt1, xaxis, "p_{T} [GeV/c]", "Entries");
1517 AliAnalysisTaskFragmentationFunction::SetProperties(fh2Pt2, xaxis, "p_{T} [GeV/c]", "Entries");
1518 AliAnalysisTaskFragmentationFunction::SetProperties(fh2Pt, xaxis, "p_{T} [GeV/c]", "Entries");
1522 //________________________________________________________________________
1523 void AliAnalysisTaskFragmentationFunction::AliFragFuncDiJetHistos::FillDiJetFF(Int_t jetType, Float_t trackPt, Float_t jetPt, Double_t jetBin, Bool_t incrementJetPt)
1527 if(incrementJetPt) fh1JetPt->Fill(jetPt);
1529 fh2TrackPtJet->Fill(jetBin, trackPt);
1531 Double_t z = trackPt / jetPt;
1533 if(z!=0) xi = TMath::Log(1/z);
1535 fh2Xi->Fill(jetBin, xi);
1536 fh2Z->Fill(jetBin, z);
1540 if(incrementJetPt) fh1Jet1Pt->Fill(jetPt);
1542 fh2TrackPtJet1->Fill(jetBin, trackPt);
1544 Double_t z = trackPt / jetPt;
1546 if(z!=0) xi = TMath::Log(1/z);
1548 fh2Xi1->Fill(jetBin, xi);
1549 fh2Z1->Fill(jetBin, z);
1553 if(incrementJetPt) fh1Jet2Pt->Fill(jetPt);
1555 fh2TrackPtJet2->Fill(jetBin, trackPt);
1557 Double_t z = trackPt / jetPt;
1559 if(z!=0) xi = TMath::Log(1/z);
1561 fh2Xi2->Fill(jetBin, xi);
1562 fh2Z2->Fill(jetBin, z);
1568 //________________________________________________________________________
1569 void AliAnalysisTaskFragmentationFunction::AliFragFuncDiJetHistos::AddToOutput(TList* list)const
1571 list->Add(fh1Jet1Pt);
1572 list->Add(fh1Jet2Pt);
1573 list->Add(fh1JetPt);
1574 list->Add(fh2TrackPtJet1);
1575 list->Add(fh2TrackPtJet2);
1576 list->Add(fh2TrackPtJet);
1585 //______________________________________________________________________________________________________
1586 AliAnalysisTaskFragmentationFunction::AliFragFuncQADiJetHistos::AliFragFuncQADiJetHistos(const char* name, Int_t kindSlices,
1587 Int_t nInvMass, Float_t invMassMin, Float_t invMassMax,
1588 Int_t nJetPt, Float_t jetPtMin, Float_t jetPtMax,
1589 Int_t nDeltaPhi, Float_t deltaPhiMin, Float_t deltaPhiMax,
1590 Int_t nDeltaEta, Float_t deltaEtaMin, Float_t deltaEtaMax,
1591 Int_t nDeltaPt, Float_t deltaPtMin, Float_t deltaPtMax)
1593 ,fKindSlices(kindSlices)
1594 ,fNBinsJetInvMass(nInvMass)
1595 ,fJetInvMassMin(invMassMin)
1596 ,fJetInvMassMax(invMassMax)
1597 ,fNBinsJetPt(nJetPt)
1598 ,fJetPtMin(jetPtMin)
1599 ,fJetPtMax(jetPtMax)
1600 ,fNBinsDeltaPhi(nDeltaPhi)
1601 ,fDeltaPhiMin(deltaPhiMin)
1602 ,fDeltaPhiMax(deltaPhiMax)
1603 ,fNBinsDeltaEta(nDeltaEta)
1604 ,fDeltaEtaMin(deltaEtaMin)
1605 ,fDeltaEtaMax(deltaEtaMax)
1606 ,fNBinsDeltaPt(nDeltaPt)
1607 ,fDeltaPtMin(deltaPtMin)
1608 ,fDeltaPtMax(deltaPtMax)
1615 // default constructor
1619 //______________________________________________________________________________________________________
1620 AliAnalysisTaskFragmentationFunction::AliFragFuncQADiJetHistos::AliFragFuncQADiJetHistos(const AliFragFuncQADiJetHistos& copy)
1622 ,fKindSlices(copy.fKindSlices)
1623 ,fNBinsJetInvMass(copy.fNBinsJetInvMass)
1624 ,fJetInvMassMin(copy.fJetInvMassMin)
1625 ,fJetInvMassMax(copy.fJetInvMassMax)
1626 ,fNBinsJetPt(copy.fNBinsJetPt)
1627 ,fJetPtMin(copy.fJetPtMin)
1628 ,fJetPtMax(copy.fJetPtMax)
1629 ,fNBinsDeltaPhi(copy.fNBinsDeltaPhi)
1630 ,fDeltaPhiMin(copy.fDeltaPhiMin)
1631 ,fDeltaPhiMax(copy.fDeltaPhiMax)
1632 ,fNBinsDeltaEta(copy.fNBinsDeltaEta)
1633 ,fDeltaEtaMin(copy.fDeltaEtaMin)
1634 ,fDeltaEtaMax(copy.fDeltaEtaMax)
1635 ,fNBinsDeltaPt(copy.fNBinsDeltaPt)
1636 ,fDeltaPtMin(copy.fDeltaPtMin)
1637 ,fDeltaPtMax(copy.fDeltaPtMax)
1638 ,fh2InvMass(copy.fh2InvMass)
1639 ,fh2DeltaPhi(copy.fh2DeltaPhi)
1640 ,fh2DeltaEta(copy.fh2DeltaEta)
1641 ,fh2DeltaPt(copy.fh2DeltaPt)
1644 // default constructor
1648 //_______________________________________________________________________________________________________________________________________________________________
1649 AliAnalysisTaskFragmentationFunction::AliFragFuncQADiJetHistos& AliAnalysisTaskFragmentationFunction::AliFragFuncQADiJetHistos::operator=(const AliAnalysisTaskFragmentationFunction::AliFragFuncQADiJetHistos& o)
1654 TObject::operator=(o);
1655 fKindSlices = o.fKindSlices;
1656 fNBinsJetInvMass = o.fNBinsJetInvMass;
1657 fJetInvMassMin = o.fJetInvMassMin;
1658 fJetInvMassMax = o.fJetInvMassMax;
1659 fNBinsJetPt = o.fNBinsJetPt;
1660 fJetPtMin = o.fJetPtMin;
1661 fJetPtMax = o.fJetPtMax;
1662 fNBinsDeltaPhi = o.fNBinsDeltaPhi;
1663 fDeltaPhiMin = o.fDeltaPhiMin;
1664 fDeltaPhiMax = o.fDeltaPhiMax;
1665 fNBinsDeltaEta = o.fNBinsDeltaEta;
1666 fDeltaEtaMin = o.fDeltaEtaMin;
1667 fDeltaEtaMax = o.fDeltaEtaMax;
1668 fNBinsDeltaPt = o.fNBinsDeltaPt;
1669 fDeltaPtMin = o.fDeltaPtMin;
1670 fDeltaPtMax = o.fDeltaPtMax;
1671 fh2InvMass = o.fh2InvMass;
1672 fh2DeltaPhi = o.fh2DeltaPhi;
1673 fh2DeltaEta = o.fh2DeltaEta;
1674 fh2DeltaPt = o.fh2DeltaPt;
1681 //_________________________________________________________
1682 AliAnalysisTaskFragmentationFunction::AliFragFuncQADiJetHistos::~AliFragFuncQADiJetHistos()
1686 if(fh2InvMass) delete fh2InvMass;
1687 if(fh2DeltaPhi) delete fh2DeltaPhi;
1688 if(fh2DeltaEta) delete fh2DeltaEta;
1689 if(fh2DeltaPt) delete fh2DeltaPt;
1692 //________________________________________________________________________
1693 void AliAnalysisTaskFragmentationFunction::AliFragFuncQADiJetHistos::DefineQADiJetHistos()
1699 const char *xaxis = "";
1700 if(fKindSlices == 1)
1702 nBins = fNBinsJetInvMass;
1703 min = fJetInvMassMin;
1704 max = fJetInvMassMax;
1705 xaxis = "M_{JJ} [GeV]";
1707 if(fKindSlices == 2 || fKindSlices == 3)
1709 nBins = fNBinsJetPt;
1712 if(fKindSlices == 2) xaxis = "E_{Tmean} [GeV]";
1713 if(fKindSlices == 3) xaxis ="leading jet p_{T} [GeV/c]";
1717 fh2InvMass = new TH2F(Form("fh2DJInvMassPositionCut%s", fName.Data()), "",nBins, min, max, fNBinsJetInvMass, fJetInvMassMin, fJetInvMassMax);
1718 fh2DeltaPhi = new TH2F(Form("fh2DJDeltaPhiPositionCut%s", fName.Data()), "",nBins, min, max, fNBinsDeltaPhi, fDeltaPhiMin, fDeltaPhiMax);
1719 fh2DeltaEta = new TH2F(Form("fh2DJDeltaEtaPositionCut%s", fName.Data()), "",nBins, min, max, fNBinsDeltaEta, fDeltaEtaMin, fDeltaEtaMax);
1720 fh2DeltaPt = new TH2F(Form("fh2DJDeltaPtPositionCut%s", fName.Data()), "",nBins, min, max, fNBinsDeltaPt, fDeltaPtMin, fDeltaPtMax);
1722 AliAnalysisTaskFragmentationFunction::SetProperties(fh2InvMass, xaxis, "Invariant Mass", "Entries");
1723 AliAnalysisTaskFragmentationFunction::SetProperties(fh2DeltaPhi, xaxis, "#Delta #phi", "Entries");
1724 AliAnalysisTaskFragmentationFunction::SetProperties(fh2DeltaEta, xaxis, "#Delta #eta", "Entries");
1725 AliAnalysisTaskFragmentationFunction::SetProperties(fh2DeltaPt, xaxis, "#Delta p_{T}", "Entries");
1729 //________________________________________________________________________
1730 void AliAnalysisTaskFragmentationFunction::AliFragFuncQADiJetHistos::FillDiJetQA(Double_t invMass, Double_t deltaPhi, Double_t deltaEta,Double_t deltaPt, Double_t jetBin)
1732 fh2InvMass->Fill(jetBin, invMass);
1733 fh2DeltaPhi->Fill(jetBin, deltaPhi);
1734 fh2DeltaEta->Fill(jetBin, deltaEta);
1735 fh2DeltaPt->Fill(jetBin, deltaPt);
1738 //________________________________________________________________________
1739 void AliAnalysisTaskFragmentationFunction::AliFragFuncQADiJetHistos::AddToOutput(TList* list)const
1741 list->Add(fh2InvMass);
1742 list->Add(fh2DeltaPhi);
1743 list->Add(fh2DeltaEta);
1744 list->Add(fh2DeltaPt);
1747 //_________________________________________________________________________________
1748 void AliAnalysisTaskFragmentationFunction::AliFragFuncIntraJetHistos::AddToOutput(TList* list) const
1750 // add histos to list
1752 list->Add(fh2CosTheta);
1753 list->Add(fh2Theta);
1756 list->Add(fhnIntraJet);
1761 Bool_t AliAnalysisTaskFragmentationFunction::Notify()
1764 // Implemented Notify() to read the cross sections
1765 // and number of trials from pyxsec.root
1766 // (taken from AliAnalysisTaskJetSpectrum)
1768 TTree *tree = AliAnalysisManager::GetAnalysisManager()->GetTree();
1769 Double_t xsection = 0;
1771 Float_t ftrials = 0;
1773 TFile *curfile = tree->GetCurrentFile();
1775 Error("Notify","No current file");
1778 if(!fh1Xsec||!fh1Trials){
1779 Printf("%s%d No Histogram fh1Xsec",(char*)__FILE__,__LINE__);
1783 TString fileName(curfile->GetName());
1784 if(fileName.Contains("AliESDs.root")){
1785 fileName.ReplaceAll("AliESDs.root", "");
1787 else if(fileName.Contains("AliAOD.root")){
1788 fileName.ReplaceAll("AliAOD.root", "");
1790 else if(fileName.Contains("AliAODs.root")){
1791 fileName.ReplaceAll("AliAODs.root", "");
1793 else if(fileName.Contains("galice.root")){
1794 // for running with galice and kinematics alone...
1795 fileName.ReplaceAll("galice.root", "");
1797 TFile *fxsec = TFile::Open(Form("%s%s",fileName.Data(),"pyxsec.root"));
1799 if(fDebug>0)Printf("%s:%d %s not found in the Input",(char*)__FILE__,__LINE__,Form("%s%s",fileName.Data(),"pyxsec.root"));
1800 // next trial fetch the histgram file
1801 fxsec = TFile::Open(Form("%s%s",fileName.Data(),"pyxsec_hists.root"));
1803 // not a severe condition
1804 if(fDebug>0)Printf("%s:%d %s not found in the Input",(char*)__FILE__,__LINE__,Form("%s%s",fileName.Data(),"pyxsec_hists.root"));
1808 // find the tlist we want to be independtent of the name so use the Tkey
1809 TKey* key = (TKey*)fxsec->GetListOfKeys()->At(0);
1811 if(fDebug>0)Printf("%s:%d key not found in the file",(char*)__FILE__,__LINE__);
1814 TList *list = dynamic_cast<TList*>(key->ReadObj());
1816 if(fDebug>0)Printf("%s:%d key is not a tlist",(char*)__FILE__,__LINE__);
1819 xsection = ((TProfile*)list->FindObject("h1Xsec"))->GetBinContent(1);
1820 ftrials = ((TH1F*)list->FindObject("h1Trials"))->GetBinContent(1);
1824 TTree *xtree = (TTree*)fxsec->Get("Xsection");
1826 Printf("%s:%d tree not found in the pyxsec.root",(char*)__FILE__,__LINE__);
1828 xtree->SetBranchAddress("xsection",&xsection);
1829 xtree->SetBranchAddress("ntrials",&ntrials);
1833 fh1Xsec->Fill("<#sigma>",xsection);
1834 fh1Trials->Fill("#sum{ntrials}",ftrials);
1842 //__________________________________________________________________
1843 void AliAnalysisTaskFragmentationFunction::UserCreateOutputObjects()
1845 // create output objects
1847 if(fDebug > 1) Printf("AliAnalysisTaskFragmentationFunction::UserCreateOutputObjects()");
1849 // create list of tracks and jets
1851 fTracksRec = new TList();
1852 fTracksRec->SetOwner(kFALSE);
1854 fTracksRecCuts = new TList();
1855 fTracksRecCuts->SetOwner(kFALSE);
1857 fTracksGen = new TList();
1858 fTracksGen->SetOwner(kFALSE);
1860 fTracksAODMCCharged = new TList();
1861 fTracksAODMCCharged->SetOwner(kFALSE);
1863 fTracksRecQualityCuts = new TList();
1864 fTracksRecQualityCuts->SetOwner(kFALSE);
1866 fJetsRec = new TList();
1867 fJetsRec->SetOwner(kFALSE);
1869 fJetsRecCuts = new TList();
1870 fJetsRecCuts->SetOwner(kFALSE);
1872 fJetsGen = new TList();
1873 fJetsGen->SetOwner(kFALSE);
1875 fJetsRecEff = new TList();
1876 fJetsRecEff->SetOwner(kFALSE);
1878 // fJetsKine = new TList();
1879 // fJetsKine->SetOwner(kTRUE); // delete AOD jets using mom from Kine Tree via TList::Clear()
1883 // Create histograms / output container
1887 fCommonHistList = new TList();
1889 Bool_t oldStatus = TH1::AddDirectoryStatus();
1890 TH1::AddDirectory(kFALSE);
1894 fh1EvtSelection = new TH1F("fh1EvtSelection", "Event Selection", 6, -0.5, 5.5);
1895 fh1VertexNContributors = new TH1F("fh1VertexNContributors", "Vertex N contributors", 11,-.5, 10.5);
1896 fh1VertexZ = new TH1F("fh1VertexZ", "Vertex z distribution", 30, -15., 15.);
1897 fh1EvtMult = new TH1F("fh1EvtMult","Event multiplicity, track pT cut > 150 MeV/c, |#eta| < 0.9",120,0.,120.);
1899 fh1Xsec = new TProfile("fh1Xsec","xsec from pyxsec.root",1,0,1);
1900 fh1Xsec->GetXaxis()->SetBinLabel(1,"<#sigma>");
1901 fh1Trials = new TH1F("fh1Trials","trials from pyxsec.root",1,0,1);
1902 fh1Trials->GetXaxis()->SetBinLabel(1,"#sum{ntrials}");
1903 fh1PtHard = new TH1F("fh1PtHard","PYTHIA Pt hard;p_{T,hard}",350,-.5,349.5);
1904 fh1PtHardTrials = new TH1F("fh1PtHardTrials","PYTHIA Pt hard weight with trials;p_{T,hard}",350,-.5,349.5);
1906 fh1nRecJetsCuts = new TH1F("fh1nRecJetsCuts","reconstructed jets per event",10,-0.5,9.5);
1907 fh1nGenJets = new TH1F("fh1nGenJets","generated jets per event",10,-0.5,9.5);
1908 fh1nRecEffJets = new TH1F("fh1nRecEffJets","reconstruction effiency: jets per event",10,-0.5,9.5);
1910 // 5D single track eff histo: phi:eta:gen pt:rec pt:isReconstructed - use binning as for track QA
1911 Int_t nBinsSingleTrackEffHisto[5] = { fQATrackNBinsPhi, fQATrackNBinsEta, fQATrackNBinsPt, fQATrackNBinsPt, 2 };
1912 Double_t binMinSingleTrackEffHisto[5] = { fQATrackPhiMin, fQATrackEtaMin, fQATrackPtMin, fQATrackPtMin, 0 };
1913 Double_t binMaxSingleTrackEffHisto[5] = { fQATrackPhiMax, fQATrackEtaMax, fQATrackPtMax, fQATrackPtMax, 2 };
1914 const char* labelsSingleTrackEffHisto[5] = {"#phi","#eta","gen p_{T} [GeV/c]", "rec p_{T} [GeV/c]", "isRec"};
1916 fhnSingleTrackRecEffHisto = new THnSparseF("fhnSingleTrackRecEffHisto","generated tracks phi:eta:pt:isReconstructed",5,
1917 nBinsSingleTrackEffHisto,binMinSingleTrackEffHisto,binMaxSingleTrackEffHisto);
1919 AliAnalysisTaskFragmentationFunction::SetProperties(fhnSingleTrackRecEffHisto,5,labelsSingleTrackEffHisto);
1922 // 7D jets track eff histo: jet phi:eta:pt:track pt:z:xi:isReconstructed - use binning as for track/jet QA
1923 Int_t nBinsJetTrackEffHisto[7] = { fQAJetNBinsPhi, fQAJetNBinsEta, fFFNBinsJetPt, fFFNBinsPt, fFFNBinsZ, fFFNBinsXi, 2};
1924 Double_t binMinJetTrackEffHisto[7] = { fQAJetPhiMin, fQAJetEtaMin, fFFJetPtMin , fFFPtMin, fFFZMin , fFFXiMin, 0 };
1925 Double_t binMaxJetTrackEffHisto[7] = { fQAJetPhiMax, fQAJetEtaMax, fFFJetPtMax , fFFPtMax, fFFZMax , fFFXiMax, 2 };
1926 const char* labelsJetTrackEffHisto[7] = {"jet #phi","jet #eta","jet p_{T} [GeV/c]","track p_{T} [GeV/c]","z","#xi","isRec"};
1928 fhnJetTrackRecEffHisto = new THnSparseF("fhnJetTrackRecEffHisto","generated tracks - jet phi:jet eta:jet pt:track pt:z:xi:isReconstructed",7,
1929 nBinsJetTrackEffHisto,binMinJetTrackEffHisto,binMaxJetTrackEffHisto);
1931 AliAnalysisTaskFragmentationFunction::SetProperties(fhnJetTrackRecEffHisto,7,labelsJetTrackEffHisto);
1934 fQATrackHistosRec = new AliFragFuncQATrackHistos("Rec", fQATrackNBinsPt, fQATrackPtMin, fQATrackPtMax,
1935 fQATrackNBinsEta, fQATrackEtaMin, fQATrackEtaMax,
1936 fQATrackNBinsPhi, fQATrackPhiMin, fQATrackPhiMax,
1937 fQATrackHighPtThreshold);
1938 fQATrackHistosRecCuts = new AliFragFuncQATrackHistos("RecCuts", fQATrackNBinsPt, fQATrackPtMin, fQATrackPtMax,
1939 fQATrackNBinsEta, fQATrackEtaMin, fQATrackEtaMax,
1940 fQATrackNBinsPhi, fQATrackPhiMin, fQATrackPhiMax,
1941 fQATrackHighPtThreshold);
1942 fQATrackHistosGen = new AliFragFuncQATrackHistos("Gen", fQATrackNBinsPt, fQATrackPtMin, fQATrackPtMax,
1943 fQATrackNBinsEta, fQATrackEtaMin, fQATrackEtaMax,
1944 fQATrackNBinsPhi, fQATrackPhiMin, fQATrackPhiMax,
1945 fQATrackHighPtThreshold);
1948 fQAJetHistosRec = new AliFragFuncQAJetHistos("Rec", fQAJetNBinsPt, fQAJetPtMin, fQAJetPtMax,
1949 fQAJetNBinsEta, fQAJetEtaMin, fQAJetEtaMax,
1950 fQAJetNBinsPhi, fQAJetPhiMin, fQAJetPhiMax);
1951 fQAJetHistosRecCuts = new AliFragFuncQAJetHistos("RecCuts", fQAJetNBinsPt, fQAJetPtMin, fQAJetPtMax,
1952 fQAJetNBinsEta, fQAJetEtaMin, fQAJetEtaMax,
1953 fQAJetNBinsPhi, fQAJetPhiMin, fQAJetPhiMax);
1954 fQAJetHistosRecCutsLeading = new AliFragFuncQAJetHistos("RecCutsLeading", fQAJetNBinsPt, fQAJetPtMin, fQAJetPtMax,
1955 fQAJetNBinsEta, fQAJetEtaMin, fQAJetEtaMax,
1956 fQAJetNBinsPhi, fQAJetPhiMin, fQAJetPhiMax);
1957 fQAJetHistosGen = new AliFragFuncQAJetHistos("Gen", fQAJetNBinsPt, fQAJetPtMin, fQAJetPtMax,
1958 fQAJetNBinsEta, fQAJetEtaMin, fQAJetEtaMax,
1959 fQAJetNBinsPhi, fQAJetPhiMin, fQAJetPhiMax);
1960 fQAJetHistosGenLeading = new AliFragFuncQAJetHistos("GenLeading", fQAJetNBinsPt, fQAJetPtMin, fQAJetPtMax,
1961 fQAJetNBinsEta, fQAJetEtaMin, fQAJetEtaMax,
1962 fQAJetNBinsPhi, fQAJetPhiMin, fQAJetPhiMax);
1963 fQAJetHistosRecEffLeading = new AliFragFuncQAJetHistos("RecEffLeading", fQAJetNBinsPt, fQAJetPtMin, fQAJetPtMax,
1964 fQAJetNBinsEta, fQAJetEtaMin, fQAJetEtaMax,fQAJetNBinsPhi, fQAJetPhiMin, fQAJetPhiMax);
1967 fFFHistosRecCuts = new AliFragFuncHistos("RecCuts", fFFNBinsJetPt, fFFJetPtMin, fFFJetPtMax,
1968 fFFNBinsPt, fFFPtMin, fFFPtMax,
1969 fFFNBinsXi, fFFXiMin, fFFXiMax,
1970 fFFNBinsZ , fFFZMin , fFFZMax);
1971 fFFHistosRecLeading = new AliFragFuncHistos("RecLeading", fFFNBinsJetPt, fFFJetPtMin, fFFJetPtMax,
1972 fFFNBinsPt, fFFPtMin, fFFPtMax,
1973 fFFNBinsXi, fFFXiMin, fFFXiMax,
1974 fFFNBinsZ , fFFZMin , fFFZMax);
1975 fFFHistosRecLeadingTrack = new AliFragFuncHistos("RecLeadingTrack", fFFNBinsJetPt, fFFJetPtMin, fFFJetPtMax,
1976 fFFNBinsPt, fFFPtMin, fFFPtMax,
1977 fFFNBinsXi, fFFXiMin, fFFXiMax,
1978 fFFNBinsZ , fFFZMin , fFFZMax);
1979 fFFHistosGen = new AliFragFuncHistos("Gen", fFFNBinsJetPt, fFFJetPtMin, fFFJetPtMax,
1980 fFFNBinsPt, fFFPtMin, fFFPtMax,
1981 fFFNBinsXi, fFFXiMin, fFFXiMax,
1982 fFFNBinsZ , fFFZMin , fFFZMax);
1983 fFFHistosGenLeading = new AliFragFuncHistos("GenLeading", fFFNBinsJetPt, fFFJetPtMin, fFFJetPtMax,
1984 fFFNBinsPt, fFFPtMin, fFFPtMax,
1985 fFFNBinsXi, fFFXiMin, fFFXiMax,
1986 fFFNBinsZ , fFFZMin , fFFZMax);
1987 fFFHistosGenLeadingTrack = new AliFragFuncHistos("GenLeadingTrack", fFFNBinsJetPt, fFFJetPtMin, fFFJetPtMax,
1988 fFFNBinsPt, fFFPtMin, fFFPtMax,
1989 fFFNBinsXi, fFFXiMin, fFFXiMax,
1990 fFFNBinsZ , fFFZMin , fFFZMax);
1993 fIJHistosRecCuts = new AliFragFuncIntraJetHistos("RecCuts", fIJNBinsJetPt, fIJJetPtMin, fIJJetPtMax,
1994 fIJNBinsPt, fIJPtMin, fIJPtMax,
1995 fIJNBinsZ, fIJZMin, fIJZMax,
1996 fIJNBinsCosTheta , fIJCosThetaMin , fIJCosThetaMax,
1997 fIJNBinsTheta , fIJThetaMin , fIJThetaMax,
1998 fIJNBinsJt , fIJJtMin , fIJJtMax);
1999 fIJHistosRecLeading = new AliFragFuncIntraJetHistos("RecLeading", fIJNBinsJetPt, fIJJetPtMin, fIJJetPtMax,
2000 fIJNBinsPt, fIJPtMin, fIJPtMax,
2001 fIJNBinsZ, fIJZMin, fIJZMax,
2002 fIJNBinsCosTheta , fIJCosThetaMin , fIJCosThetaMax,
2003 fIJNBinsTheta , fIJThetaMin , fIJThetaMax,
2004 fIJNBinsJt , fIJJtMin , fIJJtMax);
2005 fIJHistosRecLeadingTrack = new AliFragFuncIntraJetHistos("RecLeadingTrack", fIJNBinsJetPt, fIJJetPtMin, fIJJetPtMax,
2006 fIJNBinsPt, fIJPtMin, fIJPtMax,
2007 fIJNBinsZ, fIJZMin, fIJZMax,
2008 fIJNBinsCosTheta , fIJCosThetaMin , fIJCosThetaMax,
2009 fIJNBinsTheta , fIJThetaMin , fIJThetaMax,
2010 fIJNBinsJt , fIJJtMin , fIJJtMax);
2011 fIJHistosGen = new AliFragFuncIntraJetHistos("Gen", fIJNBinsJetPt, fIJJetPtMin, fIJJetPtMax,
2012 fIJNBinsPt, fIJPtMin, fIJPtMax,
2013 fIJNBinsZ, fIJZMin, fIJZMax,
2014 fIJNBinsCosTheta , fIJCosThetaMin , fIJCosThetaMax,
2015 fIJNBinsTheta , fIJThetaMin , fIJThetaMax,
2016 fIJNBinsJt , fIJJtMin , fIJJtMax);
2017 fIJHistosGenLeading = new AliFragFuncIntraJetHistos("GenLeading", fIJNBinsJetPt, fIJJetPtMin, fIJJetPtMax,
2018 fIJNBinsPt, fIJPtMin, fIJPtMax,
2019 fIJNBinsZ, fIJZMin, fIJZMax,
2020 fIJNBinsCosTheta , fIJCosThetaMin , fIJCosThetaMax,
2021 fIJNBinsTheta , fIJThetaMin , fIJThetaMax,
2022 fIJNBinsJt , fIJJtMin , fIJJtMax);
2023 fIJHistosGenLeadingTrack = new AliFragFuncIntraJetHistos("GenLeadingTrack", fIJNBinsJetPt, fIJJetPtMin, fIJJetPtMax,
2024 fIJNBinsPt, fIJPtMin, fIJPtMax,
2025 fIJNBinsZ, fIJZMin, fIJZMax,
2026 fIJNBinsCosTheta , fIJCosThetaMin , fIJCosThetaMax,
2027 fIJNBinsTheta , fIJThetaMin , fIJThetaMax,
2028 fIJNBinsJt , fIJJtMin , fIJJtMax);
2031 fFFDiJetHistosRecCuts = new AliFragFuncDiJetHistos("RecCuts", fDiJetKindBins,
2032 fDiJetNBinsJetInvMass, fDiJetJetInvMassMin, fDiJetJetInvMassMax,
2033 fDiJetNBinsJetPt, fDiJetJetPtMin, fDiJetJetPtMax,
2034 fDiJetNBinsPt, fDiJetPtMin, fDiJetPtMax,
2035 fDiJetNBinsXi, fDiJetXiMin, fDiJetXiMax,
2036 fDiJetNBinsZ, fDiJetZMin, fDiJetZMax);
2037 fFFDiJetHistosRecLeading = new AliFragFuncDiJetHistos("RecLeading", fDiJetKindBins,
2038 fDiJetNBinsJetInvMass, fDiJetJetInvMassMin, fDiJetJetInvMassMax,
2039 fDiJetNBinsJetPt, fDiJetJetPtMin, fDiJetJetPtMax,
2040 fDiJetNBinsPt, fDiJetPtMin, fDiJetPtMax,
2041 fDiJetNBinsXi, fDiJetXiMin, fDiJetXiMax,
2042 fDiJetNBinsZ, fDiJetZMin, fDiJetZMax);
2043 fFFDiJetHistosRecLeadingTrack = new AliFragFuncDiJetHistos("RecLeadingTrack", fDiJetKindBins,
2044 fDiJetNBinsJetInvMass, fDiJetJetInvMassMin, fDiJetJetInvMassMax,
2045 fDiJetNBinsJetPt, fDiJetJetPtMin, fDiJetJetPtMax,
2046 fDiJetNBinsPt, fDiJetPtMin, fDiJetPtMax,
2047 fDiJetNBinsXi, fDiJetXiMin, fDiJetXiMax,
2048 fDiJetNBinsZ, fDiJetZMin, fDiJetZMax);
2050 fFFDiJetHistosGen = new AliFragFuncDiJetHistos("Gen", fDiJetKindBins,
2051 fDiJetNBinsJetInvMass, fDiJetJetInvMassMin, fDiJetJetInvMassMax,
2052 fDiJetNBinsJetPt, fDiJetJetPtMin, fDiJetJetPtMax,
2053 fDiJetNBinsPt, fDiJetPtMin, fDiJetPtMax,
2054 fDiJetNBinsXi, fDiJetXiMin, fDiJetXiMax,
2055 fDiJetNBinsZ, fDiJetZMin, fDiJetZMax);
2056 fFFDiJetHistosGenLeading = new AliFragFuncDiJetHistos("GenLeading", fDiJetKindBins,
2057 fDiJetNBinsJetInvMass, fDiJetJetInvMassMin, fDiJetJetInvMassMax,
2058 fDiJetNBinsJetPt, fDiJetJetPtMin, fDiJetJetPtMax,
2059 fDiJetNBinsPt, fDiJetPtMin, fDiJetPtMax,
2060 fDiJetNBinsXi, fDiJetXiMin, fDiJetXiMax,
2061 fDiJetNBinsZ, fDiJetZMin, fDiJetZMax);
2062 fFFDiJetHistosGenLeadingTrack = new AliFragFuncDiJetHistos("GenLeadingTrack", fDiJetKindBins,
2063 fDiJetNBinsJetInvMass, fDiJetJetInvMassMin, fDiJetJetInvMassMax,
2064 fDiJetNBinsJetPt, fDiJetJetPtMin, fDiJetJetPtMax,
2065 fDiJetNBinsPt, fDiJetPtMin, fDiJetPtMax,
2066 fDiJetNBinsXi, fDiJetXiMin, fDiJetXiMax,
2067 fDiJetNBinsZ, fDiJetZMin, fDiJetZMax);
2069 fQADiJetHistosRecCuts = new AliFragFuncQADiJetHistos("RecCuts", fDiJetKindBins,
2070 fQADiJetNBinsInvMass, fQADiJetInvMassMin, fQADiJetInvMassMax,
2071 fQADiJetNBinsJetPt, fQADiJetJetPtMin, fQADiJetJetPtMax,
2072 fQADiJetNBinsDeltaPhi, fQADiJetDeltaPhiMin, fQADiJetDeltaPhiMax ,
2073 fQADiJetNBinsDeltaEta, fQADiJetDeltaEtaMin, fQADiJetDeltaEtaMax ,
2074 fQADiJetNBinsDeltaPt, fQADiJetDeltaPtMin, fQADiJetDeltaPtMax);
2075 fQADiJetHistosGen = new AliFragFuncQADiJetHistos("Gen", fDiJetKindBins,
2076 fQADiJetNBinsInvMass, fQADiJetInvMassMin, fQADiJetInvMassMax,
2077 fDiJetNBinsJetPt, fDiJetJetPtMin, fDiJetJetPtMax,
2078 fQADiJetNBinsDeltaPhi, fQADiJetDeltaPhiMin, fQADiJetDeltaPhiMax,
2079 fQADiJetNBinsDeltaEta, fQADiJetDeltaEtaMin, fQADiJetDeltaEtaMax,
2080 fQADiJetNBinsDeltaPt, fQADiJetDeltaPtMin, fQADiJetDeltaPtMax);
2083 fQATrackHistosRec->DefineHistos();
2084 fQATrackHistosRecCuts->DefineHistos();
2085 fQATrackHistosGen->DefineHistos();
2087 fQAJetHistosRec->DefineHistos();
2088 fQAJetHistosRecCuts->DefineHistos();
2089 fQAJetHistosRecCutsLeading->DefineHistos();
2090 fQAJetHistosGen->DefineHistos();
2091 fQAJetHistosGenLeading->DefineHistos();
2092 fQAJetHistosRecEffLeading->DefineHistos();
2094 fFFHistosRecCuts->DefineHistos();
2095 fFFHistosRecLeading->DefineHistos();
2096 fFFHistosRecLeadingTrack->DefineHistos();
2097 fFFHistosGen->DefineHistos();
2098 fFFHistosGenLeading->DefineHistos();
2099 fFFHistosGenLeadingTrack->DefineHistos();
2101 fIJHistosRecCuts->DefineHistos();
2102 fIJHistosRecLeading->DefineHistos();
2103 fIJHistosRecLeadingTrack->DefineHistos();
2104 fIJHistosGen->DefineHistos();
2105 fIJHistosGenLeading->DefineHistos();
2106 fIJHistosGenLeadingTrack->DefineHistos();
2108 fFFDiJetHistosRecCuts->DefineDiJetHistos();
2109 fFFDiJetHistosRecLeading->DefineDiJetHistos();
2110 fFFDiJetHistosRecLeadingTrack->DefineDiJetHistos();
2111 fFFDiJetHistosGen->DefineDiJetHistos();
2112 fFFDiJetHistosGenLeading->DefineDiJetHistos();
2113 fFFDiJetHistosGenLeadingTrack->DefineDiJetHistos();
2114 fQADiJetHistosRecCuts->DefineQADiJetHistos();
2115 fQADiJetHistosGen->DefineQADiJetHistos();
2117 Bool_t genJets = (fJetTypeGen != kJetsUndef) ? kTRUE : kFALSE;
2118 Bool_t genTracks = (fTrackTypeGen != kTrackUndef) ? kTRUE : kFALSE;
2119 Bool_t recJetsEff = (fJetTypeRecEff != kJetsUndef) ? kTRUE : kFALSE;
2122 const Int_t saveLevel = 5;
2124 fCommonHistList->Add(fh1EvtSelection);
2125 fFFHistosRecCuts->AddToOutput(fCommonHistList);
2126 fFFHistosRecLeading->AddToOutput(fCommonHistList);
2127 fFFHistosRecLeadingTrack->AddToOutput(fCommonHistList);
2129 if(genJets && genTracks){
2130 fFFHistosGen->AddToOutput(fCommonHistList);
2131 fFFHistosGenLeading->AddToOutput(fCommonHistList);
2132 fFFHistosGenLeadingTrack->AddToOutput(fCommonHistList);
2134 fCommonHistList->Add(fh1Xsec);
2135 fCommonHistList->Add(fh1Trials);
2136 fCommonHistList->Add(fh1PtHard);
2137 fCommonHistList->Add(fh1PtHardTrials);
2141 fQATrackHistosRec->AddToOutput(fCommonHistList);
2142 fQATrackHistosRecCuts->AddToOutput(fCommonHistList);
2143 if(genTracks) fQATrackHistosGen->AddToOutput(fCommonHistList);
2145 fQAJetHistosRec->AddToOutput(fCommonHistList);
2146 fQAJetHistosRecCuts->AddToOutput(fCommonHistList);
2147 fQAJetHistosRecCutsLeading->AddToOutput(fCommonHistList);
2148 if(recJetsEff) fQAJetHistosRecEffLeading->AddToOutput(fCommonHistList);
2151 fQAJetHistosGen->AddToOutput(fCommonHistList);
2152 fQAJetHistosGenLeading->AddToOutput(fCommonHistList);
2155 fCommonHistList->Add(fh1EvtMult);
2156 fCommonHistList->Add(fh1nRecJetsCuts);
2157 if(genJets) fCommonHistList->Add(fh1nGenJets);
2160 fCommonHistList->Add(fh1VertexNContributors);
2161 fCommonHistList->Add(fh1VertexZ);
2164 fIJHistosRecCuts->AddToOutput(fCommonHistList);
2165 fIJHistosRecLeading->AddToOutput(fCommonHistList);
2166 fIJHistosRecLeadingTrack->AddToOutput(fCommonHistList);
2168 if(genJets && genTracks){
2169 fIJHistosGen->AddToOutput(fCommonHistList);
2170 fIJHistosGenLeading->AddToOutput(fCommonHistList);
2171 fIJHistosGenLeadingTrack->AddToOutput(fCommonHistList);
2175 fFFDiJetHistosRecCuts->AddToOutput(fCommonHistList);
2176 fFFDiJetHistosRecLeading->AddToOutput(fCommonHistList);
2177 fFFDiJetHistosRecLeadingTrack->AddToOutput(fCommonHistList);
2178 fQADiJetHistosRecCuts->AddToOutput(fCommonHistList);
2180 if(genJets && genTracks){
2181 fFFDiJetHistosGen->AddToOutput(fCommonHistList);
2182 fFFDiJetHistosGenLeading->AddToOutput(fCommonHistList);
2183 fFFDiJetHistosGenLeadingTrack->AddToOutput(fCommonHistList);
2184 fQADiJetHistosGen->AddToOutput(fCommonHistList);
2187 if(recJetsEff && genTracks){
2188 fCommonHistList->Add(fhnSingleTrackRecEffHisto);
2189 fCommonHistList->Add(fhnJetTrackRecEffHisto);
2190 fCommonHistList->Add(fh1nRecEffJets);
2194 // =========== Switch on Sumw2 for all histos ===========
2195 for (Int_t i=0; i<fCommonHistList->GetEntries(); ++i){
2196 TH1 *h1 = dynamic_cast<TH1*>(fCommonHistList->At(i));
2197 if (h1) h1->Sumw2();
2199 THnSparse *hnSparse = dynamic_cast<THnSparse*>(fCommonHistList->At(i));
2200 if(hnSparse) hnSparse->Sumw2();
2204 TH1::AddDirectory(oldStatus);
2207 //_______________________________________________
2208 void AliAnalysisTaskFragmentationFunction::Init()
2211 if(fDebug > 1) Printf("AliAnalysisTaskFragmentationFunction::Init()");
2215 //_____________________________________________________________
2216 void AliAnalysisTaskFragmentationFunction::UserExec(Option_t *)
2219 // Called for each event
2220 if(fDebug > 1) Printf("AliAnalysisTaskFragmentationFunction::UserExec()");
2223 if(fDebug > 1) Printf("Analysis event #%5d", (Int_t) fEntry);
2224 // Trigger selection
2226 AliInputEventHandler* inputHandler = (AliInputEventHandler*)
2227 ((AliAnalysisManager::GetAnalysisManager())->GetInputEventHandler());
2228 if(inputHandler->IsEventSelected() & AliVEvent::kMB){
2229 if(fDebug > 1) Printf(" Trigger Selection: event ACCEPTED ... ");
2230 fh1EvtSelection->Fill(1.);
2232 fh1EvtSelection->Fill(0.);
2233 if(inputHandler->InheritsFrom("AliESDInputHandler") && fUsePhysicsSelection){ // PhysicsSelection only with ESD input
2234 if (fDebug > 1 ) Printf(" Trigger Selection: event REJECTED ... ");
2235 PostData(1, fCommonHistList);
2240 fESD = dynamic_cast<AliESDEvent*>(InputEvent());
2242 if(fDebug>3) Printf("%s:%d ESDEvent not found in the input", (char*)__FILE__,__LINE__);
2245 fMCEvent = MCEvent();
2247 if(fDebug>3) Printf("%s:%d MCEvent not found in the input", (char*)__FILE__,__LINE__);
2250 // get AOD event from input/ouput
2251 TObject* handler = AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler();
2252 if( handler && handler->InheritsFrom("AliAODInputHandler") ) {
2253 fAOD = ((AliAODInputHandler*)handler)->GetEvent();
2254 if (fDebug > 1) Printf("%s:%d AOD event from input", (char*)__FILE__,__LINE__);
2257 handler = AliAnalysisManager::GetAnalysisManager()->GetOutputEventHandler();
2258 if( handler && handler->InheritsFrom("AliAODHandler") ) {
2259 fAOD = ((AliAODHandler*)handler)->GetAOD();
2260 if (fDebug > 1) Printf("%s:%d AOD event from output", (char*)__FILE__,__LINE__);
2265 Printf("%s:%d AODEvent not found", (char*)__FILE__,__LINE__);
2270 // event selection (vertex) *****************************************
2272 AliAODVertex* primVtx = fAOD->GetPrimaryVertex();
2273 Int_t nTracksPrim = primVtx->GetNContributors();
2274 fh1VertexNContributors->Fill(nTracksPrim);
2276 if (fDebug > 1) Printf("%s:%d primary vertex selection: %d", (char*)__FILE__,__LINE__,nTracksPrim);
2278 if (fDebug > 1) Printf("%s:%d primary vertex selection: event REJECTED...",(char*)__FILE__,__LINE__);
2279 fh1EvtSelection->Fill(2.);
2280 PostData(1, fCommonHistList);
2284 fh1VertexZ->Fill(primVtx->GetZ());
2286 if(TMath::Abs(primVtx->GetZ())>10){
2287 if (fDebug > 1) Printf("%s:%d primary vertex z = %f: event REJECTED...",(char*)__FILE__,__LINE__,primVtx->GetZ());
2288 fh1EvtSelection->Fill(3.);
2289 PostData(1, fCommonHistList);
2293 TString primVtxName(primVtx->GetName());
2295 if(primVtxName.CompareTo("TPCVertex",TString::kIgnoreCase) == 1){
2296 if (fDebug > 1) Printf("%s:%d primary vertex selection: TPC vertex, event REJECTED...",(char*)__FILE__,__LINE__);
2297 fh1EvtSelection->Fill(4.);
2298 PostData(1, fCommonHistList);
2301 if (fDebug > 1) Printf("%s:%d primary vertex selection: event ACCEPTED ...",(char*)__FILE__,__LINE__);
2302 fh1EvtSelection->Fill(5.);
2305 //___ get MC information __________________________________________________________________
2307 Double_t ptHard = 0.;
2308 Double_t nTrials = 1; // trials for MC trigger weight for real data
2310 AliGenPythiaEventHeader* pythiaGenHeader = AliAnalysisHelperJetTasks::GetPythiaEventHeader(fMCEvent);
2311 if(!pythiaGenHeader){
2312 if(fJetTypeGen != kJetsUndef && fTrackTypeGen != kTrackUndef){
2313 Printf("%s:%d no pythiaGenHeader found", (char*)__FILE__,__LINE__);
2317 nTrials = pythiaGenHeader->Trials();
2318 ptHard = pythiaGenHeader->GetPtHard();
2320 fh1PtHard->Fill(ptHard);
2321 fh1PtHardTrials->Fill(ptHard,nTrials);
2325 //___ fetch jets __________________________________________________________________________
2327 Int_t nJ = GetListOfJets(fJetsRec, kJetsRec);
2329 if(nJ>=0) nRecJets = fJetsRec->GetEntries();
2330 if(fDebug>2)Printf("%s:%d Selected Rec jets: %d %d",(char*)__FILE__,__LINE__,nJ,nRecJets);
2331 if(nJ != nRecJets) Printf("%s:%d Mismatch Selected Rec Jets: %d %d",(char*)__FILE__,__LINE__,nJ,nRecJets);
2333 Int_t nJCuts = GetListOfJets(fJetsRecCuts, kJetsRecAcceptance);
2334 Int_t nRecJetsCuts = 0;
2335 if(nJCuts>=0) nRecJetsCuts = fJetsRecCuts->GetEntries();
2336 if(fDebug>2)Printf("%s:%d Selected Rec jets after cuts: %d %d",(char*)__FILE__,__LINE__,nJCuts,nRecJetsCuts);
2337 if(nRecJetsCuts != nJCuts) Printf("%s:%d Mismatch selected Rec jets after cuts: %d %d",(char*)__FILE__,__LINE__,nJCuts,nRecJetsCuts);
2338 fh1nRecJetsCuts->Fill(nRecJetsCuts);
2341 if(fJetTypeGen==kJetsKine || fJetTypeGen == kJetsKineAcceptance) fJetsGen->SetOwner(kTRUE); // kine aod jets allocated on heap, delete them with TList::Clear()
2342 Int_t nJGen = GetListOfJets(fJetsGen, fJetTypeGen);
2344 if(nJGen>=0) nGenJets = fJetsGen->GetEntries();
2345 if(fDebug>2)Printf("%s:%d Selected Gen jets: %d %d",(char*)__FILE__,__LINE__,nJGen,nGenJets);
2346 if(nJGen != nGenJets) Printf("%s:%d Mismatch selected Gen jets: %d %d",(char*)__FILE__,__LINE__,nJGen,nGenJets);
2347 fh1nGenJets->Fill(nGenJets);
2350 if(fJetTypeRecEff==kJetsKine || fJetTypeRecEff == kJetsKineAcceptance) fJetsRecEff->SetOwner(kTRUE); // kine aod jets allocated on heap, delete them with TList::Clear()
2351 Int_t nJRecEff = GetListOfJets(fJetsRecEff, fJetTypeRecEff);
2352 Int_t nRecEffJets = 0;
2353 if(nJRecEff>=0) nRecEffJets = fJetsRecEff->GetEntries();
2354 if(fDebug>2)Printf("%s:%d Selected RecEff jets: %d %d",(char*)__FILE__,__LINE__,nJRecEff,nRecEffJets);
2355 if(nJRecEff != nRecEffJets) Printf("%s:%d Mismatch selected RecEff jets: %d %d",(char*)__FILE__,__LINE__,nJRecEff,nRecEffJets);
2356 fh1nRecEffJets->Fill(nRecEffJets);
2359 //____ fetch particles __________________________________________________________
2361 Int_t nT = GetListOfTracks(fTracksRec, kTrackAOD);
2363 if(nT>=0) nRecPart = fTracksRec->GetEntries();
2364 if(fDebug>2)Printf("%s:%d Selected Rec tracks: %d %d",(char*)__FILE__,__LINE__,nT,nRecPart);
2365 if(nRecPart != nT) Printf("%s:%d Mismatch selected Rec tracks: %d %d",(char*)__FILE__,__LINE__,nT,nRecPart);
2368 Int_t nTCuts = GetListOfTracks(fTracksRecCuts, kTrackAODCuts);
2369 Int_t nRecPartCuts = 0;
2370 if(nTCuts>=0) nRecPartCuts = fTracksRecCuts->GetEntries();
2371 if(fDebug>2)Printf("%s:%d Selected Rec tracks after cuts: %d %d",(char*)__FILE__,__LINE__,nTCuts,nRecPartCuts);
2372 if(nRecPartCuts != nTCuts) Printf("%s:%d Mismatch selected Rec tracks after cuts: %d %d",(char*)__FILE__,__LINE__,nTCuts,nRecPartCuts);
2373 fh1EvtMult->Fill(nRecPartCuts);
2376 Int_t nTGen = GetListOfTracks(fTracksGen,fTrackTypeGen);
2378 if(nTGen>=0) nGenPart = fTracksGen->GetEntries();
2379 if(fDebug>2)Printf("%s:%d Selected Gen tracks: %d %d",(char*)__FILE__,__LINE__,nTGen,nGenPart);
2380 if(nGenPart != nTGen) Printf("%s:%d Mismatch selected Gen tracks: %d %d",(char*)__FILE__,__LINE__,nTGen,nGenPart);
2383 //____ analysis, fill histos ___________________________________________________
2387 for(Int_t it=0; it<nRecPart; ++it){
2388 AliVParticle *part = dynamic_cast<AliVParticle*>(fTracksRec->At(it));
2389 fQATrackHistosRec->FillTrackQA( part->Eta(), TVector2::Phi_0_2pi(part->Phi()), part->Pt());
2391 for(Int_t it=0; it<nRecPartCuts; ++it){
2392 AliVParticle *part = dynamic_cast<AliVParticle*>(fTracksRecCuts->At(it));
2393 fQATrackHistosRecCuts->FillTrackQA( part->Eta(), TVector2::Phi_0_2pi(part->Phi()), part->Pt());
2395 for(Int_t it=0; it<nGenPart; ++it){
2396 AliVParticle *part = dynamic_cast<AliVParticle*>(fTracksGen->At(it));
2397 fQATrackHistosGen->FillTrackQA( part->Eta(), TVector2::Phi_0_2pi(part->Phi()), part->Pt());
2402 for(Int_t ij=0; ij<nRecJets; ++ij){
2404 AliAODJet* jet = dynamic_cast<AliAODJet*>(fJetsRec->At(ij));
2405 fQAJetHistosRec->FillJetQA( jet->Eta(), TVector2::Phi_0_2pi(jet->Phi()), jet->Pt());
2409 for(Int_t ij=0; ij<nRecJetsCuts; ++ij){
2411 AliAODJet* jet = dynamic_cast<AliAODJet*>(fJetsRecCuts->At(ij));
2412 fQAJetHistosRecCuts->FillJetQA( jet->Eta(), TVector2::Phi_0_2pi(jet->Phi()), jet->Pt());
2414 if(ij==0){ // leading jet
2416 fQAJetHistosRecCutsLeading->FillJetQA( jet->Eta(), TVector2::Phi_0_2pi(jet->Phi()), jet->Pt() );
2418 TList* jettracklist = new TList();
2419 Double_t sumPt = 0.;
2420 Float_t leadTrackPx = 0.;
2421 Float_t leadTrackPy = 0.;
2422 Float_t leadTrackPz = 0.;
2423 Float_t leadTrackP = 0.;
2424 Float_t leadTrackPt = 0.;
2425 TLorentzVector* leadTrackV = new TLorentzVector();
2427 if(GetFFRadius()<=0){
2428 GetJetTracksTrackrefs(jettracklist, jet);
2430 GetJetTracksPointing(fTracksRecCuts, jettracklist, jet, GetFFRadius(), sumPt);
2433 for(Int_t it=0; it<jettracklist->GetSize(); ++it){
2434 Float_t trackPx = (dynamic_cast<AliVParticle*> (jettracklist->At(it)))->Px();
2435 Float_t trackPy = (dynamic_cast<AliVParticle*> (jettracklist->At(it)))->Py();
2436 Float_t trackPz = (dynamic_cast<AliVParticle*> (jettracklist->At(it)))->Pz();
2437 Float_t trackP = (dynamic_cast<AliVParticle*> (jettracklist->At(it)))->P();
2438 Float_t trackPt = (dynamic_cast<AliVParticle*> (jettracklist->At(it)))->Pt();
2439 Float_t jetPx = jet->Px();
2440 Float_t jetPy = jet->Py();
2441 Float_t jetPz = jet->Pz();
2442 Float_t jetP = jet->P();
2443 Float_t jetPt = jet->Pt();
2444 TLorentzVector* trackV = new TLorentzVector();
2445 TLorentzVector *jetV = new TLorentzVector();
2446 trackV->SetPxPyPzE(trackPx,trackPy,trackPz,trackP);
2447 jetV->SetPxPyPzE(jetPx,jetPy,jetPz,jetP);
2449 Bool_t incrementJetPt = (it==0) ? kTRUE : kFALSE;
2451 fFFHistosRecCuts->FillFF( trackPt, jetPt, incrementJetPt);
2452 fIJHistosRecCuts->FillIntraJet( trackV, jetV );
2455 leadTrackPx = trackPx;
2456 leadTrackPy = trackPy;
2457 leadTrackPz = trackPz;
2458 leadTrackP = trackP;
2459 leadTrackPt = trackPt;
2460 fFFHistosRecLeadingTrack->FillFF( leadTrackPt, jetPt, kTRUE);
2462 leadTrackV->SetPxPyPzE(leadTrackPx,leadTrackPy,leadTrackPz,leadTrackP);
2463 fIJHistosRecLeadingTrack->FillIntraJet( leadTrackV, jetV );
2465 fFFHistosRecLeading->FillFF( trackPt, leadTrackPt , incrementJetPt);
2466 fIJHistosRecLeading->FillIntraJet( trackV, leadTrackV );
2473 delete jettracklist;
2478 for(Int_t ij=0; ij<nGenJets; ++ij){
2480 AliAODJet* jet = dynamic_cast<AliAODJet*>(fJetsGen->At(ij));
2481 fQAJetHistosGen->FillJetQA( jet->Eta(), TVector2::Phi_0_2pi(jet->Phi()), jet->Pt());
2483 if(ij==0){ // leading jet
2485 fQAJetHistosGenLeading->FillJetQA( jet->Eta(), TVector2::Phi_0_2pi(jet->Phi()), jet->Pt());
2487 TList* jettracklist = new TList();
2488 Double_t sumPt = 0.;
2489 Float_t leadTrackPx = 0.;
2490 Float_t leadTrackPy = 0.;
2491 Float_t leadTrackPz = 0.;
2492 Float_t leadTrackP = 0.;
2493 Float_t leadTrackPt = 0.;
2494 TLorentzVector* leadTrackV = new TLorentzVector();
2496 if(GetFFRadius()<=0){
2497 GetJetTracksTrackrefs(jettracklist, jet);
2499 GetJetTracksPointing(fTracksGen, jettracklist, jet, GetFFRadius(), sumPt);
2502 for(Int_t it=0; it<jettracklist->GetSize(); ++it){
2503 Float_t trackPx = (dynamic_cast<AliVParticle*>(jettracklist->At(it)))->Px();
2504 Float_t trackPy = (dynamic_cast<AliVParticle*>(jettracklist->At(it)))->Py();
2505 Float_t trackPz = (dynamic_cast<AliVParticle*>(jettracklist->At(it)))->Pz();
2506 Float_t trackP = (dynamic_cast<AliVParticle*>(jettracklist->At(it)))->P();
2507 Float_t trackPt = (dynamic_cast<AliVParticle*>(jettracklist->At(it)))->Pt();
2508 Float_t jetPx = jet->Px();
2509 Float_t jetPy = jet->Py();
2510 Float_t jetPz = jet->Pz();
2511 Float_t jetP = jet->P();
2512 Float_t jetPt = jet->Pt();
2513 TLorentzVector* trackV = new TLorentzVector();
2514 TLorentzVector *jetV = new TLorentzVector();
2515 trackV->SetPxPyPzE(trackPx,trackPy,trackPz,trackP);
2516 jetV->SetPxPyPzE(jetPx,jetPy,jetPz,jetP);
2518 Bool_t incrementJetPt = (it==0) ? kTRUE : kFALSE;
2520 fFFHistosGen->FillFF( trackPt, jetPt, incrementJetPt);
2521 fIJHistosGen->FillIntraJet( trackV, jetV );
2524 leadTrackPx = trackPx;
2525 leadTrackPy = trackPy;
2526 leadTrackPz = trackPz;
2527 leadTrackP = trackP;
2528 leadTrackPt = trackPt;
2529 fFFHistosGenLeadingTrack->FillFF( leadTrackPt, jetPt, kTRUE);
2531 leadTrackV->SetPxPyPzE(leadTrackPx,leadTrackPy,leadTrackPz,leadTrackP);
2532 fIJHistosGenLeadingTrack->FillIntraJet( leadTrackV, jetV );
2534 fFFHistosGenLeading->FillFF( trackPt, leadTrackPt, incrementJetPt);
2535 fIJHistosGenLeading->FillIntraJet( trackV, leadTrackV );
2542 delete jettracklist;
2546 //_______ DiJet part _____________________________________________________
2548 if (nRecJetsCuts > 1) // OB: debugged this
2551 AliAODJet* jet1 = dynamic_cast<AliAODJet*>(fJetsRecCuts->At(0));
2552 AliAODJet* jet2 = dynamic_cast<AliAODJet*>(fJetsRecCuts->At(1));
2554 // DiJet deltaphi calculation
2555 Double_t phi1 = TVector2::Phi_0_2pi(jet1->Phi());
2556 Double_t phi2 = TVector2::Phi_0_2pi(jet2->Phi());
2557 Double_t deltaPhi = TMath::Abs(phi1-phi2);
2558 if (deltaPhi > TMath::Pi() && deltaPhi < 2*TMath::Pi()) deltaPhi = 2*TMath::Pi() - deltaPhi;
2560 // DiJet CDF cut calculation
2561 Double_t Et1 = TMath::Abs(jet1->E()*TMath::Sin(jet1->Theta()));
2562 Double_t Et2 = TMath::Abs(jet2->E()*TMath::Sin(jet2->Theta()));
2563 Double_t sumEt = Et1 + Et2;
2564 Double_t normEt1PlusEt2 = TMath::Sqrt(Et1*Et1+Et2*Et2+2*Et1*Et2*TMath::Cos(deltaPhi));
2565 Double_t ratio = (Double_t)(normEt1PlusEt2/sumEt);
2567 // DiJet events selection
2568 Bool_t positionCut = 0;
2569 Bool_t positionEnergyCut = 0;
2573 if (deltaPhi > fDiJetDeltaPhiCut) positionCut = 1;
2574 // Position-Energy cut :
2575 if ((deltaPhi > fDiJetDeltaPhiCut) && ((jet2->Pt()) >= fDiJetPtFractionCut*(jet1->Pt()))) positionEnergyCut = 1;
2577 if (ratio < fDiJetCDFCut) cdfCut = 1;
2581 if (fDiJetCut == 1 && positionCut == 1) go = 1;
2582 if (fDiJetCut == 2 && positionEnergyCut == 1) go = 1;
2583 if (fDiJetCut == 3 && cdfCut == 1) go = 1;
2587 Double_t deltaEta = TMath::Abs(jet1->Eta()-jet2->Eta());
2588 Double_t deltaPt = TMath::Abs(jet1->Pt()-jet2->Pt());
2589 Double_t meanEt = (Double_t)((Et1+Et2)/2.);
2590 Double_t invariantMass = (Double_t)InvMass(jet1,jet2);
2592 Double_t jetBin = GetDiJetBin(invariantMass, jet1->Pt(), meanEt, fDiJetKindBins);
2596 fQADiJetHistosRecCuts->FillDiJetQA(invariantMass, deltaPhi, deltaEta, deltaPt, jetBin);
2598 TList* jettracklist1 = new TList();
2599 Double_t sumPt1 = 0.;
2600 Float_t leadTrackPt1 = 0;
2602 TList* jettracklist2 = new TList();
2603 Double_t sumPt2 = 0.;
2604 Float_t leadTrackPt2 = 0;
2606 if(GetFFRadius()<=0)
2608 GetJetTracksTrackrefs(jettracklist1, jet1);
2609 GetJetTracksTrackrefs(jettracklist2, jet2);
2613 GetJetTracksPointing(fTracksRecCuts, jettracklist1, jet1, GetFFRadius(), sumPt1);
2614 GetJetTracksPointing(fTracksRecCuts, jettracklist2, jet2, GetFFRadius(), sumPt2);
2617 Int_t nTracks = jettracklist1->GetSize();
2618 if (jettracklist1->GetSize() < jettracklist2->GetSize()) nTracks = jettracklist2->GetSize();
2620 for(Int_t it=0; it<nTracks; ++it)
2622 if (it < jettracklist1->GetSize())
2624 Float_t trackPt1 = (dynamic_cast<AliVParticle*> (jettracklist1->At(it)))->Pt();
2625 Float_t jetPt1 = jet1->Pt();
2627 Bool_t incrementJetPt = (it==0) ? kTRUE : kFALSE;
2629 fFFDiJetHistosRecCuts->FillDiJetFF(1, trackPt1, jetPt1, jetBin, incrementJetPt);
2630 fFFDiJetHistosRecCuts->FillDiJetFF(0, trackPt1, jetPt1, jetBin, incrementJetPt);
2634 leadTrackPt1 = trackPt1;
2636 fFFDiJetHistosRecLeadingTrack->FillDiJetFF(1, leadTrackPt1, jetPt1, jetBin, kTRUE);
2637 fFFDiJetHistosRecLeadingTrack->FillDiJetFF(0, leadTrackPt1, jetPt1, jetBin, kTRUE);
2640 fFFDiJetHistosRecLeading->FillDiJetFF(1, trackPt1, leadTrackPt1, jetBin, incrementJetPt);
2641 fFFDiJetHistosRecLeading->FillDiJetFF(0, trackPt1, leadTrackPt1, jetBin, incrementJetPt);
2644 if (it < jettracklist2->GetSize())
2646 Float_t trackPt2 = (dynamic_cast<AliVParticle*>(jettracklist2->At(it)))->Pt();
2647 Float_t jetPt2 = jet2->Pt();
2649 Bool_t incrementJetPt = (it==0) ? kTRUE : kFALSE;
2651 fFFDiJetHistosRecCuts->FillDiJetFF(2, trackPt2, jetPt2, jetBin, incrementJetPt);
2652 fFFDiJetHistosRecCuts->FillDiJetFF(0, trackPt2, jetPt2, jetBin, incrementJetPt);
2656 leadTrackPt2 = trackPt2;
2658 fFFDiJetHistosRecLeadingTrack->FillDiJetFF(2, leadTrackPt2, jetPt2, jetBin, kTRUE);
2659 fFFDiJetHistosRecLeadingTrack->FillDiJetFF(0, leadTrackPt2, jetPt2, jetBin, kTRUE);
2662 fFFDiJetHistosRecLeading->FillDiJetFF(2, trackPt2, leadTrackPt2, jetBin, incrementJetPt);
2663 fFFDiJetHistosRecLeading->FillDiJetFF(0, trackPt2, leadTrackPt2, jetBin, incrementJetPt);
2665 } // End loop on tracks
2667 delete jettracklist1;
2668 delete jettracklist2;
2670 } // End if(jetBin > 0)
2671 else { Printf("Jet bins for di-jet studies not set !");}
2673 } // End if(nRecJets > 1)
2677 AliAODJet* jet1 = dynamic_cast<AliAODJet*>(fJetsGen->At(0));
2678 AliAODJet* jet2 = dynamic_cast<AliAODJet*>(fJetsGen->At(1));
2680 Double_t deltaPhi = 0;
2681 Double_t phi1 = TVector2::Phi_0_2pi(jet1->Phi());
2682 Double_t phi2 = TVector2::Phi_0_2pi(jet2->Phi());
2683 deltaPhi = TMath::Abs(phi1-phi2);
2684 if (deltaPhi > TMath::Pi() && deltaPhi < 2*TMath::Pi()) deltaPhi = 2*TMath::Pi() - deltaPhi;
2686 Double_t Et1 = TMath::Abs(jet1->E()*TMath::Sin(jet1->Theta()));
2687 Double_t Et2 = TMath::Abs(jet2->E()*TMath::Sin(jet2->Theta()));
2688 Double_t sumEt = Et1 + Et2;
2689 Double_t normEt1PlusEt2 = TMath::Sqrt(Et1*Et1+Et2*Et2+2*Et1*Et2*TMath::Cos(deltaPhi));
2690 Double_t ratio = (Double_t)(normEt1PlusEt2/sumEt);
2692 // DiJet events selection
2693 Bool_t positionCut = 0;
2694 Bool_t positionEnergyCut = 0;
2698 if (deltaPhi > fDiJetDeltaPhiCut) positionCut = 1;
2699 // Position-Energy cut :
2700 if ((deltaPhi > fDiJetDeltaPhiCut) && ((jet2->Pt()) >= fDiJetPtFractionCut*(jet1->Pt()))) positionEnergyCut = 1;
2702 if (ratio < fDiJetCDFCut) cdfCut = 1;
2706 if (fDiJetCut == 1 && positionCut == 1) go = 1;
2707 if (fDiJetCut == 2 && positionEnergyCut == 1) go = 1;
2708 if (fDiJetCut == 3 && cdfCut == 1) go = 1;
2712 Double_t deltaEta = TMath::Abs(jet1->Eta()-jet2->Eta());
2713 Double_t deltaPt = TMath::Abs(jet1->Pt()-jet2->Pt());
2714 Double_t meanEt = (Double_t)((Et1+Et2)/2.);
2715 Double_t invariantMass = (Double_t)InvMass(jet1,jet2);
2717 Double_t jetBin = GetDiJetBin(invariantMass, jet1->Pt(), meanEt, fDiJetKindBins);
2721 fQADiJetHistosGen->FillDiJetQA(invariantMass, deltaPhi, deltaEta, deltaPt, jetBin);
2723 TList* jettracklist1 = new TList();
2724 Double_t sumPt1 = 0.;
2725 Float_t leadTrackPt1 = 0.;
2727 TList* jettracklist2 = new TList();
2728 Double_t sumPt2 = 0.;
2729 Float_t leadTrackPt2 = 0.;
2731 if(GetFFRadius()<=0)
2733 GetJetTracksTrackrefs(jettracklist1, jet1);
2734 GetJetTracksTrackrefs(jettracklist2, jet2);
2738 GetJetTracksPointing(fTracksGen, jettracklist1, jet1, GetFFRadius(), sumPt1);
2739 GetJetTracksPointing(fTracksGen, jettracklist2, jet2, GetFFRadius(), sumPt2);
2742 Int_t nTracks = jettracklist1->GetSize();
2743 if (jettracklist1->GetSize() < jettracklist2->GetSize()) nTracks = jettracklist2->GetSize();
2745 for(Int_t it=0; it<nTracks; ++it)
2747 if (it < jettracklist1->GetSize())
2749 Float_t trackPt1 = (dynamic_cast<AliAODTrack*>(jettracklist1->At(it)))->Pt();
2750 Float_t jetPt1 = jet1->Pt();
2752 Bool_t incrementJetPt = (it==0) ? kTRUE : kFALSE;
2754 fFFDiJetHistosGen->FillDiJetFF( 1, trackPt1, jetPt1, jetBin, incrementJetPt);
2755 fFFDiJetHistosGen->FillDiJetFF( 0, trackPt1, jetPt1, jetBin, incrementJetPt);
2759 leadTrackPt1 = trackPt1;
2761 fFFDiJetHistosGenLeadingTrack->FillDiJetFF( 1, leadTrackPt1, jetPt1, jetBin, kTRUE);
2762 fFFDiJetHistosGenLeadingTrack->FillDiJetFF( 0, leadTrackPt1, jetPt1, jetBin, kTRUE);
2765 fFFDiJetHistosGenLeading->FillDiJetFF( 1, trackPt1, leadTrackPt1, jetBin, incrementJetPt);
2766 fFFDiJetHistosGenLeading->FillDiJetFF( 0, trackPt1, leadTrackPt1, jetBin, incrementJetPt);
2769 if (it < jettracklist2->GetSize())
2771 Float_t trackPt2 = (dynamic_cast<AliAODTrack*>(jettracklist2->At(it)))->Pt();
2772 Float_t jetPt2 = jet2->Pt();
2774 Bool_t incrementJetPt = (it==0) ? kTRUE : kFALSE;
2776 fFFDiJetHistosGen->FillDiJetFF( 2, trackPt2, jetPt2, jetBin, incrementJetPt);
2777 fFFDiJetHistosGen->FillDiJetFF( 0, trackPt2, jetPt2, jetBin, incrementJetPt);
2781 leadTrackPt2 = trackPt2;
2783 fFFDiJetHistosGenLeadingTrack->FillDiJetFF( 2, leadTrackPt2, jetPt2, jetBin, kTRUE);
2784 fFFDiJetHistosGenLeadingTrack->FillDiJetFF( 0, leadTrackPt2, jetPt2, jetBin, kTRUE);
2787 fFFDiJetHistosGenLeading->FillDiJetFF( 2, trackPt2, leadTrackPt2, jetBin, incrementJetPt);
2788 fFFDiJetHistosGenLeading->FillDiJetFF( 0, trackPt2, leadTrackPt2, jetBin, incrementJetPt);
2790 } // End loop on tracks
2792 delete jettracklist1;
2793 delete jettracklist2;
2795 } // End if(jetBin > 0)
2796 else { Printf("Jet bins for di-jet studies not set !");}
2798 } // End if(nGenJets > 1)
2801 // ____ efficiency _______________________________
2803 // arrays for generated particles: reconstructed AOD track index, isPrimary flag
2807 // array for reconcstructed AOD tracks: generated particle index
2810 Int_t nTracksAODMCCharged = GetListOfTracks(fTracksAODMCCharged, kTrackAODMCCharged);
2811 if(fDebug>2)Printf("%s:%d selected AODMC tracks: %d ",(char*)__FILE__,__LINE__,nTracksAODMCCharged);
2813 Int_t nTracksRecQualityCuts = GetListOfTracks(fTracksRecQualityCuts, kTrackAODQualityCuts);
2814 if(fDebug>2)Printf("%s:%d selected rec tracks quality after cuts, full acceptance/pt : %d ",(char*)__FILE__,__LINE__,nTracksRecQualityCuts);
2816 // associate gen and rec tracks, store indices in TArrays
2817 AssociateGenRec(fTracksAODMCCharged,fTracksRecQualityCuts,indexAODTr,indexMCTr,isGenPrim);
2820 FillSingleTrackRecEffHisto(fhnSingleTrackRecEffHisto,fTracksAODMCCharged,fTracksRecQualityCuts,indexAODTr,isGenPrim);
2823 for(Int_t ij=0; ij<nRecEffJets; ++ij){
2825 AliAODJet* jet = dynamic_cast<AliAODJet*>(fJetsRecEff->At(ij));
2827 if(ij==0){ // leading jet
2829 TList* jettracklist = new TList();
2830 Double_t sumPt = 0.;
2832 GetJetTracksPointing(fTracksGen, jettracklist, jet, GetFFRadius(), sumPt); // for efficiency: gen tracks from pointing with gen/rec jet
2834 Double_t jetEta = jet->Eta();
2835 Double_t jetPhi = TVector2::Phi_0_2pi(jet->Phi());
2836 Double_t jetPt = sumPt;
2838 fQAJetHistosRecEffLeading->FillJetQA( jetEta, jetPhi, jetPt );
2839 FillJetTrackRecEffHisto(fhnJetTrackRecEffHisto,jetPhi,jetEta,jetPt,jettracklist,fTracksAODMCCharged,indexAODTr,isGenPrim);
2841 delete jettracklist;
2845 //___________________
2847 fTracksRec->Clear();
2848 fTracksRecCuts->Clear();
2849 fTracksGen->Clear();
2850 fTracksAODMCCharged->Clear();
2851 fTracksRecQualityCuts->Clear();
2854 fJetsRecCuts->Clear();
2856 fJetsRecEff->Clear();
2859 PostData(1, fCommonHistList);
2863 //________________________________________________________________________________________
2864 Double_t AliAnalysisTaskFragmentationFunction::InvMass(AliAODJet* jet1, AliAODJet* jet2)
2867 Double_t invMass = 0.;
2868 invMass = TMath::Sqrt(pow(jet1->E()+jet2->E(),2) - pow(jet1->Px()+jet2->Px(),2) -
2869 pow(jet1->Py()+jet2->Py(),2) - pow(jet1->Pz()+jet2->Pz(),2));
2875 //________________________________________________________________________________________
2876 Double_t AliAnalysisTaskFragmentationFunction::GetDiJetBin(Double_t invMass, Double_t leadingJetPt, Double_t EtMean, Int_t kindBins)
2878 Double_t jetBinOk = 0.;
2879 Double_t jetBin = 0.;
2881 Float_t stepInvMass = (fDiJetJetInvMassMax - fDiJetJetInvMassMin)/fDiJetNBinsJetInvMass;
2882 Float_t stepPt = (fDiJetJetPtMax - fDiJetJetPtMin)/fDiJetNBinsJetPt;
2886 for(Int_t i=0; i<fDiJetNBinsJetInvMass; ++i)
2888 jetBin = fDiJetJetInvMassMin + i*stepInvMass/2.;
2889 if(((fDiJetJetInvMassMin+i*stepInvMass) <= invMass) &&
2890 (fDiJetJetInvMassMin + (i+1)*stepInvMass) > invMass) jetBinOk = jetBin;
2894 else if (kindBins == 3)
2896 for(Int_t i=0; i<fDiJetNBinsJetPt; ++i)
2898 jetBin = fDiJetJetPtMin + i*stepPt/2.;
2899 if(((fDiJetJetPtMin+i*stepPt) <= EtMean) &&
2900 (fDiJetJetPtMin + (i+1)*stepPt) > EtMean) jetBinOk = jetBin;
2904 else if (kindBins == 2)
2906 for(Int_t i=0; i<fDiJetNBinsJetPt; ++i)
2908 jetBin = fDiJetJetPtMin + i*stepPt/2.;
2909 if(((fDiJetJetPtMin+i*stepPt) <= leadingJetPt) &&
2910 (fDiJetJetPtMin + (i+1)*stepPt) > leadingJetPt) jetBinOk = jetBin;
2914 else {Printf("WARNING: kindBins wrongly set ! Please make sure to call SetKindSlices() and set the kind parameter to 1, 2 or 3.\n");}
2921 //______________________________________________________________
2922 void AliAnalysisTaskFragmentationFunction::Terminate(Option_t *)
2926 if(fDebug > 1) printf("AliAnalysisTaskFragmentationFunction::Terminate() \n");
2929 //_________________________________________________________________________________
2930 Int_t AliAnalysisTaskFragmentationFunction::GetListOfTracks(TList *list, Int_t type)
2932 // fill list of tracks selected according to type
2934 if(fDebug > 2) Printf("%s:%d Selecting tracks with %d", (char*)__FILE__,__LINE__,type);
2937 if(fDebug>1) Printf("%s:%d no input list", (char*)__FILE__,__LINE__);
2941 if(type==kTrackUndef) return 0;
2944 if(type==kTrackAODCuts || type==kTrackAOD){
2946 // all rec. tracks, esd filter mask, eta range
2947 if(!fAOD) return -1;
2949 for(Int_t it=0; it<fAOD->GetNumberOfTracks(); ++it){
2950 AliAODTrack *tr = fAOD->GetTrack(it);
2952 if(type == kTrackAODCuts){
2953 if((fFilterMask>0)&&!(tr->TestFilterBit(fFilterMask))) continue;
2954 if(tr->Eta() < fTrackEtaMin || tr->Eta() > fTrackEtaMax) continue;
2955 if(tr->Phi() < fTrackPhiMin || tr->Phi() > fTrackPhiMax) continue;
2956 if(tr->Pt() < fTrackPtCut) continue;
2962 else if (type==kTrackKineAll || type==kTrackKineCharged || type==kTrackKineChargedAcceptance){
2963 // kine particles, all or rather charged
2964 if(!fMCEvent) return iCount;
2966 for(Int_t it=0; it<fMCEvent->GetNumberOfTracks(); ++it){
2967 AliMCParticle* part = (AliMCParticle*) fMCEvent->GetTrack(it);
2969 if(type == kTrackKineCharged || type == kTrackKineChargedAcceptance){
2970 if(part->Charge()==0) continue;
2972 if(type == kTrackKineChargedAcceptance &&
2973 ( part->Eta() < fTrackEtaMin
2974 || part->Eta() > fTrackEtaMax
2975 || part->Phi() < fTrackPhiMin
2976 || part->Phi() > fTrackPhiMax
2977 || part->Pt() < fTrackPtCut)) continue;
2984 else if (type==kTrackAODMCCharged || type==kTrackAODMCAll || type==kTrackAODMCChargedAcceptance) {
2985 // MC particles (from AOD), physical primaries, all or rather charged or rather charged within acceptance
2986 if(!fAOD) return -1;
2988 TClonesArray *tca = dynamic_cast<TClonesArray*>(fAOD->FindListObject(AliAODMCParticle::StdBranchName()));
2989 if(!tca)return iCount;
2991 for(int it=0; it<tca->GetEntriesFast(); ++it){
2992 AliAODMCParticle *part = dynamic_cast<AliAODMCParticle*>(tca->At(it));
2993 if(!part->IsPhysicalPrimary())continue;
2995 if (type==kTrackAODMCCharged || type==kTrackAODMCChargedAcceptance){
2996 if(part->Charge()==0) continue;
2997 if(type==kTrackAODMCChargedAcceptance &&
2998 ( part->Eta() > fTrackEtaMax
2999 || part->Eta() < fTrackEtaMin
3000 || part->Phi() > fTrackPhiMax
3001 || part->Phi() < fTrackPhiMin
3002 || part->Pt() < fTrackPtCut)) continue;
3014 // _______________________________________________________________________________
3015 Int_t AliAnalysisTaskFragmentationFunction::GetListOfJets(TList *list, Int_t type)
3017 // fill list of jets selected according to type
3020 if(fDebug>1) Printf("%s:%d no input list", (char*)__FILE__,__LINE__);
3024 if(type == kJetsRec || type == kJetsRecAcceptance){ // reconstructed jets
3026 if(fBranchRecJets.Length()==0){
3027 Printf("%s:%d no rec jet branch specified", (char*)__FILE__,__LINE__);
3028 if(fDebug>1)fAOD->Print();
3032 TClonesArray *aodRecJets = new TClonesArray();
3033 if(fBranchRecJets.Length()) aodRecJets = dynamic_cast<TClonesArray*>(fAOD->FindListObject(fBranchRecJets.Data()));
\r
3034 if(!aodRecJets) aodRecJets = dynamic_cast<TClonesArray*>(fAOD->GetList()->FindObject(fBranchRecJets.Data()));
\r
3037 if(fBranchRecJets.Length()) Printf("%s:%d no reconstructed jet array with name %s in AOD", (char*)__FILE__,__LINE__,fBranchRecJets.Data());
3039 if(fDebug>1)fAOD->Print();
3045 for(Int_t ij=0; ij<aodRecJets->GetEntries(); ++ij){
3047 AliAODJet *tmp = dynamic_cast<AliAODJet*>(aodRecJets->At(ij));
3050 if( tmp->Pt() < fJetPtCut ) continue;