45 #include <AliAnalysisTask.h>
46 #include <AliAnalysisManager.h>
47 #include <AliCentrality.h>
48 #include <AliVVertex.h>
49 #include <AliVTrack.h>
50 #include <AliVVZERO.h>
51 #include <AliESDEvent.h>
52 #include <AliAODEvent.h>
53 #include <AliAODTrack.h>
54 #include <AliOADBContainer.h>
56 #include <AliInputEventHandler.h>
71 fRunToyMC(kFALSE),
fLocalInit(0),
fAttachToEvent(kTRUE),
fFillHistograms(kTRUE),
fFillQAHistograms(kTRUE),
fReduceBinsXByFactor(-1.),
fReduceBinsYByFactor(-1.),
fNoEventWeightsForQC(kTRUE),
fCentralityClasses(0),
fExpectedRuns(0),
fExpectedSemiGoodRuns(0),
fUserSuppliedV2(0),
fUserSuppliedV3(0),
fUserSuppliedR2(0),
fUserSuppliedR3(0),
fAcceptanceWeights(kFALSE),
fEventPlaneWeight(1.),
fTracksCont(0),
fClusterCont(0),
fJetsCont(0),
fLeadingJet(0),
fLeadingJetAfterSub(0),
fNAcceptedTracks(0),
fNAcceptedTracksQCn(0),
fFitModulationType(
kNoFit),
fFitGoodnessTest(
kChi2Poisson),
fQCRecovery(
kTryFit),
fUsePtWeight(kTRUE),
fUsePtWeightErrorPropagation(kTRUE),
fUse2DIntegration(kFALSE),
fDetectorType(
kVZEROComb),
fAnalysisType(
kCharged),
fFitModulationOptions("QWLI"),
fRunModeType(
kGrid),
fDataType(
kESD),
fCollisionType(
kPbPb),
fRandom(0),
fRunNumber(-1),
fRunNumberCaliInfo(-1),
fMappedRunNumber(0),
fInCentralitySelection(-1),
fFitModulation(0),
fFitControl(0),
fMinPvalue(0.01),
fMaxPvalue(1),
fNameSmallRho(""),
fCachedRho(0),
fSoftTrackMinPt(0.15),
fSoftTrackMaxPt(5.),
fSemiGoodJetMinPhi(0.),
fSemiGoodJetMaxPhi(4.),
fSemiGoodTrackMinPhi(0.),
fSemiGoodTrackMaxPhi(4.),
fHistCentrality(0),
fHistCentralityPercIn(0),
fHistCentralityPercOut(0),
fHistCentralityPercLost(0),
fHistVertexz(0),
fHistMultCorAfterCuts(0),
fHistMultvsCentr(0),
fHistRunnumbersPhi(0),
fHistRunnumbersEta(0),
fHistRunnumbersCaliInfo(0),
fHistPvalueCDFROOT(0),
fHistPvalueCDFROOTCent(0),
fHistChi2ROOTCent(0),
fHistPChi2Root(0),
fHistPvalueCDF(0),
fHistPvalueCDFCent(0),
fHistChi2Cent(0),
fHistPChi2(0),
fHistKolmogorovTest(0),
fHistKolmogorovTestCent(0),
fHistPKolmogorov(0),
fHistRhoStatusCent(0),
fHistUndeterminedRunQA(0),
fMinDisanceRCtoLJ(0),
fMaxCones(-1),
fExcludeLeadingJetsFromFit(1.),
fExcludeJetsWithTrackPt(9999.),
fRebinSwapHistoOnTheFly(kTRUE),
fPercentageOfFits(10.),
fOutputList(0),
fOutputListGood(0),
fOutputListBad(0),
fHistAnalysisSummary(0),
fHistSwap(0),
fProfV2(0),
fProfV2Cumulant(0),
fProfV3(0),
fProfV3Cumulant(0),
fHistPsiVZEROAV0M(0),
fHistPsiVZEROCV0M(0),
fHistPsiVZEROVV0M(0),
fHistPsiTPCV0M(0),
fHistPsiVZEROATRK(0),
fHistPsiVZEROCTRK(0),
fHistPsiVZEROTRK(0),
fHistPsiTPCTRK(0),
fHistRhoVsMult(0),
fHistRhoVsCent(0),
fHistRhoAVsMult(0),
fHistRhoAVsCent(0),
fVZEROgainEqualization(0x0),
fVZEROApol(0),
fVZEROCpol(0),
fChi2A(0x0),
fChi2C(0x0),
fChi3A(0x0),
fChi3C(0x0),
fSigma2A(0x0),
fSigma2C(0x0),
fSigma3A(0x0),
fSigma3C(0x0),
fWeightForVZERO(
kChi),
fOADB(0x0),
fHistQxV0aBC(0x0),
fHistQyV0aBC(0x0),
fHistQxV0cBC(0x0),
fHistQyV0cBC(0x0),
fHistQxV0a(0x0),
fHistQyV0a(0x0),
fHistQxV0c(0x0),
fHistQyV0c(0x0),
fHistMultVsCellBC(0x0),
fHistMultVsCell(0x0),
fHistEPBC(0x0),
fHistEP(0x0)
73 for(
Int_t i(0); i < 10; i++) {
127 for(
Int_t i(0); i < 9; i++) {
128 for(
Int_t j(0); j < 2; j++) {
129 for(
Int_t k(0); k < 2; k++) {
141 fRunToyMC(kFALSE),
fLocalInit(0),
fAttachToEvent(kTRUE),
fFillHistograms(kTRUE),
fFillQAHistograms(kTRUE),
fReduceBinsXByFactor(-1.),
fReduceBinsYByFactor(-1.),
fNoEventWeightsForQC(kTRUE),
fCentralityClasses(0),
fExpectedRuns(0),
fExpectedSemiGoodRuns(0),
fUserSuppliedV2(0),
fUserSuppliedV3(0),
fUserSuppliedR2(0),
fUserSuppliedR3(0),
fAcceptanceWeights(kFALSE),
fEventPlaneWeight(1.),
fTracksCont(0),
fClusterCont(0),
fJetsCont(0),
fLeadingJet(0),
fLeadingJetAfterSub(0),
fNAcceptedTracks(0),
fNAcceptedTracksQCn(0),
fFitModulationType(
kNoFit),
fFitGoodnessTest(
kChi2Poisson),
fQCRecovery(
kTryFit),
fUsePtWeight(kTRUE),
fUsePtWeightErrorPropagation(kTRUE),
fUse2DIntegration(kFALSE),
fDetectorType(
kVZEROComb),
fAnalysisType(
kCharged),
fFitModulationOptions(
"QWLI"),
fRunModeType(type),
fDataType(
kESD),
fCollisionType(
kPbPb),
fRandom(0),
fRunNumber(-1),
fRunNumberCaliInfo(-1),
fMappedRunNumber(0),
fInCentralitySelection(-1),
fFitModulation(0),
fFitControl(0),
fMinPvalue(0.01),
fMaxPvalue(1),
fNameSmallRho(
""),
fCachedRho(0),
fSoftTrackMinPt(0.15),
fSoftTrackMaxPt(5.),
fSemiGoodJetMinPhi(0.),
fSemiGoodJetMaxPhi(4.),
fSemiGoodTrackMinPhi(0.),
fSemiGoodTrackMaxPhi(4.),
fHistCentrality(0),
fHistCentralityPercIn(0),
fHistCentralityPercOut(0),
fHistCentralityPercLost(0),
fHistVertexz(0),
fHistMultCorAfterCuts(0),
fHistMultvsCentr(0),
fHistRunnumbersPhi(0),
fHistRunnumbersEta(0),
fHistRunnumbersCaliInfo(0),
fHistPvalueCDFROOT(0),
fHistPvalueCDFROOTCent(0),
fHistChi2ROOTCent(0),
fHistPChi2Root(0),
fHistPvalueCDF(0),
fHistPvalueCDFCent(0),
fHistChi2Cent(0),
fHistPChi2(0),
fHistKolmogorovTest(0),
fHistKolmogorovTestCent(0),
fHistPKolmogorov(0),
fHistRhoStatusCent(0),
fHistUndeterminedRunQA(0),
fMinDisanceRCtoLJ(0),
fMaxCones(-1),
fExcludeLeadingJetsFromFit(1.),
fExcludeJetsWithTrackPt(9999),
fRebinSwapHistoOnTheFly(kTRUE),
fPercentageOfFits(10.),
fOutputList(0),
fOutputListGood(0),
fOutputListBad(0),
fHistAnalysisSummary(0),
fHistSwap(0),
fProfV2(0),
fProfV2Cumulant(0),
fProfV3(0),
fProfV3Cumulant(0),
fHistPsiVZEROAV0M(0),
fHistPsiVZEROCV0M(0),
fHistPsiVZEROVV0M(0),
fHistPsiTPCV0M(0),
fHistPsiVZEROATRK(0),
fHistPsiVZEROCTRK(0),
fHistPsiVZEROTRK(0),
fHistPsiTPCTRK(0),
fHistRhoVsMult(0),
fHistRhoVsCent(0),
fHistRhoAVsMult(0),
fHistRhoAVsCent(0),
fVZEROgainEqualization(0x0),
fVZEROApol(0),
fVZEROCpol(0),
fChi2A(0x0),
fChi2C(0x0),
fChi3A(0x0),
fChi3C(0x0),
fSigma2A(0x0),
fSigma2C(0x0),
fSigma3A(0x0),
fSigma3C(0x0),
fWeightForVZERO(
kChi),
fOADB(0x0),
fHistQxV0aBC(0x0),
fHistQyV0aBC(0x0),
fHistQxV0cBC(0x0),
fHistQyV0cBC(0x0),
fHistQxV0a(0x0),
fHistQyV0a(0x0),
fHistQxV0c(0x0),
fHistQyV0c(0x0),
fHistMultVsCellBC(0x0),
fHistMultVsCell(0x0),
fHistEPBC(0x0),
fHistEP(0x0)
143 for(
Int_t i(0); i < 10; i++) {
197 for(
Int_t i(0); i < 9; i++) {
198 for(
Int_t j(0); j < 2; j++) {
199 for(
Int_t k(0); k < 2; k++) {
209 DefineInput(0, TChain::Class());
212 DefineOutput(startAt, TList::Class());
215 gStyle->SetOptFit(1);
216 DefineOutput(startAt+1, TList::Class());
217 DefineOutput(startAt+2, TList::Class());
234 #ifdef ALIANALYSISTASKJETV2_DEBUG_FLAG_1
235 printf(
"__FILE__ = %s \n __LINE __ %i , __FUNC__ %s \n ", __FILE__, __LINE__, __func__);
264 #ifdef ALIANALYSISTASKJETV2_DEBUG_FLAG_1
265 printf(
"__FILE__ = %s \n __LINE __ %i , __FUNC__ %s \n ", __FILE__, __LINE__, __func__);
270 if(!(InputEvent()->FindListObject(
fLocalRho->GetName()))) {
273 AliFatal(Form(
"%s: Container with name %s already present. Aborting", GetName(),
fLocalRho->GetName()));
278 if(!
GetJetContainer()) AliFatal(Form(
"%s: Couldn't find jet container. Aborting !", GetName()));
284 #ifdef ALIANALYSISTASKJETV2_DEBUG_FLAG_1
285 printf(
"__FILE__ = %s \n __LINE __ %i , __FUNC__ %s \n ", __FILE__, __LINE__, __func__);
289 #ifdef ALIANALYSISTASKJETV2_DEBUG_FLAG_1
290 printf(
"__FUNC__ %s > NEW RUNNUMBER DETECTED \n ", __func__);
295 #ifdef ALIANALYSISTASKJETV2_DEBUG_FLAG_1
296 printf(
" LHC10h data, assuming full acceptance, reading VZERO calibration DB \n ");
307 #ifdef ALIANALYSISTASKJETV2_DEBUG_FLAG_1
308 printf(
" checking runnumber to adjust acceptance on the fly \n");
328 #ifdef ALIANALYSISTASKJETV2_DEBUG_FLAG_1
329 printf(
"__FUNC__ %s > replacing rho with cached rho \n ", __func__);
333 Bool_t flaggedAsSemiGood(kFALSE);
336 #ifdef ALIANALYSISTASKJETV2_DEBUG_FLAG_1
337 printf(
"__FUNC__ %s > semi-good tpc run detected, adjusting acceptance \n ", __func__);
339 flaggedAsSemiGood = kTRUE;
352 #ifdef ALIANALYSISTASKJETV2_DEBUG_FLAG_1
353 printf(
"__FUNC__ %s > switching to small rho, caching normal rho \n ", __func__);
361 if(!flaggedAsSemiGood) {
377 #ifdef ALIANALYSISTASKJETV2_DEBUG_FLAG_1
378 printf(
"__FILE__ = %s \n __LINE __ %i , __FUNC__ %s \n ", __FILE__, __LINE__, __func__);
384 if(dynamic_cast<AliAODEvent*>(InputEvent()))
fDataType =
kAOD;
385 else if(dynamic_cast<AliESDEvent*>(InputEvent()))
fDataType =
kESD;
391 SetModulationFit(
new TF1(
"fit_kV2",
"[0]*([1]+[2]*[3]*TMath::Cos([2]*(x-[4])))", 0, TMath::TwoPi()));
398 SetModulationFit(
new TF1(
"fit_kV3",
"[0]*([1]+[2]*[3]*TMath::Cos([2]*(x-[4])))", 0, TMath::TwoPi()));
405 SetModulationFit(
new TF1(
"fit_kCombined",
"[0]*([1]+[2]*([3]*TMath::Cos([2]*(x-[4]))+[7]*TMath::Cos([5]*(x-[6]))))", 0, TMath::TwoPi()));
425 #ifdef ALIANALYSISTASKJETV2_DEBUG_FLAG_1
426 printf(
"__FILE__ = %s \n __LINE __ %i , __FUNC__ %s \n ", __FILE__, __LINE__, __func__);
432 name = Form(
"%s_%i", name, c);
435 title += Form(
";%s;[counts]", x);
436 TH1F* histogram =
new TH1F(name, title.Data(), bins, min, max);
442 TH2F*
AliAnalysisTaskJetV2::BookTH2F(
const char* name,
const char* x,
const char* y,
Int_t binsx,
Double_t minx,
Double_t maxx,
Int_t binsy,
Double_t miny,
Double_t maxy,
Int_t c,
Bool_t append)
445 #ifdef ALIANALYSISTASKJETV2_DEBUG_FLAG_1
446 printf(
"__FILE__ = %s \n __LINE __ %i , __FUNC__ %s \n ", __FILE__, __LINE__, __func__);
453 name = Form(
"%s_%i", name, c);
456 title += Form(
";%s;%s", x, y);
457 TH2F* histogram =
new TH2F(name, title.Data(), binsx, minx, maxx, binsy, miny, maxy);
463 TH3F*
AliAnalysisTaskJetV2::BookTH3F(
const char* name,
const char* x,
const char* y,
const char* z,
Int_t binsx,
Double_t minx,
Double_t maxx,
Int_t binsy,
Double_t miny,
Double_t maxy,
Int_t binsz,
Double_t minz,
Double_t maxz,
Int_t c,
Bool_t append)
466 #ifdef ALIANALYSISTASKJETV2_DEBUG_FLAG_1
467 printf(
"__FILE__ = %s \n __LINE __ %i , __FUNC__ %s \n ", __FILE__, __LINE__, __func__);
477 name = Form(
"%s_%i", name, c);
480 title += Form(
";%s;%s;%s", x, y, z);
481 TH3F* histogram =
new TH3F(name, title.Data(), binsx, minx, maxx, binsy, miny, maxy, binsz, minz, maxz);
491 #ifdef ALIANALYSISTASKJETV2_DEBUG_FLAG_1
492 printf(
"__FILE__ = %s \n __LINE __ %i , __FUNC__ %s \n ", __FILE__, __LINE__, __func__);
498 Double_t c[] = {0., 20., 40., 60., 80., 100.};
502 Int_t r[] = {167813, 167988, 168066, 168068, 168069, 168076, 168104, 168212, 168311, 168322, 168325, 168341, 168361, 168362, 168458, 168460, 168461, 168992, 169091, 169094, 169138, 169143, 169167, 169417, 169835, 169837, 169838, 169846, 169855, 169858, 169859, 169923, 169956, 170027, 170036, 170081, 169975, 169981, 170038, 170040, 170083, 170084, 170085, 170088, 170089, 170091, 170152, 170155, 170159, 170163, 170193, 170195, 170203, 170204, 170205, 170228, 170230, 170264, 170268, 170269, 170270, 170306, 170308, 170309, 169415, 169411, 169035, 168988, 168984, 168826, 168777, 168512, 168511, 168467, 168464, 168342, 168310, 168115, 168108, 168107, 167987, 167915, 167903, 169238, 169160, 169156, 169148, 169145, 169144 };
508 fHistMultCorAfterCuts =
new TH2F(
"fHistMultCorAfterCuts",
"TPC vs Global multiplicity (After cuts); Global multiplicity; TPC multiplicity", 100, 0, 3000, 100, 0, 3000);
510 fHistMultvsCentr =
new TH2F(
"fHistMultvsCentr",
"Multiplicity vs centrality; centrality; Multiplicity", 9, -0.5, 100.5, 101, 0, 3000);
515 Int_t r[] = {169975, 169981, 170038, 170040, 170083, 170084, 170085, 170088, 170089, 170091, 170152, 170155, 170159, 170163, 170193, 170195, 170203, 170204, 170205, 170228, 170230, 170264, 170268, 170269, 170270, 170306, 170308, 170309};
525 fHistCentralityPercIn =
new TProfile(
"fHistCentralityPercIn",
"fHistCentralityPercIn", 102, -2, 100);
530 Double_t etaMin(-1.), etaMax(1.), phiMin(0.), phiMax(TMath::TwoPi());
554 fHistPsiTPCLeadingJet[i] =
BookTH3F(
"fHistPsiTPCLeadingJet",
"p_{t} [GeV/c]",
"#Psi_{TPC}",
"#varphi_{jet}", 70, 0, 210, 50, -1.*TMath::Pi()/2., TMath::Pi()/2., 50, phiMin, phiMax, i);
555 fHistEPCorrelations[i] =
BookTH3F(
"fHistEPCorrelations",
"EP_V0 average",
"EP_V0 #chi",
"EP_V0 #sigma", 50, -TMath::Pi()/2., TMath::Pi()/2., 50, -TMath::Pi()/2., TMath::Pi()/2., 50, -TMath::Pi()/2., TMath::Pi()/2.);
556 fHistEPCorrAvChi[i] =
BookTH2F(
"fHistEPCorrAvChi",
"EP_V0 average",
"EP_V0 #chi", 50, -TMath::Pi()/2., TMath::Pi()/2., 50, -TMath::Pi()/2., TMath::Pi()/2., i);
557 fHistEPCorrAvSigma[i] =
BookTH2F(
"fHistEPCorrAvSigma",
"EP_V0 average",
"EP_V0 #sigma", 50, -TMath::Pi()/2., TMath::Pi()/2., 50, -TMath::Pi()/2., TMath::Pi()/2., i);
558 fHistEPCorrChiSigma[i] =
BookTH2F(
"fHistEPCorrChiSigma",
"EP_V0 #chi",
"EP_V0 #sigma", 50, -TMath::Pi()/2., TMath::Pi()/2., 50, -TMath::Pi()/2., TMath::Pi()/2., i);
560 fProfIntegralCorrelations[i] =
new TProfile(Form(
"fProfIntegralCorrelations_%i", i), Form(
"fProfIntegralCorrelations_%i", i), 100, 0, 100);
564 fHistPsiVZEROALeadingJet[i] =
BookTH3F(
"fHistPsiVZEROALeadingJet",
"p_{t} [GeV/c]",
"#Psi_{VZEROA}",
"#varphi_{jet}", 70, 0, 210, 50, -1.*TMath::Pi()/2., TMath::Pi()/2., 50, phiMin, phiMax, i);
565 fHistPsiVZEROCLeadingJet[i] =
BookTH3F(
"fHistPsiVZEROCLeadingJet",
"p_{t} [GeV/c]",
"#Psi_{VZEROC}",
"#varphi_{jet}", 70, 0, 210, 50, -1.*TMath::Pi()/2., TMath::Pi()/2., 50, phiMin, phiMax, i);
566 fHistPsiVZEROCombLeadingJet[i] =
BookTH3F(
"fHistPsiVZEROCombLeadingJet",
"p_{t} [GeV/c]",
"#Psi_{VZEROComb}",
"#varphi_{jet}", 70, 0, 210, 50, -1.*TMath::Pi()/2., TMath::Pi()/2., 50, phiMin, phiMax, i);
567 fHistPsi2Correlation[i] =
BookTH3F(
"fHistPsi2Correlation",
"#Psi_{TPC}",
"#Psi_{VZEROA}",
"#Psi_{VZEROC}", 20, -1.*TMath::Pi()/2., TMath::Pi()/2., 20, -1.*TMath::Pi()/2., TMath::Pi()/2., 20, -1.*TMath::Pi()/2., TMath::Pi()/2., i);
568 fHistLeadingJetBackground[i] =
BookTH2F(
"fHistLeadingJetBackground",
"#Delta #eta (leading jet with, without sub)",
"Delta #varphi (leading jet with, without sub)", 50, 0., 2, 50, 0., TMath::TwoPi(), i);
570 fHistTriggerQAIn[i] =
BookTH2F(
"fHistTriggerQAIn",
"trigger configuration",
"p_{T}^{jet} (GeV/c) in-plane jets", 16, 0.5, 16.5, 70, -100, 250, i);
571 fHistTriggerQAOut[i] =
BookTH2F(
"fHistTriggerQAOut",
"trigger configuration",
"p_{T}^{jet} (GeV/c) out-of-plane jets", 16, 0.5, 16.5, 70, -100, 250, i);
611 Int_t diff(TMath::Abs(up-low));
613 fHistPsiVZEROAV0M =
BookTH2F(
"fHistPsiVZEROAV0M",
"V0M",
"#Psi_{2, VZEROA}", diff, low, up, 40, -.5*TMath::Pi(), .5*TMath::Pi());
614 fHistPsiVZEROCV0M =
BookTH2F(
"fHistPsiVZEROCV0M",
"V0M",
"#Psi_{2, VZEROC}", diff, low, up, 40, -.5*TMath::Pi(), .5*TMath::Pi());
615 fHistPsiVZEROVV0M =
BookTH2F(
"fHistPsiVZEROV0M",
"V0M",
"#Psi_{2, VZERO}", diff, low, up, 40, -.5*TMath::Pi(), .5*TMath::Pi());
616 fHistPsiTPCV0M =
BookTH2F(
"fHistPsiTPCV0M",
"V0M",
"#Psi_{2, TRK}", diff, low, up, 40, -.5*TMath::Pi(), .5*TMath::Pi());
617 fHistPsiVZEROATRK =
BookTH2F(
"fHistPsiVZEROATRK",
"TRK",
"#Psi_{2, VZEROA}", diff, low, up, 40, -.5*TMath::Pi(), .5*TMath::Pi());
618 fHistPsiVZEROCTRK =
BookTH2F(
"fHistPsiVZEROCTRK",
"TRK",
"#Psi_{2, VZEROC}", diff, low, up, 40, -.5*TMath::Pi(), .5*TMath::Pi());
619 fHistPsiVZEROTRK =
BookTH2F(
"fHistPsiVZEROTRK",
"TRK",
"#Psi_{2, VZERO}", diff, low, up, 40, -.5*TMath::Pi(), .5*TMath::Pi());
620 fHistPsiTPCTRK =
BookTH2F(
"fHistPsiTPCTRK",
"TRK",
"#Psi_{2, TRK}", diff, low, up, 40, -.5*TMath::Pi(), .5*TMath::Pi());
629 fHistRhoAVsMult =
BookTH2F(
"fHistRhoAVsMult",
"multiplicity",
"#rho * A (jet) [GeV/c]", 100, 0, 4000, 100, 0, 50);
630 fHistRhoAVsCent =
BookTH2F(
"fHistRhoAVsCent",
"centrality",
"#rho * A (jet) [GeV/c]", 100, 0, 100, 100, 0, 50);
634 case kTPC : detector+=
"TPC";
636 case kVZEROA : detector+=
"VZEROA";
638 case kVZEROC : detector+=
"VZEROC";
642 case kFixedEP : detector+=
"FixedEP";
649 fHistRhoVsRCPt[i] =
BookTH2F(
"fHistRhoVsRCPt",
"p_{t} (RC) [GeV/c]",
"#rho * A (RC) [GeV/c]", 100, 0, 300, 100, 0, 350, i);
652 fHistDeltaPtDeltaPhi2[i] =
BookTH2F(
"fHistDeltaPtDeltaPhi2", Form(
"#phi - #Psi_{2, %s}", detector.Data()),
"#delta p_{t} [GeV/c]", 40, 0, TMath::Pi(), 400, -70, 130, i);
653 fHistDeltaPtDeltaPhi2Rho0[i] =
BookTH2F(
"fHistDeltaPtDeltaPhi2Rho0", Form(
"#phi - #Psi_{2, %s}", detector.Data()),
"#delta p_{t} [GeV/c]", 40, 0, TMath::Pi(), 400, -70, 130, i);
654 fHistRhoVsRCPtExLJ[i] =
BookTH2F(
"fHistRhoVsRCPtExLJ",
"p_{t} (RC) [GeV/c]",
"#rho * A (RC) [GeV/c]", 100, 0, 300, 100, 0, 350, i);
656 fHistDeltaPtDeltaPhi2ExLJ[i] =
BookTH2F(
"fHistDeltaPtDeltaPhi2ExLJ", Form(
"#phi - #Psi_{2, %s}", detector.Data()),
"#delta p_{t} [GeV/c]", 40, 0, TMath::Pi(), 400, -70, 130, i);
657 fHistDeltaPtDeltaPhi2ExLJRho0[i] =
BookTH2F(
"fHistDeltaPtDeltaPhi2ExLJRho0", Form(
"#phi - #Psi_{2, %s}", detector.Data()),
"#delta p_{t} [GeV/c]", 40, 0, TMath::Pi(), 400, -70, 130, i);
662 fHistJetPtArea[i] =
BookTH2F(
"fHistJetPtArea",
"p_{t, jet} [GeV/c]",
"Area", 175, -100, 250, 30, 0, 0.9, i);
663 fHistJetPtEta[i] =
BookTH2F(
"fHistJetPtEta",
"p_{t, jet} [GeV/c]",
"Eta", 175, -100, 250, 30, etaMin, etaMax, i);
664 fHistJetPtConstituents[i] =
BookTH2F(
"fHistJetPtConstituents",
"p_{t, jet} [GeV/c]",
"no. of constituents", 350, -100, 250, 60, 0, 150, i);
667 fHistJetPsi2Pt[i] =
BookTH2F(
"fHistJetPsi2Pt", Form(
"#phi_{jet} - #Psi_{2, %s}", detector.Data()),
"p_{t, jet} [GeV/c]", 40, 0., TMath::Pi(), 350, -100, 250, i);
668 fHistJetLJPsi2Pt[i] =
BookTH3F(
"fHistJetLJPsi2Pt", Form(
"#phi_{part} - #Psi_{2, %s}", detector.Data()),
"p_{t, jet} [GeV/c]",
"p_{t, leading track}", 40, 0., TMath::Pi(), 350, -100, 250, 200, 0, 50, i);
669 fHistJetLJPsi2PtRatio[i] =
BookTH3F(
"fHistJetLJPsi2PtRatio", Form(
"#phi_{part} - #Psi_{2, %s}", detector.Data()), Form(
"#phi_{jet} - #Psi_{2, %s}", detector.Data()),
"p_{t, jet} [GeV/c]", 40, 0., TMath::Pi(), 40, 0., TMath::Pi(), 350, -100, 250, i);
671 fHistJetPsi2PtRho0[i] =
BookTH2F(
"fHistJetPsi2PtRho0", Form(
"#phi_{jet} - #Psi_{2, %s}", detector.Data()),
"p_{t, jet} [GeV/c]", 40, 0., TMath::Pi(), 350, -100, 250, i);
673 fProfV2Resolution[i] =
new TProfile(Form(
"fProfV2Resolution_%i", i), Form(
"fProfV2Resolution_%i", i), 11, -0.5, 10.5);
674 fProfV2Resolution[i]->GetXaxis()->SetBinLabel(3,
"<cos(2(#Psi_{VZEROA} - #Psi_{VZEROC}))>");
675 fProfV2Resolution[i]->GetXaxis()->SetBinLabel(4,
"<cos(2(#Psi_{VZEROC} - #Psi_{VZEROA}))>");
676 fProfV2Resolution[i]->GetXaxis()->SetBinLabel(5,
"<cos(2(#Psi_{VZEROA} - #Psi_{TPC}))>");
677 fProfV2Resolution[i]->GetXaxis()->SetBinLabel(6,
"<cos(2(#Psi_{TPC} - #Psi_{VZEROA}))>");
678 fProfV2Resolution[i]->GetXaxis()->SetBinLabel(7,
"<cos(2(#Psi_{VZEROC} - #Psi_{TPC}))>");
679 fProfV2Resolution[i]->GetXaxis()->SetBinLabel(8,
"<cos(2(#Psi_{TPC} - #Psi_{VZEROC}))>");
680 fProfV2Resolution[i]->GetXaxis()->SetBinLabel(9,
"<cos(2(#Psi_{VZERO} - #Psi_{TPC_A}))>");
681 fProfV2Resolution[i]->GetXaxis()->SetBinLabel(10,
"<cos(2(#Psi_{VZERO} - #Psi_{TPC_B}))>");
682 fProfV2Resolution[i]->GetXaxis()->SetBinLabel(11,
"<cos(2(#Psi_{TPC_A} - #Psi_{TPC_B}))>");
684 fProfV3Resolution[i] =
new TProfile(Form(
"fProfV3Resolution_%i", i), Form(
"fProfV3Resolution_%i", i), 11, -0.5, 10.5);
685 fProfV3Resolution[i]->GetXaxis()->SetBinLabel(3,
"<cos(3(#Psi_{VZEROA} - #Psi_{VZEROC}))>");
686 fProfV3Resolution[i]->GetXaxis()->SetBinLabel(4,
"<cos(3(#Psi_{VZEROC} - #Psi_{VZEROA}))>");
687 fProfV3Resolution[i]->GetXaxis()->SetBinLabel(5,
"<cos(3(#Psi_{VZEROA} - #Psi_{TPC}))>");
688 fProfV3Resolution[i]->GetXaxis()->SetBinLabel(6,
"<cos(3(#Psi_{TPC} - #Psi_{VZEROA}))>");
689 fProfV3Resolution[i]->GetXaxis()->SetBinLabel(7,
"<cos(3(#Psi_{VZEROC} - #Psi_{TPC}))>");
690 fProfV3Resolution[i]->GetXaxis()->SetBinLabel(8,
"<cos(3(#Psi_{TPC} - #Psi_{VZEROC}))>");
691 fProfV3Resolution[i]->GetXaxis()->SetBinLabel(9,
"<cos(3(#Psi_{VZERO} - #Psi_{TPC_A}))>");
692 fProfV3Resolution[i]->GetXaxis()->SetBinLabel(10,
"<cos(3(#Psi_{VZERO} - #Psi_{TPC_B}))>");
693 fProfV3Resolution[i]->GetXaxis()->SetBinLabel(11,
"<cos(3(#Psi_{TPC_A} - #Psi_{TPC_B}))>");
745 fHistSwap =
new TH1F(
"fHistSwap",
"fHistSwap", 20, 0, TMath::TwoPi());
752 for(
Int_t i(0); i < 10; i++) {
767 fHistPChi2 =
BookTH2F(
"fHistPChi2",
"p-value",
"#tilde{#chi^{2}}", 1000, 0, 1, 100, 0, 5);
775 fHistRhoStatusCent =
BookTH2F(
"fHistRhoStatusCent",
"centrality",
"status [-1=lin was better, 0=ok, 1 = failed]", 101, -1, 100, 3, -1.5, 1.5);
783 fHistJetPtAreaBC[i] =
BookTH2F(
"fHistJetPtAreaBC",
"p_{t, jet} [GeV/c]",
"Area", 175, -100, 250, 30, 0, 0.3, i);
785 fHistQxV0aBC =
BookTH2F(
"fHistQxV0aBC",
"Q_{x} V0A",
"centrality class", 140, -700, 700, 10, -.5, 9.5);
786 fHistQyV0aBC =
BookTH2F(
"fHistQyV0aBC",
"Q_{y} V0A",
"centrality class", 140, -700, 700, 10, -.5, 9.5);
787 fHistQxV0cBC =
BookTH2F(
"fHistQxV0cBC",
"Q_{x} V0C",
"centrality class", 140, -700, 700, 10, -.5, 9.5);
788 fHistQyV0cBC =
BookTH2F(
"fHistQyV0cBC",
"Q_{y} V0C",
"centrality class", 140, -700, 700, 10, -.5, 9.5);
789 fHistQxV0a =
BookTH2F(
"fHistQxV0a",
"Q_{x} V0A",
"centrality class", 100, -10, 10, 10, -.5, 9.5);
790 fHistQyV0a =
BookTH2F(
"fHistQyV0a",
"Q_{y} V0A",
"centrality class", 100, -10, 10, 10, -.5, 9.5);
791 fHistQxV0c =
BookTH2F(
"fHistQxV0c",
"Q_{x} V0C",
"centrality class", 100, -10, 10, 10, -.5, 9.5);
792 fHistQyV0c =
BookTH2F(
"fHistQyV0c",
"Q_{y} V0C",
"centrality class", 100, -10, 10, 10, -.5, 9.5);
795 fHistEPBC =
BookTH1F(
"fHistEPBC",
"#Psi_{EP, 2}, uncalibrated", 100, -0.5*TMath::Pi(), 0.5*TMath::Pi());
796 fHistEP =
BookTH1F(
"fHistEP",
"#Psi_{EP, 2}, calibrated", 100, -0.5*TMath::Pi(), 0.5*TMath::Pi());
824 #ifdef ALIANALYSISTASKJETV2_DEBUG_FLAG_1
825 printf(
"__FILE__ = %s \n __LINE __ %i , __FUNC__ %s \n ", __FILE__, __LINE__, __func__);
828 if(!
fTracks) printf(
" > Failed to retrieve fTracks ! < \n");
829 if(!
fJets) printf(
" > Failed to retrieve fJets ! < \n");
830 if(!
fRho) printf(
" > Failed to retrieve fRho ! < \n");
855 tpc[0] = 0.; tpc[1] = 1.;
856 vzero[0][0] = 0.; vzero[0][1] = 1.;
857 vzero[1][0] = 0.; vzero[1][1] = 1.;
858 vzeroComb[0] = 0.; vzeroComb[1] = 1.;
870 case kTPC : { psi2 = tpc[0]; psi3 = tpc[1]; }
break;
871 case kVZEROA : { psi2 = vzero[0][0]; psi3 = vzero[0][1]; }
break;
872 case kVZEROC : { psi2 = vzero[1][0]; psi3 = vzero[1][1]; }
break;
873 case kVZEROComb : { psi2 = vzeroComb[0]; psi3 = vzeroComb[1];}
break;
874 case kFixedEP : { psi2 = 0.; psi3 = 1.;}
break;
885 Double_t percIn(0.), percOut(0.), percLost(0.);
887 psi2, percIn, percOut, percLost);
1000 #ifdef ALIANALYSISTASKJETV2_DEBUG_FLAG_1
1001 printf(
"__FILE__ = %s \n __LINE __ %i , __FUNC__ %s \n ", __FILE__, __LINE__, __func__);
1016 AliAnalysisTaskSE::Exec(c);
1023 #ifdef ALIANALYSISTASKJETV2_DEBUG_FLAG_2
1024 printf(
"__FILE__ = %s \n __LINE __ %i , __FUNC__ %s \n ", __FILE__, __LINE__, __func__);
1033 if(a < 0) a += TMath::Pi();
1040 Double_t interval(TMath::TwoPi() / 1000.);
1046 for(
Double_t i = a; i < a+TMath::TwoPi()-interval; i += interval) {
1048 if(status == 0 ) percLost += .001;
1049 else if(status == 1 ) percIn += 0.001;
1050 else if(status == 2 ) percOut += 0.001;
1059 #ifdef ALIANALYSISTASKJETV2_DEBUG_FLAG_2
1060 printf(
"__FILE__ = %s \n __LINE __ %i , __FUNC__ %s \n ", __FILE__, __LINE__, __func__);
1077 if(phi > a && phi < b && phi > x1 && phi < x2) overlap = 1;
1078 if(phi > c && phi < d && phi > x1 && phi < x2) overlap = 1;
1080 if(phi > b && phi < c && phi > x1 && phi < x2) overlap = 2;
1081 if(phi > d && phi < e && phi > x1 && phi < x2) overlap = 2;
1087 if(phi > a && phi < b && phi > x1 && phi < x2) overlap = 1;
1088 if(phi > c && phi < d && phi > x1 && phi < x2) overlap = 1;
1090 if(phi > b && phi < c && phi > x1 && phi < x2) overlap = 2;
1091 if(phi > d && phi < e && phi > x1 && phi < x2) overlap = 2;
1100 Double_t chi(2.), delta(1.), con((TMath::Sqrt(TMath::Pi()))/(2.*TMath::Sqrt(2)));
1101 for (
Int_t i(0); i < 15; i++) {
1102 chi = ((con*chi*TMath::Exp(-chi*chi/4.)*(TMath::BesselI0(chi*chi/4.)+TMath::BesselI1(chi*chi/4.))) < res) ? chi + delta : chi - delta;
1111 #ifdef ALIANALYSISTASKJETV2_DEBUG_FLAG_1
1112 printf(
"__FILE__ = %s \n __LINE __ %i , __FUNC__ %s \n ", __FILE__, __LINE__, __func__);
1122 vzero[0][0] = .5*TMath::ATan2(QA2[1], QA2[0]);
1123 vzero[1][0] = .5*TMath::ATan2(QC2[1], QC2[0]);
1124 vzero[0][1] = (1./3.)*TMath::ATan2(QA3[1], QA3[0]);
1125 vzero[1][1] = (1./3.)*TMath::ATan2(QC3[1], QC3[0]);
1130 Double_t a(0), b(0),
c(0), d(0), e(0), f(0), g(0), h(0);
1131 vzero[0][0] = InputEvent()->GetEventplane()->CalculateVZEROEventPlane(InputEvent(), 8, 2, a, b);
1132 vzero[1][0] = InputEvent()->GetEventplane()->CalculateVZEROEventPlane(InputEvent(), 9, 2,
c, d);
1133 vzero[0][1] = InputEvent()->GetEventplane()->CalculateVZEROEventPlane(InputEvent(), 8, 3, e, f);
1134 vzero[1][1] = InputEvent()->GetEventplane()->CalculateVZEROEventPlane(InputEvent(), 9, 3, g, h);
1143 #ifdef ALIANALYSISTASKJETV2_DEBUG_FLAG_1
1144 printf(
"__FILE__ = %s \n __LINE __ %i , __FUNC__ %s \n ", __FILE__, __LINE__, __func__);
1156 comb[0] = .5*TMath::ATan2(Q2[1], Q2[0]);
1157 comb[1] = (1./3.)*TMath::ATan2(Q3[1], Q3[0]);
1168 Double_t qx2a(0), qy2a(0), qx2c(0), qy2c(0), qx3a(0), qy3a(0), qx3c(0), qy3c(0);
1170 InputEvent()->GetEventplane()->CalculateVZEROEventPlane(InputEvent(), 8, 2, qx2a, qy2a);
1171 InputEvent()->GetEventplane()->CalculateVZEROEventPlane(InputEvent(), 9, 2, qx2c, qy2c);
1172 InputEvent()->GetEventplane()->CalculateVZEROEventPlane(InputEvent(), 8, 3, qx3a, qy3a);
1173 InputEvent()->GetEventplane()->CalculateVZEROEventPlane(InputEvent(), 9, 3, qx3c, qy3c);
1184 chi2A =
fChi2A->At(VZEROcentralityBin);
1185 chi2C =
fChi2C->At(VZEROcentralityBin);
1186 chi3A =
fChi3A->At(VZEROcentralityBin);
1187 chi3C =
fChi3C->At(VZEROcentralityBin);
1190 chi2A =
fSigma2A->At(VZEROcentralityBin);
1191 chi2C =
fSigma2C->At(VZEROcentralityBin);
1192 chi3A =
fSigma3A->At(VZEROcentralityBin);
1193 chi3C =
fSigma3C->At(VZEROcentralityBin);
1194 chi2A = (chi2A > 0) ? 1./chi2A : 1.;
1195 chi2C = (chi2C > 0) ? 1./chi2C : 1.;
1196 chi3A = (chi3A > 0) ? 1./chi3A : 1.;
1197 chi3C = (chi3C > 0) ? 1./chi3C : 1.;
1203 Q2[0] = chi2A*chi2A*qx2a+chi2C*chi2C*qx2c;
1204 Q2[1] = chi2A*chi2A*qy2a+chi2C*chi2C*qy2c;
1205 Q3[0] = chi3A*chi3A*qx3a+chi3C*chi3C*qx3c;
1206 Q3[1] = chi3A*chi3A*qy3a+chi3C*chi3C*qy3c;
1208 comb[0] = .5*TMath::ATan2(Q2[1], Q2[0]);
1209 comb[1] = (1./3.)*TMath::ATan2(Q3[1], Q3[0]);
1211 Double_t _chi(0), _sigma(0), _none(0);
1216 chi2A =
fChi2A->At(VZEROcentralityBin);
1217 chi2C =
fChi2C->At(VZEROcentralityBin);
1218 _chi = .5*TMath::ATan2(chi2A*chi2A*qy2a+chi2C*chi2C*qy2c, chi2A*chi2A*qx2a+chi2C*chi2C*qx2c);
1219 chi2A =
fSigma2A->At(VZEROcentralityBin);
1220 chi2C =
fSigma2C->At(VZEROcentralityBin);
1221 chi2A = (chi2A > 0) ? 1./chi2A : 1.;
1222 chi2C = (chi2C > 0) ? 1./chi2C : 1.;
1223 _sigma = .5*TMath::ATan2(chi2A*chi2A*qy2a+chi2C*chi2C*qy2c, chi2A*chi2A*qx2a+chi2C*chi2C*qx2c);
1227 _chi = .5*TMath::ATan2(chi2A*chi2A*qy2a+chi2C*chi2C*qy2c, chi2A*chi2A*qx2a+chi2C*chi2C*qx2c);
1228 chi2A =
fSigma2A->At(VZEROcentralityBin);
1229 chi2C =
fSigma2C->At(VZEROcentralityBin);
1230 chi2A = (chi2A > 0) ? 1./chi2A : 1.;
1231 chi2C = (chi2C > 0) ? 1./chi2C : 1.;
1232 _sigma = .5*TMath::ATan2(chi2A*chi2A*qy2a+chi2C*chi2C*qy2c, chi2A*chi2A*qx2a+chi2C*chi2C*qx2c);
1236 _sigma = .5*TMath::ATan2(chi2A*chi2A*qy2a+chi2C*chi2C*qy2c, chi2A*chi2A*qx2a+chi2C*chi2C*qx2c);
1237 chi2A =
fChi2A->At(VZEROcentralityBin);
1238 chi2C =
fChi2C->At(VZEROcentralityBin);
1239 _chi = .5*TMath::ATan2(chi2A*chi2A*qy2a+chi2C*chi2C*qy2c, chi2A*chi2A*qx2a+chi2C*chi2C*qx2c);
1244 _none = .5*TMath::ATan2(qy2a+qy2c,qx2a+qx2c);
1256 #ifdef ALIANALYSISTASKJETV2_DEBUG_FLAG_1
1257 printf(
"__FILE__ = %s \n __LINE __ %i , __FUNC__ %s \n ", __FILE__, __LINE__, __func__);
1272 qx2+= TMath::Cos(2.*track->Phi());
1273 qy2+= TMath::Sin(2.*track->Phi());
1274 qx3+= TMath::Cos(3.*track->Phi());
1275 qy3+= TMath::Sin(3.*track->Phi());
1278 tpc[0] = .5*TMath::ATan2(qy2, qx2);
1279 tpc[1] = (1./3.)*TMath::ATan2(qy3, qx3);
1285 #ifdef ALIANALYSISTASKJETV2_DEBUG_FLAG_1
1286 printf(
"__FILE__ = %s \n __LINE __ %i , __FUNC__ %s \n ", __FILE__, __LINE__, __func__);
1307 for(
Int_t iTPC(0); iTPC < iTracks; iTPC++) {
1308 AliVTrack* track =
static_cast<AliVTrack*
>(
fTracks->At(iTPC));
1310 if(track->Eta() < 0 ) {
1311 qx2a+= TMath::Cos(2.*track->Phi());
1312 qy2a+= TMath::Sin(2.*track->Phi());
1313 qx3a+= TMath::Cos(3.*track->Phi());
1314 qy3a+= TMath::Sin(3.*track->Phi());
1315 }
else if (track->Eta() > 0) {
1316 qx2b+= TMath::Cos(2.*track->Phi());
1317 qy2b+= TMath::Sin(2.*track->Phi());
1318 qx3b+= TMath::Cos(3.*track->Phi());
1319 qy3b+= TMath::Sin(3.*track->Phi());
1323 Double_t tpca2(.5*TMath::ATan2(qy2a, qx2a));
1324 Double_t tpca3((1./3.)*TMath::ATan2(qy3a, qx3a));
1325 Double_t tpcb2(.5*TMath::ATan2(qy2b, qx2b));
1326 Double_t tpcb3((1./3.)*TMath::ATan2(qy3b, qx3b));
1342 #ifdef ALIANALYSISTASKJETV2_DEBUG_FLAG_1
1343 printf(
"__FILE__ = %s \n __LINE __ %i , __FUNC__ %s \n ", __FILE__, __LINE__, __func__);
1348 Qa2[0] = 0.; Qc2[0] = 0.; Qa3[0] = 0.; Qc3[0] = 0.;
1349 Qa2[1] = 0.; Qc2[1] = 0.; Qa3[1] = 0.; Qc3[1] = 0.;
1351 Double_t QaX(0), QaY(0), QcX(0), QcY(0);
1352 for(
Int_t i(0); i < 64; i++) {
1354 phi = TMath::PiOver4()*(0.5+i%8);
1355 mult = InputEvent()->GetVZEROData()->GetMultiplicity(i);
1366 QcX += mult*TMath::Cos(2.*phi);
1367 QcY += mult*TMath::Sin(2.*phi);
1377 QaX += mult*TMath::Cos(2.*phi);
1378 QaY += mult*TMath::Sin(2.*phi);
1391 fHistEPBC->Fill(.5*TMath::ATan2(QaY+QcY, QaX+QcX));
1415 Qa2[0] = (Qa2[0] - Qx2amean)/Qx2arms;
1416 Qa2[1] = (Qa2[1] - Qy2amean)/Qy2arms;
1417 Qc2[0] = (Qc2[0] - Qx2cmean)/Qx2crms;
1418 Qc2[1] = (Qc2[1] - Qy2cmean)/Qy2crms;
1420 Qa3[0] = (Qa3[0] - Qx3amean)/Qx3arms;
1421 Qa3[1] = (Qa3[1] - Qy3amean)/Qy3arms;
1422 Qc3[0] = (Qc3[0] - Qx3cmean)/Qx3crms;
1423 Qc3[1] = (Qc3[1] - Qy3cmean)/Qy3crms;
1427 fHistQxV0a->Fill(Qa2[0], VZEROcentralityBin);
1428 fHistQyV0a->Fill(Qa2[1], VZEROcentralityBin);
1429 fHistQxV0c->Fill(Qc2[0], VZEROcentralityBin);
1430 fHistQyV0c->Fill(Qc2[0], VZEROcentralityBin);
1431 fHistEP->Fill(.5*TMath::ATan2(Qa2[1]+Qc2[1], Qa2[0]+Qc2[0]));
1440 #ifdef ALIANALYSISTASKJETV2_DEBUG_FLAG_1
1441 printf(
"__FILE__ = %s \n __LINE __ %i , __FUNC__ %s \n ", __FILE__, __LINE__, __func__);
1460 chi2A =
fChi2A->At(VZEROcentralityBin);
1461 chi2C =
fChi2C->At(VZEROcentralityBin);
1462 chi3A =
fChi3A->At(VZEROcentralityBin);
1463 chi3C =
fChi3C->At(VZEROcentralityBin);
1466 chi2A =
fSigma2A->At(VZEROcentralityBin);
1467 chi2C =
fSigma2C->At(VZEROcentralityBin);
1468 chi3A =
fSigma3A->At(VZEROcentralityBin);
1469 chi3C =
fSigma3C->At(VZEROcentralityBin);
1470 chi2A = (chi2A > 0) ? 1./chi2A : 1.;
1471 chi2C = (chi2C > 0) ? 1./chi2C : 1.;
1472 chi3A = (chi3A > 0) ? 1./chi3A : 1.;
1473 chi3C = (chi3C > 0) ? 1./chi3C : 1.;
1479 Double_t qx2a(QA2[0]), qy2a(QA2[1]), qx2c(QC2[0]), qy2c(QC2[1]);
1481 Q2[0] = chi2A*chi2A*QA2[0]+chi2C*chi2C*QC2[0];
1482 Q2[1] = chi2A*chi2A*QA2[1]+chi2C*chi2C*QC2[1];
1483 Q3[0] = chi3A*chi3A*QA3[0]+chi3C*chi3C*QC3[0];
1484 Q3[1] = chi3A*chi3A*QA3[1]+chi3C*chi3C*QC3[1];
1486 Double_t _chi(0), _sigma(0), _none(0);
1491 chi2A =
fChi2A->At(VZEROcentralityBin);
1492 chi2C =
fChi2C->At(VZEROcentralityBin);
1493 _chi = .5*TMath::ATan2(chi2A*chi2A*qy2a+chi2C*chi2C*qy2c, chi2A*chi2A*qx2a+chi2C*chi2C*qx2c);
1494 chi2A =
fSigma2A->At(VZEROcentralityBin);
1495 chi2C =
fSigma2C->At(VZEROcentralityBin);
1496 chi2A = (chi2A > 0) ? 1./chi2A : 1.;
1497 chi2C = (chi2C > 0) ? 1./chi2C : 1.;
1498 _sigma = .5*TMath::ATan2(chi2A*chi2A*qy2a+chi2C*chi2C*qy2c, chi2A*chi2A*qx2a+chi2C*chi2C*qx2c);
1502 _chi = .5*TMath::ATan2(chi2A*chi2A*qy2a+chi2C*chi2C*qy2c, chi2A*chi2A*qx2a+chi2C*chi2C*qx2c);
1503 chi2A =
fSigma2A->At(VZEROcentralityBin);
1504 chi2C =
fSigma2C->At(VZEROcentralityBin);
1505 chi2A = (chi2A > 0) ? 1./chi2A : 1.;
1506 chi2C = (chi2C > 0) ? 1./chi2C : 1.;
1507 _sigma = .5*TMath::ATan2(chi2A*chi2A*qy2a+chi2C*chi2C*qy2c, chi2A*chi2A*qx2a+chi2C*chi2C*qx2c);
1511 _sigma = .5*TMath::ATan2(chi2A*chi2A*qy2a+chi2C*chi2C*qy2c, chi2A*chi2A*qx2a+chi2C*chi2C*qx2c);
1512 chi2A =
fChi2A->At(VZEROcentralityBin);
1513 chi2C =
fChi2C->At(VZEROcentralityBin);
1514 _chi = .5*TMath::ATan2(chi2A*chi2A*qy2a+chi2C*chi2C*qy2c, chi2A*chi2A*qx2a+chi2C*chi2C*qx2c);
1519 _none = .5*TMath::ATan2(qy2a+qy2c,qx2a+qx2c);
1530 #ifdef ALIANALYSISTASKJETV2_DEBUG_FLAG_2
1531 printf(
"__FILE__ = %s \n __LINE __ %i , __FUNC__ %s \n ", __FILE__, __LINE__, __func__);
1533 pt = 0; eta = 0; phi = 0;
1534 Float_t etaJet(999), phiJet(999), dJet(999);
1536 etaJet = jet->
Eta();
1537 phiJet = jet->
Phi();
1543 if(maxPhi > TMath::TwoPi()) maxPhi = TMath::TwoPi();
1544 if(minPhi < 0 ) minPhi = 0.;
1546 Int_t attempts(1000);
1550 phi =
gRandom->Uniform(minPhi, maxPhi);
1552 dJet = TMath::Sqrt((etaJet-eta)*(etaJet-eta)+(phiJet-phi)*(phiJet-phi));
1554 else if (attempts == 0) {
1555 printf(
" > No random cone after 1000 tries, giving up ... !\n");
1561 tracksCont->ResetCurrentID();
1564 Float_t etaTrack(track->Eta()), phiTrack(track->Phi());
1566 if(TMath::Abs(phiTrack-phi) > TMath::Abs(phiTrack - phi + TMath::TwoPi())) phiTrack+=TMath::TwoPi();
1567 if(TMath::Abs(phiTrack-phi) > TMath::Abs(phiTrack - phi - TMath::TwoPi())) phiTrack-=TMath::TwoPi();
1568 if(TMath::Sqrt(TMath::Abs((etaTrack-eta)*(etaTrack-eta)+(phiTrack-phi)*(phiTrack-phi))) <=
GetJetRadius()) pt += track->Pt();
1574 TLorentzVector momentum;
1575 clusterCont->ResetCurrentID();
1578 cluster->GetMomentum(momentum, const_cast<Double_t*>(
fVertex));
1579 Float_t etaClus(momentum.Eta()), phiClus(momentum.Phi());
1581 if(TMath::Abs(phiClus-phi) > TMath::Abs(phiClus - phi + TMath::TwoPi())) phiClus+=TMath::TwoPi();
1582 if(TMath::Abs(phiClus-phi) > TMath::Abs(phiClus - phi - TMath::TwoPi())) phiClus-=TMath::TwoPi();
1583 if(TMath::Sqrt(TMath::Abs((etaClus-eta)*(etaClus-eta)+(phiClus-phi)*(phiClus-phi))) <=
GetJetRadius()) pt += momentum.Pt();
1591 #ifdef ALIANALYSISTASKJETV2_DEBUG_FLAG_1
1592 printf(
"__FILE__ = %s \n __LINE __ %i , __FUNC__ %s \n ", __FILE__, __LINE__, __func__);
1594 Double_t reQ(0), imQ(0), modQ(0), M11(0), M(0);
1596 QCnQnk(harm, 1, reQ, imQ);
1597 modQ = reQ*reQ+imQ*imQ;
1599 return (M11 > 0) ? ((modQ -
QCnS(1,2))/M11) : -999;
1601 QCnQnk(harm, 0, reQ, imQ);
1602 modQ = reQ*reQ+imQ*imQ;
1604 return (M > 1) ? (modQ - M)/(M*(M-1)) : -999;
1609 #ifdef ALIANALYSISTASKJETV2_DEBUG_FLAG_1
1610 printf(
"__FILE__ = %s \n __LINE __ %i , __FUNC__ %s \n ", __FILE__, __LINE__, __func__);
1612 Double_t reQn1(0), imQn1(0), reQ2n2(0), imQ2n2(0), reQn3(0), imQn3(0), M1111(0), M(0);
1613 Double_t a(0), b(0),
c(0), d(0), e(0), f(0), g(0);
1615 QCnQnk(harm, 1, reQn1, imQn1);
1616 QCnQnk(harm*2, 2, reQ2n2, imQ2n2);
1617 QCnQnk(harm, 3, reQn3, imQn3);
1619 a = (reQn1*reQn1+imQn1*imQn1)*(reQn1*reQn1+imQn1*imQn1);
1620 b = reQ2n2*reQ2n2 + imQ2n2*imQ2n2;
1621 c = -2.*(reQ2n2*reQn1*reQn1-reQ2n2*imQn1*imQn1+2.*imQ2n2*reQn1*imQn1);
1622 d = 8.*(reQn3*reQn1+imQn3*imQn1);
1623 e = -4.*
QCnS(1,2)*(reQn1*reQn1+imQn1*imQn1);
1627 return (M1111 > 0) ? (a+b+
c+d+e+f+g)/M1111 : -999;
1629 Double_t reQn(0), imQn(0), reQ2n(0), imQ2n(0);
1630 QCnQnk(harm, 0, reQn, imQn);
1631 QCnQnk(harm*2, 0, reQ2n, imQ2n);
1634 if(M < 4)
return -999;
1635 a = (reQn*reQn+imQn*imQn)*(reQn*reQn+imQn*imQn);
1636 b = reQ2n*reQ2n + imQ2n*imQ2n;
1637 c = -2.*(reQ2n*reQn*reQn-reQ2n*imQn*imQn+2.*imQ2n*reQn*imQn);
1638 e = -4.*(M-2)*(reQn*reQn+imQn*imQn);
1640 return (a+b+
c+e+f)/(M*(M-1)*(M-2)*(M-3));
1645 #ifdef ALIANALYSISTASKJETV2_DEBUG_FLAG_1
1646 printf(
"__FILE__ = %s \n __LINE __ %i , __FUNC__ %s \n ", __FILE__, __LINE__, __func__);
1651 for(
Int_t iTPC(0); iTPC < iTracks; iTPC++) {
1652 AliVTrack* track =
static_cast<AliVTrack*
>(
fTracks->At(iTPC));
1656 reQ += TMath::Power(track->Pt(), k) * TMath::Cos(((
double)n)*track->Phi());
1657 imQ += TMath::Power(track->Pt(), k) * TMath::Sin(((
double)n)*track->Phi());
1666 #ifdef ALIANALYSISTASKJETV2_DEBUG_FLAG_1
1667 printf(
"__FILE__ = %s \n __LINE __ %i , __FUNC__ %s \n ", __FILE__, __LINE__, __func__);
1669 Int_t iPois(pois->GetEntriesFast());
1671 for(
Int_t i(0); i < iPois; i++) {
1672 for(
Int_t ptBin(0); ptBin < ptBins->GetSize()-1; ptBin++) {
1673 AliVTrack* poi =
static_cast<AliVTrack*
>(pois->At(i));
1675 if(poi->Pt() >= ptBins->At(ptBin) && poi->Pt() < ptBins->At(ptBin+1)) {
1677 repn[ptBin]+=TMath::Cos(((
double)n)*poi->Phi());
1678 impn[ptBin]+=TMath::Sin(((
double)n)*poi->Phi());
1680 reqn[ptBin]+=TMath::Cos(((
double)n)*poi->Phi());
1681 imqn[ptBin]+=TMath::Sin(((
double)n)*poi->Phi());
1688 for(
Int_t i(0); i < iPois; i++) {
1689 for(
Int_t ptBin(0); ptBin < ptBins->GetSize()-1; ptBin++) {
1694 if(pt >= ptBins->At(ptBin) && pt < ptBins->At(ptBin+1)) {
1695 repn[ptBin]+=TMath::Cos(((
double)n)*poi->
Phi());
1696 impn[ptBin]+=TMath::Sin(((
double)n)*poi->
Phi());
1707 #ifdef ALIANALYSISTASKJETV2_DEBUG_FLAG_1
1708 printf(
"__FILE__ = %s \n __LINE __ %i , __FUNC__ %s \n ", __FILE__, __LINE__, __func__);
1710 if(!
fTracks || i <= 0 || j <= 0)
return -999;
1713 for(
Int_t iTPC(0); iTPC < iTracks; iTPC++) {
1714 AliVTrack* track =
static_cast<AliVTrack*
>(
fTracks->At(iTPC));
1716 Sij+=TMath::Power(track->Pt(), j);
1718 return TMath::Power(Sij, i);
1723 #ifdef ALIANALYSISTASKJETV2_DEBUG_FLAG_1
1724 printf(
"__FILE__ = %s \n __LINE __ %i , __FUNC__ %s \n ", __FILE__, __LINE__, __func__);
1731 #ifdef ALIANALYSISTASKJETV2_DEBUG_FLAG_1
1732 printf(
"__FILE__ = %s \n __LINE __ %i , __FUNC__ %s \n ", __FILE__, __LINE__, __func__);
1739 #ifdef ALIANALYSISTASKJETV2_DEBUG_FLAG_1
1740 printf(
"__FILE__ = %s \n __LINE __ %i , __FUNC__ %s \n ", __FILE__, __LINE__, __func__);
1748 #ifdef ALIANALYSISTASKJETV2_DEBUG_FLAG_1
1749 printf(
"__FILE__ = %s \n __LINE __ %i , __FUNC__ %s \n ", __FILE__, __LINE__, __func__);
1767 if( c2 < 0 ) c2 = -1.*TMath::Sqrt(-1.*c2);
1768 if( c3 < 0 ) c3 = -1.*TMath::Sqrt(-1.*c3);
1782 default :
return kFALSE;
1802 #ifdef ALIANALYSISTASKJETV2_DEBUG_FLAG_1
1803 printf(
"__FILE__ = %s \n __LINE __ %i , __FUNC__ %s \n ", __FILE__, __LINE__, __func__);
1805 Int_t freeParams(2);
1826 }
else if (!
QCnRecovery(psi2, psi3))
return kFALSE;
1852 }
else if (!
QCnRecovery(psi2, psi3))
return kFALSE;
1878 case kTPC : detector+=
"TPC";
1880 case kVZEROA : detector+=
"VZEROA";
1882 case kVZEROC : detector+=
"VZEROC";
1886 case kFixedEP : detector+=
"FixedEP";
1894 if(iTracks <= 0 || fLocalRho->GetVal() <= 0 )
return kFALSE;
1905 Double_t lowBound(0.), upBound(TMath::TwoPi());
1913 _tempSwap = TH1F(
"_tempSwap",
"_tempSwap", TMath::CeilNint(TMath::Sqrt(
fNAcceptedTracks)), lowBound, upBound);
1919 Double_t totalpts(0.), totalptsquares(0.), totalns(0.);
1920 for(
Int_t i(0); i < iTracks; i++) {
1921 AliVTrack* track =
static_cast<AliVTrack*
>(
fTracks->At(i));
1925 _tempSwap.Fill(track->Phi(), track->Pt());
1927 totalpts += track->Pt();
1928 totalptsquares += track->Pt()*track->Pt();
1930 _tempSwapN.Fill(track->Phi());
1933 else _tempSwap.Fill(track->Phi());
1940 if(totalns < 2)
return kFALSE;
1941 for(
Int_t l = 0; l < _tempSwap.GetNbinsX(); l++) {
1942 if(_tempSwapN.GetBinContent(l+1) == 0) {
1943 _tempSwap.SetBinContent(l+1,0);
1944 _tempSwap.SetBinError(l+1,0);
1947 Double_t vartimesnsq = totalptsquares*totalns - totalpts*totalpts;
1948 Double_t variance = vartimesnsq/(totalns*(totalns-1.));
1949 Double_t SDOMSq = variance / _tempSwapN.GetBinContent(l+1);
1950 Double_t SDOMSqOverMeanSq = SDOMSq * _tempSwapN.GetBinContent(l+1) * _tempSwapN.GetBinContent(l+1) / (_tempSwapN.GetBinContent(l+1) * _tempSwapN.GetBinContent(l+1));
1951 Double_t poissonfrac = 1./_tempSwapN.GetBinContent(l+1);
1952 Double_t vartotalfrac = SDOMSqOverMeanSq + poissonfrac;
1953 Double_t vartotal = vartotalfrac * _tempSwap.GetBinContent(l+1) * _tempSwap.GetBinContent(l+1);
1954 if(vartotal > 0.0001) _tempSwap.SetBinError(l+1,TMath::Sqrt(vartotal));
1956 _tempSwap.SetBinContent(l+1,0);
1957 _tempSwap.SetBinError(l+1,0);
1984 Double_t cos2(0), sin2(0), cos3(0), sin3(0), sumPt(0);
1985 for(
Int_t i(0); i < iTracks; i++) {
1986 AliVTrack* track =
static_cast<AliVTrack*
>(
fTracks->At(i));
1988 sumPt += track->Pt();
1989 cos2 += track->Pt()*TMath::Cos(2*
PhaseShift(track->Phi()-psi2));
1990 sin2 += track->Pt()*TMath::Sin(2*
PhaseShift(track->Phi()-psi2));
1991 cos3 += track->Pt()*TMath::Cos(3*
PhaseShift(track->Phi()-psi3));
1992 sin3 += track->Pt()*TMath::Sin(3*
PhaseShift(track->Phi()-psi3));
2003 Int_t _bins = _tempSwap.GetXaxis()->GetNbins();
2004 TF1* _tempFit =
new TF1(
"temp_fit_kCombined",
"[0]*([1]+[2]*([3]*TMath::Cos([2]*(x-[4]))+[7]*TMath::Cos([5]*(x-[6]))))", 0, TMath::TwoPi());
2006 _tempFit->SetParameter(3, 0.1);
2007 _tempFit->FixParameter(1, 1.);
2008 _tempFit->FixParameter(2, 2.);
2009 _tempFit->FixParameter(5, 3.);
2012 _tempFit->SetParameter(7, 0.1);
2014 for(
int _binsI = 0; _binsI < _bins*_bins; _binsI++) _tempSwap.Fill(_tempFit->GetRandom());
2019 Int_t NDF(_tempSwap.GetXaxis()->GetNbins()-freeParams);
2020 if(NDF == 0 || (
float)NDF <= 0.)
return kFALSE;
2044 CDF = CDFKolmogorov;
2065 if(CDFControl > CDF) {
2081 static Int_t didacticCounterBest(0);
2082 TProfile* didacticProfile = (TProfile*)_tempSwap.Clone(Form(
"Fit_%i_1-CDF_%.3f_cen_%i_%s", didacticCounterBest, CDF,
fInCentralitySelection, detector.Data()));
2088 TF1* v0(
new TF1(
"dfit_kV2",
"[0]", 0, TMath::TwoPi()));
2089 v0->SetParameter(0, didacticFit->GetParameter(0));
2090 v0->SetLineColor(kMagenta);
2091 v0->SetLineStyle(7);
2092 didacticProfile->GetListOfFunctions()->Add(v0);
2093 TF1* v2(
new TF1(
"dfit_kV2",
"[0]*([1]+[2]*[3]*TMath::Cos([2]*(x-[4])))", 0, TMath::TwoPi()));
2094 v2->SetParameter(0, didacticFit->GetParameter(0));
2095 v2->SetParameter(3, didacticFit->GetParameter(3));
2096 v2->FixParameter(1, 1.);
2097 v2->FixParameter(2, 2.);
2098 v2->FixParameter(4, didacticFit->GetParameter(4));
2099 v2->SetLineColor(kGreen);
2100 didacticProfile->GetListOfFunctions()->Add(v2);
2101 TF1* v3(
new TF1(
"dfit_kV3",
"[0]*([1]+[2]*[3]*TMath::Cos([5]*(x-[4])))", 0, TMath::TwoPi()));
2102 v3->SetParameter(0, didacticFit->GetParameter(0));
2103 v3->SetParameter(3, didacticFit->GetParameter(7));
2104 v3->FixParameter(1, 1.);
2105 v3->FixParameter(2, 2.);
2106 v3->FixParameter(4, didacticFit->GetParameter(6));
2107 v3->FixParameter(5, 3.);
2108 v3->SetLineColor(kCyan);
2109 didacticProfile->GetListOfFunctions()->Add(v3);
2113 didacticProfile->GetListOfFunctions()->Add(didacticFit);
2114 didacticProfile->GetYaxis()->SetTitle(
"#frac{d #sum #it{p}_{T}}{d #varphi} [GeV/#it{c}]");
2115 didacticProfile->GetXaxis()->SetTitle(
"#varphi");
2117 didacticCounterBest++;
2118 TH2F* didacticSurface =
BookTH2F(Form(
"surface_%s", didacticProfile->GetName()),
"#phi",
"#eta", 50, 0, TMath::TwoPi(), 50, -1, 1, -1, kFALSE);
2119 for(
Int_t i(0); i < iTracks; i++) {
2120 AliVTrack* track =
static_cast<AliVTrack*
>(
fTracks->At(i));
2122 if(
fUsePtWeight) didacticSurface->Fill(track->Phi(), track->Eta(), track->Pt());
2123 else didacticSurface->Fill(track->Phi(), track->Eta());
2127 TF2 *f2 =
new TF2(Form(
"%s_LJ", didacticSurface->GetName()),
"[0]*TMath::Gaus(x,[1],[2])*TMath::Gaus(y,[3],[4])", 0, TMath::TwoPi(), -1, 1);
2128 f2->SetParameters(excludeInPt/3.,excludeInPhi,.1,excludeInEta,.1);
2129 didacticSurface->GetListOfFunctions()->Add(f2);
2138 static Int_t didacticCounterWorst(0);
2140 TProfile* didacticProfile = (TProfile*)_tempSwap.Clone(Form(
"Fit_%i_1-CDF_%.3f_cen_%i_%s", didacticCounterWorst, CDF,
fInCentralitySelection, detector.Data() ));
2142 didacticProfile->GetListOfFunctions()->Add(didacticFit);
2144 didacticCounterWorst++;
2166 #ifdef ALIANALYSISTASKJETV2_DEBUG_FLAG_1
2167 printf(
"__FILE__ = %s \n __LINE __ %i , __FUNC__ %s \n ", __FILE__, __LINE__, __func__);
2178 if(aodEvent) trigger = ((AliVAODHeader*)(aodEvent->GetHeader()))->GetOfflineTrigger();
2180 if((trigger & AliVEvent::kMB) == 0)
return kFALSE;
2190 if( (!esdEvent) || (TMath::Abs(esdEvent->GetPrimaryVertexSPD()->GetZ() - esdEvent->GetPrimaryVertex()->GetZ()) > .5) )
return kFALSE;
2194 if( (!aodEvent) || (TMath::Abs(aodEvent->GetPrimaryVertexSPD()->GetZ() - aodEvent->GetPrimaryVertex()->GetZ()) > .5) )
return kFALSE;
2198 fCent = InputEvent()->GetCentrality()->GetCentralityPercentile(
"V0M");
2210 if(
fTracks->GetEntries() < 1)
return kFALSE;
2211 if(
fRho->GetVal() <= 0 )
return kFALSE;
2215 Float_t multTPC(0.), multGlob(0.);
2217 Int_t nGoodTracks(event->GetNumberOfTracks());
2218 for(
Int_t iTracks = 0; iTracks < nGoodTracks; iTracks++) {
2219 AliAODTrack* trackAOD =
dynamic_cast<AliAODTrack*
>(
event->GetTrack(iTracks));
2220 if(!trackAOD) AliFatal(
"Not a standard AOD");
2221 if (!trackAOD)
continue;
2222 if (!(trackAOD->TestFilterBit(1)))
continue;
2223 if ((trackAOD->Pt() < .2) || (trackAOD->Pt() > 5.0) || (TMath::Abs(trackAOD->Eta()) > .8) || (trackAOD->GetTPCNcls() < 70) || (trackAOD->GetDetPid()->GetTPCsignal() < 10.0) || (trackAOD->Chi2perNDF() < 0.2))
continue;
2226 for(
Int_t iTracks = 0; iTracks < nGoodTracks; iTracks++) {
2227 AliAODTrack* trackAOD =
dynamic_cast<AliAODTrack*
>(
event->GetTrack(iTracks));
2228 if(!trackAOD) AliFatal(
"Not a standard AOD");
2229 if (!trackAOD)
continue;
2230 if (!(trackAOD->TestFilterBit(16)))
continue;
2231 if ((trackAOD->Pt() < .2) || (trackAOD->Pt() > 5.0) || (TMath::Abs(trackAOD->Eta()) > .8) || (trackAOD->GetTPCNcls() < 70) || (trackAOD->GetDetPid()->GetTPCsignal() < 10.0) || (trackAOD->Chi2perNDF() < 0.1))
continue;
2233 Double_t bCov[3] = {-99., -99., -99.};
2234 AliAODTrack copy(*trackAOD);
2235 if (!(copy.PropagateToDCA(event->GetPrimaryVertex(),
event->GetMagneticField(), 100., b, bCov)))
continue;
2236 if ((TMath::Abs(b[0]) > 0.3) || (TMath::Abs(b[1]) > 0.3))
continue;
2239 if(! (multTPC > (-40.3+1.22*multGlob) && multTPC < (32.1+1.59*multGlob)))
return kFALSE;
2249 #ifdef ALIANALYSISTASKJETV2_DEBUG_FLAG_1
2250 printf(
"__FILE__ = %s \n __LINE __ %i , __FUNC__ %s \n ", __FILE__, __LINE__, __func__);
2264 #ifdef ALIANALYSISTASKJETV2_DEBUG_FLAG_2
2265 printf(
"__FILE__ = %s \n __LINE __ %i , __FUNC__ %s \n ", __FILE__, __LINE__, __func__);
2289 #ifdef ALIANALYSISTASKJETV2_DEBUG_FLAG_1
2290 printf(
"__FILE__ = %s \n __LINE __ %i , __FUNC__ %s \n ", __FILE__, __LINE__, __func__);
2300 #ifdef ALIANALYSISTASKJETV2_DEBUG_FLAG_
2301 printf(
"\n > TASK %s CANNOT IDENTIFY RUN - CONFIGURATION COULD BE INCORRECT < \n", GetName());
2308 #ifdef ALIANALYSISTASKJETV2_DEBUG_FLAG_1
2309 printf(
"__FILE__ = %s \n __LINE __ %i , __FUNC__ %s \n ", __FILE__, __LINE__, __func__);
2311 Int_t iTracks(
fTracks->GetEntriesFast()), iAcceptedTracks(0);
2312 for(
Int_t i(0); i < iTracks; i++) {
2313 AliVTrack* track =
static_cast<AliVTrack*
>(
fTracks->At(i));
2325 #ifdef ALIANALYSISTASKJETV2_DEBUG_FLAG_1
2326 printf(
"__FILE__ = %s \n __LINE __ %i , __FUNC__ %s \n ", __FILE__, __LINE__, __func__);
2330 TLorentzVector clusterLorentzVector;
2331 for(
Int_t i(0); i < iClusters; i++) {
2334 cluster->GetMomentum(clusterLorentzVector, const_cast<Double_t*>(
fVertex));
2345 #ifdef ALIANALYSISTASKJETV2_DEBUG_FLAG_1
2346 printf(
"__FILE__ = %s \n __LINE __ %i , __FUNC__ %s \n ", __FILE__, __LINE__, __func__);
2348 Double_t TRK(InputEvent()->GetCentrality()->GetCentralityPercentile(
"TRK"));
2349 Double_t V0M(InputEvent()->GetCentrality()->GetCentralityPercentile(
"V0M"));
2375 #ifdef ALIANALYSISTASKJETV2_DEBUG_FLAG_1
2376 printf(
"__FILE__ = %s \n __LINE __ %i , __FUNC__ %s \n ", __FILE__, __LINE__, __func__);
2386 for(
Int_t i(0); i < iJets; i++) {
2397 #ifdef ALIANALYSISTASKJETV2_DEBUG_FLAG_1
2398 printf(
"__FILE__ = %s \n __LINE __ %i , __FUNC__ %s \n ", __FILE__, __LINE__, __func__);
2404 Float_t pt(0), eta(0), phi(0);
2439 #ifdef ALIANALYSISTASKJETV2_DEBUG_FLAG_1
2440 printf(
"__FILE__ = %s \n __LINE __ %i , __FUNC__ %s \n ", __FILE__, __LINE__, __func__);
2445 trigger = ((AliInputEventHandler*)(AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler()))->IsEventSelected();
2446 #ifdef ALIANALYSISTASKJETV2_DEBUG_FLAG_1
2450 for(
Int_t i(0); i < iJets; i++) {
2491 #ifdef ALIANALYSISTASKJETV2_DEBUG_FLAG_2
2492 printf(
"__FILE__ = %s \n __LINE __ %i , __FUNC__ %s \n ", __FILE__, __LINE__, __func__);
2516 #ifdef ALIANALYSISTASKJETV2_DEBUG_FLAG_1
2517 printf(
"__FILE__ = %s \n __LINE __ %i , __FUNC__ %s \n ", __FILE__, __LINE__, __func__);
2520 fHistVertexz->Fill(vevent->GetPrimaryVertex()->GetZ());
2527 #ifdef ALIANALYSISTASKJETV2_DEBUG_FLAG_1
2528 printf(
"\n > TASK %s CANNOT IDENTIFY RUN - CONFIGURATION COULD BE INCORRECT < \n", GetName());
2541 #ifdef ALIANALYSISTASKJETV2_DEBUG_FLAG_2
2542 printf(
"__FILE__ = %s \n __LINE __ %i , __FUNC__ %s \n ", __FILE__, __LINE__, __func__);
2561 UInt_t MB_EMCEJE(AliVEvent::kMB | AliVEvent::kEMCEJE);
2562 UInt_t CEN_EMCEJE(AliVEvent::kCentral | AliVEvent::kEMCEJE);
2563 UInt_t SEM_EMCEJE(AliVEvent::kSemiCentral | AliVEvent::kEMCEJE);
2564 UInt_t ALL_EMCEJE(AliVEvent::kMB | AliVEvent::kCentral | AliVEvent::kSemiCentral | AliVEvent::kEMCEJE);
2565 UInt_t MB_EMCEGA(AliVEvent::kMB | AliVEvent::kEMCEGA);
2566 UInt_t CEN_EMCEGA(AliVEvent::kCentral | AliVEvent::kEMCEGA);
2567 UInt_t SEM_EMCEGA(AliVEvent::kSemiCentral | AliVEvent::kEMCEGA);
2568 UInt_t ALL_EMCEGA(AliVEvent::kMB | AliVEvent::kCentral | AliVEvent::kSemiCentral | AliVEvent::kEMCEGA);
2614 #ifdef ALIANALYSISTASKJETV2_DEBUG_FLAG_1
2615 printf(
"__FILE__ = %s \n __LINE __ %i , __FUNC__ %s \n ", __FILE__, __LINE__, __func__);
2672 #ifdef ALIANALYSISTASKJETV2_DEBUG_FLAG_1
2673 printf(
"__FILE__ = %s \n __LINE __ %i , __FUNC__ %s \n ", __FILE__, __LINE__, __func__);
2675 AliAnalysisTaskJetV2::Dump();
2685 #ifdef ALIANALYSISTASKJETV2_DEBUG_FLAG_1
2686 printf(
"__FILE__ = %s \n __LINE __ %i , __FUNC__ %s \n ", __FILE__, __LINE__, __func__);
2695 #ifdef ALIANALYSISTASKJETV2_DEBUG_FLAG_1
2696 printf(
"__FILE__ = %s \n __LINE __ %i , __FUNC__ %s \n ", __FILE__, __LINE__, __func__);
2700 fFitControl =
new TF1(
"controlFit",
"pol0", 0, TMath::TwoPi());
2708 #ifdef ALIANALYSISTASKJETV2_DEBUG_FLAG_1
2709 printf(
"__FILE__ = %s \n __LINE __ %i , __FUNC__ %s \n ", __FILE__, __LINE__, __func__);
2712 printf(
" > Please add fOutputList first < \n");
2716 (cen) ? r =
new TH1F(
"R",
"R", cen->GetSize()-1, cen->GetArray()) : r =
new TH1F(
"R",
"R", 10, 0, 10);
2717 if(!cen) r->GetXaxis()->SetTitle(
"number of centrality bin");
2718 r->GetYaxis()->SetTitle(Form(
"Resolution #Psi_{%i}", h));
2719 for(
Int_t i(0); i < 10; i++) {
2720 TProfile* temp((TProfile*)
fOutputList->FindObject(Form(
"fProfV%iResolution_%i", h, i)));
2722 Double_t a(temp->GetBinContent(3)), b(temp->GetBinContent(5)),
c(temp->GetBinContent(7));
2723 Double_t d(temp->GetBinContent(9)), e(temp->GetBinContent(10)), f(temp->GetBinContent(11));
2724 Double_t _a(temp->GetBinError(3)), _b(temp->GetBinError(5)), _c(temp->GetBinError(7));
2725 Double_t _d(temp->GetBinError(9)), _e(temp->GetBinError(10)), _f(temp->GetBinError(11));
2727 if(a <= 0 || b <= 0 ||
c <= 0 || d <= 0 || e <= 0 || f <= 0)
continue;
2730 r->SetBinContent(1+i, TMath::Sqrt((a*b)/
c));
2731 if(i==0) r->SetNameTitle(
"VZEROA resolution",
"VZEROA resolution");
2732 error = TMath::Power((2.*a*TMath::Sqrt((a*b)/
c))/3.,2.)*_a*_a+TMath::Power((2.*b*TMath::Sqrt((a*b)/
c))/3.,2.)*_b*_b+TMath::Power(2.*
c*TMath::Sqrt((a*b)/
c),2.)*_c*_c;
2733 if(error > 0.) error = TMath::Sqrt(error);
2734 r->SetBinError(1+i, error);
2737 r->SetBinContent(1+i, TMath::Sqrt((a*
c)/b));
2738 error = TMath::Power((2.*a*TMath::Sqrt((a*c)/b))/3.,2.)*_a*_a+TMath::Power((2.*b*TMath::Sqrt((a*c)/b)),2.)*_b*_b+TMath::Power(2.*c*TMath::Sqrt((a*c)/b)/3.,2.)*_c*_c;
2739 if(error > 0.) error = TMath::Sqrt(error);
2740 if(i==0) r->SetNameTitle(
"VZEROC resolution",
"VZEROC resolution");
2741 r->SetBinError(1+i, error);
2744 r->SetBinContent(1+i, TMath::Sqrt((b*
c)/a));
2745 if(i==0) r->SetNameTitle(
"TPC resolution",
"TPC resolution");
2746 r->SetBinError(1+i, TMath::Sqrt(_a*_a+_b*_b+_c*_c));
2749 r->SetBinContent(1+i, TMath::Sqrt((d*e)/f));
2750 if(i==0) r->SetNameTitle(
"VZEROComb resolution",
"VZEROComb resolution");
2751 r->SetBinError(1+i, TMath::Sqrt(_d*_d+_e*_e+_f*_f));
2763 #ifdef ALIANALYSISTASKJETV2_DEBUG_FLAG_1
2764 printf(
"__FILE__ = %s \n __LINE __ %i , __FUNC__ %s \n ", __FILE__, __LINE__, __func__);
2768 printf(
" > Couldn't find resolution < \n");
2771 Double_t res(1./r->GetBinContent(1+r->FindBin(c)));
2772 TF1* line =
new TF1(
"line",
"pol0", 0, 200);
2773 line->SetParameter(0, res);
2783 #ifdef ALIANALYSISTASKJETV2_DEBUG_FLAG_1
2784 printf(
"__FILE__ = %s \n __LINE __ %i , __FUNC__ %s \n ", __FILE__, __LINE__, __func__);
2794 #ifdef ALIANALYSISTASKJETV2_DEBUG_FLAG_1
2795 printf(
"__FILE__ = %s \n __LINE __ %i , __FUNC__ %s \n ", __FILE__, __LINE__, __func__);
2797 Double_t r(refCumulants->GetBinContent(h-1));
2798 if(r > 0) r = TMath::Sqrt(r);
2799 TH1F* qc =
new TH1F(Form(
"QC2v%i", h), Form(
"QC2v%i", h), ptBins->GetSize()-1, ptBins->GetArray());
2801 for(
Int_t i(0); i < ptBins->GetSize(); i++) {
2803 a = diffCumlants->GetBinContent(1+i);
2804 b = diffCumlants->GetBinError(1+i);
2806 qc->SetBinContent(1+i, c);
2807 (a <= 0 || b <= 0) ? qc->SetBinError(1+i, b) : qc->SetBinError(1+i, TMath::Sqrt(c*c*b*b/(a*a)));
2818 #ifdef ALIANALYSISTASKJETV2_DEBUG_FLAG_1
2819 printf(
"__FILE__ = %s \n __LINE __ %i , __FUNC__ %s \n ", __FILE__, __LINE__, __func__);
2830 Double_t chiC2[] = {0.771423, 1.10236, 1.38116, 1.48077, 1.31964, 1.10236, 0.674622, 0.600403, 0.273865};
2831 Double_t chiA2[] = {0.582214, 0.674622, 0.832214, 0.873962, 0.832214, 0.771423, 0.637146, 0.424255, 0.257385};
2832 Double_t chiC3[] = {0.493347, 0.493347, 0.458557, 0.407166, 0.356628, 0.273865, 0.176208, 6.10352e-05, 6.10352e-05};
2833 Double_t chiA3[] = {0.356628, 0.373474, 0.356628, 0.306702, 0.24115, 0.192322, 0.127869, 6.10352e-05, 6.10352e-05};
2840 Double_t sigmaC2[] = {0.000210563,0.000554248,0.00126934,0.00138031,0.00124522,0.000948494,0.00115442,0.000626186,0.000161246};
2841 Double_t sigmaA2[] = {0.000195393,0.000509235,0.00112734,0.00121416,0.00110601,0.00086572,0.0010805,0.000579927,0.00013517};
2842 Double_t sigmaC3[] = {0.000131573,0.000317261,0.000783971,0.000885244,0.000763271,0.000542612,0.000647701,0.000524767,0};
2843 Double_t sigmaA3[] = {0.000123304,0.000293338,0.000714463,0.000798547,0.00069079,0.000503398,0.000615878,0.000489984,0};
2851 if(!
fOADB ||
fOADB->IsZombie())
fOADB = TFile::Open(
"$ALICE_PHYSICS/OADB/PWGCF/VZERO/VZEROcalibEP.root");
2852 if(
fOADB->IsZombie()) {
2853 printf(
"OADB file $ALICE_PHYSICS/OADB/PWGCF/VZERO/VZEROcalibEP.root cannot be opened, CALIBRATION FAILED !");
2857 AliOADBContainer *cont = (AliOADBContainer*)
fOADB->Get(
"hMultV0BefCorr");
2860 printf(
"OADB object hMultV0BefCorr is not available in the file\n");
2864 if(!(cont->GetObject(run))){
2866 printf(
"OADB object hMultVZEROBefCorr is not available for run %i (used default run 137366)\n",run);
2872 AliFatal(Form(
"%s: Fatal error, couldn't read fVZEROgainEqualization from OADB object < \n", GetName()));
2876 TF1* fpol0 =
new TF1(
"fpol0",
"pol0");
2883 for(
Int_t iside=0;iside<2;iside++){
2884 for(
Int_t icoord=0;icoord<2;icoord++){
2885 for(
Int_t i=0;i < 9;i++){
2887 if(iside==0 && icoord==0)
2888 snprintf(namecont,100,
"hQxc2_%i",i);
2889 else if(iside==1 && icoord==0)
2890 snprintf(namecont,100,
"hQxa2_%i",i);
2891 else if(iside==0 && icoord==1)
2892 snprintf(namecont,100,
"hQyc2_%i",i);
2893 else if(iside==1 && icoord==1)
2894 snprintf(namecont,100,
"hQya2_%i",i);
2896 cont = (AliOADBContainer*)
fOADB->Get(namecont);
2898 printf(
"OADB object %s is not available in the file\n",namecont);
2902 if(!(cont->GetObject(run))){
2903 printf(
"OADB object %s is not available for run %i (used run 137366)\n",namecont,run);
2908 fMeanQ[i][iside][icoord] = ((TH1F *) cont->GetObject(run))->GetMean();
2909 fWidthQ[i][iside][icoord] = ((TH1F *) cont->GetObject(run))->GetRMS();
2912 if(iside==0 && icoord==0)
2913 snprintf(namecont,100,
"hQxc3_%i",i);
2914 else if(iside==1 && icoord==0)
2915 snprintf(namecont,100,
"hQxa3_%i",i);
2916 else if(iside==0 && icoord==1)
2917 snprintf(namecont,100,
"hQyc3_%i",i);
2918 else if(iside==1 && icoord==1)
2919 snprintf(namecont,100,
"hQya3_%i",i);
2921 cont = (AliOADBContainer*)
fOADB->Get(namecont);
2923 printf(
"OADB object %s is not available in the file\n",namecont);
2927 if(!(cont->GetObject(run))){
2928 printf(
"OADB object %s is not available for run %i (used run 137366)\n",namecont,run);
2932 fMeanQv3[i][iside][icoord] = ((TH1F *) cont->GetObject(run))->GetMean();
2933 fWidthQv3[i][iside][icoord] = ((TH1F *) cont->GetObject(run))->GetRMS();
2945 #ifdef ALIANALYSISTASKJETV2_DEBUG_FLAG_1
2946 printf(
"__FILE__ = %s \n __LINE __ %i , __FUNC__ %s \n ", __FILE__, __LINE__, __func__);
2957 Double_t chiC2[] = {0.771423, 1.10236, 1.38116, 1.48077, 1.31964, 1.10236, 0.674622, 0.600403, 0.273865};
2958 Double_t chiA2[] = {0.582214, 0.674622, 0.832214, 0.873962, 0.832214, 0.771423, 0.637146, 0.424255, 0.257385};
2959 Double_t chiC3[] = {0.493347, 0.493347, 0.458557, 0.407166, 0.356628, 0.273865, 0.176208, 6.10352e-05, 6.10352e-05};
2960 Double_t chiA3[] = {0.356628, 0.373474, 0.356628, 0.306702, 0.24115, 0.192322, 0.127869, 6.10352e-05, 6.10352e-05};
2967 Double_t sigmaC2[] = {7.50161e-05,0.000186685,0.000283528,0.000251427,0.000258122,2.26943e-05,0,0,0};
2968 Double_t sigmaA2[] = {0.000633027,0.000598435,0.000520023,0.000602312,0.00141679,0.00351296,0,0,0};
2969 Double_t sigmaC3[] = {4.69125e-05,0.000106922,0.000177552,0.000149093,0.000149436,0,0,0,0};
2970 Double_t sigmaA3[] = {0.000651813,0.000686852,0.000713499,0.000759663,0.00153532,0,0,0,0};
2981 #ifdef ALIANALYSISTASKJETV2_DEBUG_FLAG_1
2982 printf(
"__FILE__ = %s \n __LINE __ %i , __FUNC__ %s \n ", __FILE__, __LINE__, __func__);
2984 Float_t v0Centr(InputEvent()->GetCentrality()->GetCentralityPercentile(
"V0M"));
2985 if(v0Centr < 5)
return 0;
2986 else if(v0Centr < 10)
return 1;
2987 else if(v0Centr < 20)
return 2;
2988 else if(v0Centr < 30)
return 3;
2989 else if(v0Centr < 40)
return 4;
2990 else if(v0Centr < 50)
return 5;
2991 else if(v0Centr < 60)
return 6;
2992 else if(v0Centr < 70)
return 7;
3000 #ifdef ALIANALYSISTASKJETV2_DEBUG_FLAG_1
3001 printf(
"__FILE__ = %s \n __LINE __ %i , __FUNC__ %s \n ", __FILE__, __LINE__, __func__);
3007 for(
Int_t i(0); i < iJets; i++) {
3010 if(jet->
Pt() > pt) {
3012 pt = leadingJet->
Pt();
3019 for(
Int_t i(0); i < iJets; i++) {
3024 if((jet->
Pt()-jet->
Area()*rho) > pt) {
3026 pt = (leadingJet->
Pt()-jet->
Area()*rho);
3035 #ifdef ALIANALYSISTASKJETV2_DEBUG_FLAG_1
3036 printf(
"__FILE__ = %s \n __LINE __ %i , __FUNC__ %s \n ", __FILE__, __LINE__, __func__);
3042 AliVParticle* leadingTrack(0x0);
3043 for(
Int_t i(0); i < iTracks; i++) {
3044 AliVParticle* vp(static_cast<AliVParticle*>(jet->
TrackAt(i,
fTracksCont->GetArray())));
3045 if(vp && (vp->Pt() > maxPt)) {
3050 return leadingTrack;
3055 #ifdef ALIANALYSISTASKJETV2_DEBUG_FLAG_1
3056 printf(
"__FILE__ = %s \n __LINE __ %i , __FUNC__ %s \n ", __FILE__, __LINE__, __func__);
3060 TH1F* temp((TH1F*)hist->Clone(Form(
"EP_weights_cen_%i", c)));
3061 Double_t integral(hist->Integral()/hist->GetNbinsX());
3063 for(
Int_t i(0); i < hist->GetNbinsX(); i++) {
3064 temp->SetBinError(1+i, 0.);
3065 temp->SetBinContent(1+i, integral/hist->GetBinContent(1+i));
3072 #ifdef ALIANALYSISTASKJETV2_DEBUG_FLAG_1
3073 printf(
"__FILE__ = %s \n __LINE __ %i , __FUNC__ %s \n ", __FILE__, __LINE__, __func__);
3087 "kMUL7 kMuonLikePB",
3088 "kMUU7 kMuonUnlikePB",
3092 "kPHI7 kPHI8 kPHOSPb",
3102 "kMuonSingleHighPt8",
3104 "kMuonUnlikeLowPt8",
3105 "kMuonUnlikeLowPt0",
3108 TString notTriggered =
"not fired";
3109 printf(
" > trigger is %u \n ", trigger);
3112 for (
Int_t i(0); i < 29; i++) printf(
"[bit %i]\t [%u] [%s]\n", i, (trigger & ((
UInt_t)1 << i)) ? 1U : 0U, (trigger & ((
UInt_t)1 << i)) ? triggerName[i].
Data() : notTriggered.Data());
3115 printf(
" ====== accepted trigger combinations ======= \n");
3116 UInt_t MB_EMCEJE(AliVEvent::kMB | AliVEvent::kEMCEJE);
3117 UInt_t CEN_EMCEJE(AliVEvent::kCentral | AliVEvent::kEMCEJE);
3118 UInt_t SEM_EMCEJE(AliVEvent::kSemiCentral | AliVEvent::kEMCEJE);
3119 UInt_t ALL_EMCEJE(AliVEvent::kMB | AliVEvent::kCentral | AliVEvent::kSemiCentral | AliVEvent::kEMCEJE);
3120 UInt_t MB_EMCEGA(AliVEvent::kMB | AliVEvent::kEMCEGA);
3121 UInt_t CEN_EMCEGA(AliVEvent::kCentral | AliVEvent::kEMCEGA);
3122 UInt_t SEM_EMCEGA(AliVEvent::kSemiCentral | AliVEvent::kEMCEGA);
3123 UInt_t ALL_EMCEGA(AliVEvent::kMB | AliVEvent::kCentral | AliVEvent::kSemiCentral | AliVEvent::kEMCEGA);
3124 if(trigger == 0) printf(
"(trigger == 0)\n");
3125 if(trigger & AliVEvent::kAny) printf(
"(trigger & AliVEvent::kAny)\n");
3126 if(trigger & AliVEvent::kAnyINT) printf(
"(trigger & AliVEvent::kAnyINT\n");
3127 if(trigger & AliVEvent::kMB) printf(
"(trigger & AliVEvent::kMB)\n");
3128 if(trigger & AliVEvent::kCentral) printf(
"(trigger & AliVEvent::kCentral)\n");
3129 if(trigger & AliVEvent::kSemiCentral) printf(
"(trigger & AliVEvent::kSemiCentral)\n");
3130 if(trigger & AliVEvent::kEMCEJE) printf(
"(trigger & AliVEvent::kEMCEJE)\n");
3131 if(trigger & AliVEvent::kEMCEGA) printf(
"(trigger & AliVEvent::kEMCEGA)\n");
3132 if((trigger & MB_EMCEJE) == MB_EMCEJE) printf(
"(trigger & MB_EMCEJE) == MB_EMCEJE)\n");
3133 if((trigger & CEN_EMCEJE) == CEN_EMCEJE) printf(
"(trigger & CEN_EMCEJE) == CEN_EMCEJE)\n");
3134 if((trigger & SEM_EMCEJE) == SEM_EMCEJE) printf(
"(trigger & SEM_EMCEJE) == SEM_EMCEJE)\n");
3135 if((trigger & ALL_EMCEJE) == ALL_EMCEJE) printf(
"(trigger & ALL_EMCEJE) == ALL_EMCEJE)\n");
3136 if((trigger & MB_EMCEGA) == MB_EMCEGA) printf(
"(trigger & MB_EMCEGA) == MB_EMCEGA)\n");
3137 if((trigger & CEN_EMCEGA) == CEN_EMCEGA) printf(
"(trigger & CEN_EMCEGA) == CEN_EMCEGA)\n");
3138 if((trigger & SEM_EMCEGA) == SEM_EMCEGA) printf(
"(trigger & SEM_EMCEGA) == SEM_EMCEGA)\n");
3139 if((trigger & ALL_EMCEGA) == ALL_EMCEGA) printf(
"(trigger & ALL_EMCEGA) == ALL_EMCEGA)\n");
3147 TF1* dNdphi =
new TF1(
"dNdphi",
"1.+2.*([0]*TMath::Cos(2.*(x-[1]))+[2]*TMath::Cos(3.*(x-[3]))+[4]*TMath::Cos(4.*(x-[5])))", 0, 2*TMath::Pi());
3150 dNdphi->SetParameter(0, v2);
3151 dNdphi->SetParameter(2, v3);
3152 dNdphi->SetParameter(4, v4);
3157 dNdphi->SetParameter(1,
gRandom->Uniform(-TMath::Pi()/2.,TMath::Pi()/2.));
3158 dNdphi->SetParameter(3,
gRandom->Uniform(-TMath::Pi()/3.,TMath::Pi()/3.));
3159 dNdphi->SetParameter(5,
gRandom->Uniform(-TMath::Pi()/4.,TMath::Pi()/4.));
3163 for(
Int_t j(0); j < 100; j++) {
3164 Double_t x = dNdphi->GetRandom(0, TMath::TwoPi());
3165 qx+=TMath::Cos(2.*x);
3166 qy+=TMath::Sin(2.*x);
3168 Double_t ep(TMath::ATan2(qy,qx)/2.);
3171 for(
Int_t j(0); j < 500; j++) {
3172 Double_t x(dNdphi->GetRandom(0, TMath::TwoPi())-ep);
3175 (x > TMath::Pi()/4. && x < 3*TMath::Pi()/4.) ? out++ : in++;
3177 r += TMath::Cos(2.*(ep-dNdphi->GetParameter(1)));
3181 cout <<
" event plane resolution is: " << r << endl;
3184 Double_t ratio = pre*((in-out)/(in+out));
3187 Double_t error2 = (4.*out*out/(TMath::Power(in+out, 4)))*ein*ein+(4.*in*in/(TMath::Power(in+out, 4)))*eout*eout;
3188 error2 = error2*pre*pre;
3189 if(error2 > 0) error2 = TMath::Sqrt(error2);
3191 dNdphi->SetTitle(
"total");
3193 cout <<
"in: " << in <<
"\t out: " << out << endl;
3194 cout <<
"v2: " << ratio <<
"\t error: " << error2 << endl;
3196 TF1* dNdphi2 =
new TF1(
"dNdphi",
"1.+2.*([0]*TMath::Cos(2.*(x-[1])))", 0, 2*TMath::Pi());
3197 TF1* dNdphi3 =
new TF1(
"dNdphi",
"1.+2.*([0]*TMath::Cos(3.*(x-[1])))", 0, 2*TMath::Pi());
3198 TF1* dNdphi4 =
new TF1(
"dNdphi",
"1.+2.*([0]*TMath::Cos(4.*(x-[1])))", 0, 2*TMath::Pi());
3200 dNdphi2->SetParameter(0, dNdphi->GetParameter(0));
3201 dNdphi2->SetParameter(1, dNdphi->GetParameter(1));
3202 dNdphi2->SetLineColor(kBlue);
3203 dNdphi2->SetLineStyle(7);
3204 dNdphi2->SetTitle(
"v_{2}");
3205 dNdphi2->DrawCopy(
"same");
3207 dNdphi3->SetParameter(0, dNdphi->GetParameter(2));
3208 dNdphi3->SetParameter(1, dNdphi->GetParameter(3));
3209 dNdphi3->SetLineColor(kGreen);
3210 dNdphi3->SetLineStyle(7);
3211 dNdphi3->SetTitle(
"v_{3}");
3212 dNdphi3->DrawCopy(
"same");
3214 dNdphi4->SetParameter(0, dNdphi->GetParameter(4));
3215 dNdphi4->SetParameter(1, dNdphi->GetParameter(5));
3216 dNdphi4->SetLineColor(kMagenta);
3217 dNdphi4->SetLineStyle(7);
3218 dNdphi4->SetTitle(
"v_{4}");
3219 dNdphi4->DrawCopy(
"same");
TProfile * fProfV3
resolution parameters for v2
Bool_t fRebinSwapHistoOnTheFly
void SetModulationFit(TF1 *fit)
Bool_t fUsePtWeightErrorPropagation
TH2F * fHistPsiVZEROVV0M
psi 2 from vzero c
TH2F * fHistJetPtConstituents[10]
jet pt versus eta (temp control)
TH2F * fHistQyV0c
qx v0a before cuts
TH2F * fHistQxV0a
qx v0a before cuts
virtual AliVParticle * GetNextAcceptParticle()
TH2F * fHistQyV0a
qx v0a before cuts
fitModulationType fFitModulationType
accepted tracks for QCn
Double_t fSemiGoodJetMaxPhi
TH2F * BookTH2F(const char *name, const char *x, const char *y, Int_t binsx, Double_t minx, Double_t maxx, Int_t binsy, Double_t miny, Double_t maxy, Int_t c=-1, Bool_t append=kTRUE)
TProfile * fProfV2Cumulant
extracted v2
void FillWeightedTriggerQA(Double_t dPhi, Double_t pt, UInt_t trigger)
TH1F * BookTH1F(const char *name, const char *x, Int_t bins, Double_t min, Double_t max, Int_t c=-1, Bool_t append=kTRUE)
Float_t fEventPlaneWeight
TH3F * fHistPsiVZEROALeadingJet[10]
correlation tpc EP, LJ pt
TH2F * fHistRCPhiEta[10]
rho vs eta before cuts
TH1F * fHistJetPtBC[10]
pt of found jets (background subtracted)
AliJetContainer * GetJetContainer(Int_t i=0) const
TH2F * fHistTriggerQAIn[10]
eta phi emcal clusters, pt weighted
void FillWeightedRhoHistograms()
AliEmcalJet * GetLeadingJet(AliLocalRhoParameter *localRho=0x0)
UInt_t fOffTrigger
offline trigger for event selection
TH2F * fHistRhoVsRCPtExLJ[10]
random cone eta and phi, excl leading jet
TH1F * fHistUndeterminedRunQA
status of rho as function of centrality
TH2F * fHistRhoAVsCent
rho * A vs multiplicity for all jets
TH2F * fHistJetPtEta[10]
jet pt versus area before cuts
Double_t fMinCent
min centrality for event selection
TProfile * fProfIntegralCorrelations[10]
correlate polar or local integral
TH2F * fHistJetPsi2PtRho0[10]
ratio of leading track v2 to jet v2
TH3F * fHistEPCorrelations[10]
psi 2 from tpc
void FillWeightedTrackHistograms() const
Float_t fExcludeLeadingJetsFromFit
Double_t GetLocalVal(Double_t phi, Double_t r, Double_t n) const
void CalculateEventPlaneCombinedVZERO(Double_t *comb) const
TH2F * fHistQyV0aBC
qx v0a before cuts
TH2F * fHistMultCorAfterCuts
accepted verte
Float_t fMeanQ[9][2][2]
event plane dependence of jet pt vs rho_0
void CalculateEventPlaneResolution(Double_t vzero[2][2], Double_t *vzeroComb, Double_t *tpc)
Double_t GetJetEtaMax() const
TH1F * fHistKolmogorovTest
correlation p value and reduced chi2
TH2F * fHistQxV0cBC
qx v0a before cuts
void FillHistogramsAfterSubtraction(Double_t psi2, Double_t vzero[2][2], Double_t *vzeroComb, Double_t *tpc)
TH2F * fHistPvalueCDFROOTCent
pdf value of chisquare p
TProfile * fHistCentralityPercIn
accepted centrality
TH1F * fHistRCPt[10]
rho * A vs rcpt
TH2F * fHistDeltaPtDeltaPhi2Rho0[10]
dpt vs dphi (psi2 - phi)
TH2F * fHistPsiVZEROAV0M
trigger qa out of plane
Double_t GetJetRadius() const
TF1 * fFitModulation
centrality bin
static void DoSimpleSimulation(Int_t nEvents=100000, Float_t v2=0.02, Float_t v3=0.04, Float_t v4=0.03)
TH3F * fHistJetLJPsi2PtRatio[10]
event plane dependence of jet pt and leading track pt
void QCnQnk(Int_t n, Int_t k, Double_t &reQ, Double_t &imQ)
Float_t fSoftTrackMinPt
temp cache for rho pointer
TH2F * fHistRunnumbersEta
run numbers averaged phi
static Bool_t IsInPlane(Double_t dPhi)
TH1F * fHistClusterPt[10]
pico tracks wo spd hit wo refit, constrained
TH2F * fHistChi2Cent
p value vs centrality
Float_t fWidthQv3[9][2][2]
recentering
TH2F * fHistPChi2Root
reduced chi2 from ROOT, centrality correlation
virtual void Exec(Option_t *)
TH1F * fHistRhoPackage[10]
geometric correlation of leading jet w/wo bkg subtraction
UShort_t GetNumberOfConstituents() const
Container for particles within the EMCAL framework.
TH3F * fHistPsiVZEROCLeadingJet[10]
correlation vzeroa EP, LJ pt
TH2F * fHistEPCorrAvChi[10]
ep correlations
TH2F * fHistChi2ROOTCent
p value versus centrlaity from root
TArrayI * fExpectedSemiGoodRuns
detectorType fDetectorType
UShort_t GetNumberOfTracks() const
void FillWeightedDeltaPtHistograms(Double_t psi2) const
static Double_t PhaseShift(Double_t x)
void FillWeightedClusterHistograms() const
TH2F * fHistPicoCat3[10]
pico tracks wo spd hit w refit, constrained
AliJetContainer * fJetsCont
cluster container
Float_t fVZEROCpol
calibration info per disc
fitGoodnessTest fFitGoodnessTest
void CalculateQvectorCombinedVZERO(Double_t Q2[2], Double_t Q3[2]) const
void CalculateEventPlaneTPC(Double_t *tpc)
void FillWeightedJetHistograms(Double_t psi2)
AliParticleContainer * GetParticleContainer(Int_t i=0) const
void FillWeightedQAHistograms(AliVTrack *vtrack) const
TString fLocalRhoName
name for local rho
TProfile * fHistCentralityPercOut
centrality versus perc in
TList * fOutputListBad
output list for local analysis
static Double_t ChiSquare(TH1 &histo, TF1 *func)
TH2F * fHistPsiVZEROTRK
psi 2 from vzero c
TH1F * fEventPlaneWeights[10]
TH2F * fHistIntegralCorrelations[10]
ep corr
Bool_t fAcceptanceWeights
TH2F * fHistPKolmogorov
KolmogorovTest value, centrality correlation.
TH2F * fHistRhoAVsMult
rho veruss centrality
collisionType fCollisionType
TH2F * fHistRhoVsRCPt[10]
random cone eta and phi
TH1 * fVZEROgainEqualization
recentering
AliVParticle * GetLeadingTrack(AliEmcalJet *jet)
TH3F * fHistPsiTPCLeadingJet[10]
same qa lot
TH2F * fHistTriggerQAOut[10]
trigger qa in plane
Bool_t fAttachToEvent
is the analysis initialized?
Double_t CalculateQC2(Int_t harm)
static Double_t CalculateEventPlaneChi(Double_t res)
TH2F * fHistQyV0cBC
qx v0a before cuts
TH2F * fHistPsiTPCTRK
psi 2 from combined vzero
Double_t fMaxVz
max vertex for event selection
void FillQAHistograms(AliVTrack *vtrack) const
Float_t fMinDisanceRCtoLJ
undetermined run QA
TH1F * fHistAnalysisSummary
output list for local analysis
void QCnDiffentialFlowVectors(TClonesArray *pois, TArrayD *ptBins, Bool_t vpart, Double_t *repn, Double_t *impn, Double_t *mp, Double_t *reqn, Double_t *imqn, Double_t *mq, Int_t n)
TH2F * fHistLeadingJetBackground[10]
correlation of event planes
TProfile * fProfV2Resolution[10]
v2 cumulant
AliRhoParameter * fRho
! event rho
Double_t fSemiGoodTrackMaxPhi
Bool_t CorrectRho(Double_t psi2, Double_t psi3)
TH2F * fHistMultVsCellBC
qx v0a before cuts
AliEmcalJet * fLeadingJet
jets
static void NumericalOverlap(Double_t x1, Double_t x2, Double_t psi2, Double_t &percIn, Double_t &percOut, Double_t &percLost)
TH2F * fHistQxV0c
qx v0a before cuts
void SetTrackPhiLimits(Double_t min, Double_t max, Int_t c=0)
Bool_t PassesCuts(AliVParticle *track) const
virtual AliVParticle * GetParticle(Int_t i=-1) const
TH1F * fHistJetPtRaw[10]
dpt vs dphi, excl leading jet, rho_0
TH2F * fHistPvalueCDFCent
cdf value of chisquare p
AliRhoParameter * fCachedRho
Double_t GetLocalValInEtaPhi(Double_t phi, Double_t r, Double_t n, Int_t gran=20) const
void ReadVZEROCalibration2010h()
void CalculateQvectorVZERO(Double_t Qa2[2], Double_t Qc2[2], Double_t Qa3[2], Double_t Qc3[2]) const
Int_t fNAcceptedTracksQCn
number of accepted tracks
BeamType fForceBeamType
forced beam type
TH1F * fHistPvalueCDFROOT
calibration info per runnumber
AliClusterContainer * GetClusterContainer(Int_t i=0) const
TH2F * fHistPsiVZEROCV0M
psi 2 from vzero a
TH2F * fHistPicoCat2[10]
pico tracks spd hit and refit
TH2F * fHistJetEtaRho[10]
jet pt versus number of constituents
Int_t fInCentralitySelection
mapped runnumer (for QA)
Float_t fReduceBinsXByFactor
TH2F * fHistRhoVsCent
rho versus multiplicity
Int_t GetNClusters() const
Double_t fMinVz
min vertex for event selection
TArrayD * fCentralityClasses
TH2F * fHistRCPhiEtaExLJ[10]
dpt vs dphi, rho_0
static Double_t ChiSquareCDF(Int_t ndf, Double_t x)
TH1F * fHistPicoTrackPt[10]
resolution parameters for v3
Double_t fCent
!event centrality
AliLocalRhoParameter * fLocalRho
! local event rho
TH1F * fHistJetPt[10]
jet pt - no background subtraction
TH2F * fHistKolmogorovTestCent
KolmogorovTest value.
Int_t fRunNumberCaliInfo
current runnumber (for QA and jet, track selection)
Int_t fNAcceptedTracks
leading jet after background subtraction
Byte_t GetTrackType() const
TH1F * fHistSwap
analysis summary
AliClusterContainer * fClusterCont
tracks
TH2F * fHistJetPtAreaBC[10]
jet pt versus area
TH2F * fHistDeltaPtDeltaPhi2ExLJ[10]
rcpt, excl leading jet
static TH1F * GetEventPlaneWeights(TH1F *hist, Int_t c)
TH1F * fHistPicoTrackMult[10]
pt of all charged tracks
TH1F * fHistVertexz
centrality versus perc lost
AliEmcalJet * fLeadingJetAfterSub
leading jet
AliVCluster * GetCluster(Int_t i) const
TClonesArray * fJets
! jets
TH2F * fHistEPCorrAvSigma[10]
ep corr
Bool_t Data(TH1F *h, Double_t *rangefit, Bool_t writefit, Double_t &sgn, Double_t &errsgn, Double_t &bkg, Double_t &errbkg, Double_t &sgnf, Double_t &errsgnf, Double_t &sigmafit, Int_t &status)
TH2F * fHistJetPtArea[10]
eta and phi correlation before cuts
TH1F * fHistRho[10]
rho as estimated by emcal jet package
TH2F * fHistDeltaPtDeltaPhi2[10]
rcpt
TH2F * fHistRhoEtaBC[10]
rho * A vs centrality for all jets
Bool_t fNoEventWeightsForQC
TH2F * fHistPsiTPCV0M
psi 2 from combined vzero
void SetJetPhiLimits(Float_t min, Float_t max, Int_t c=0)
TH2F * fHistJetPsi2Pt[10]
jet eta versus rho
Float_t fPercentageOfFits
TH1F * CorrectForResolutionDiff(TH1F *v, detectorType detector, TArrayD *cen, Int_t c, Int_t h=2)
Float_t fMeanQv3[9][2][2]
recentering
TH1F * fHistEPBC
fHistMultVsCellBC
void CalculateEventPlaneVZERO(Double_t vzero[2][2]) const
TH2F * fHistClusterEtaPhi[10]
pt emcal clusters
Double_t QCnS(Int_t i, Int_t j)
TH2F * fHistJetEtaPhiBC[10]
eta and phi correlation
virtual Bool_t IsEventSelected()
void SetUseControlFit(Bool_t c)
analysisType fAnalysisType
TH2F * fHistPChi2
reduced chi2, centrlaity correlation
Double_t CalculateQC4(Int_t harm)
Float_t fWidthQ[9][2][2]
recentering
Float_t GetJetRadius() const
TH2F * fHistRunnumbersPhi
QA profile of centralty vs multiplicity.
TH2F * fHistPicoCat1[10]
multiplicity of accepted pico tracks
TClonesArray * fTracks
!tracks
TH1F * fHistPvalueCDF
correlation p value and reduced chi2
ClassImp(AliAnalysisTaskJetV2) AliAnalysisTaskJetV2
Short_t TrackAt(Int_t idx) const
TH2F * fHistMultvsCentr
QA profile global and tpc multiplicity after outlier cut.
Double_t GetParticlePhiMax() const
Double_t KolmogorovTest() const
Double_t fVertex[3]
!event vertex
static Int_t OverlapsWithPlane(Double_t x1, Double_t x2, Double_t a, Double_t b, Double_t c, Double_t d, Double_t e, Double_t phi)
EPweightType fWeightForVZERO
Bool_t QCnRecovery(Double_t psi2, Double_t psi3)
Float_t fVZEROApol
equalization histo
Bool_t fCreateHisto
whether or not create histograms
virtual void UserCreateOutputObjects()
void ReadVZEROCalibration2011h()
void SetMakeGeneralHistograms(Bool_t g)
AliParticleContainer * fTracksCont
the actual weight of an event
TString fFitModulationOptions
Double_t GetParticlePhiMin() const
TH3F * fHistPsiVZEROCombLeadingJet[10]
correlation vzeroc EP, LJ pt
Base task in the EMCAL jet framework.
TH2F * fHistRhoStatusCent
p value vs kolmogorov value
TH2F * fHistPsiVZEROATRK
psi 2 from tpc
Represent a jet reconstructed using the EMCal jet framework.
TH2F * fHistPsiVZEROCTRK
psi 2 from vzero a
Bool_t PassesSimpleCuts(AliEmcalJet *jet)
Int_t GetVZEROCentralityBin() const
Int_t GetRunNumber(TString)
TH1F * GetResolutionFromOutputFile(detectorType detector, Int_t h=2, TArrayD *c=0x0)
TH1I * fHistRunnumbersCaliInfo
run numbers averaged eta
TH2F * fHistEPCorrChiSigma[10]
ep corr
TProfile * fProfV2
swap histogram
TH2F * fHistClusterEtaPhiWeighted[10]
eta phi emcal clusters
TProfile * fProfV3Cumulant
extracted v3
virtual void Terminate(Option_t *option)
virtual ~AliAnalysisTaskJetV2()
void UserCreateOutputObjects()
void FillWeightedEventPlaneHistograms(Double_t vzero[2][2], Double_t *vzeroComb, Double_t *tpc) const
Double_t fSemiGoodTrackMinPhi
TList * fOutputListGood
output list
TProfile * fHistCentralityPercLost
centrality versus perc out
static void PrintTriggerSummary(UInt_t trigger)
void FillAnalysisSummaryHistogram() const
TH2F * fHistDeltaPtDeltaPhi2ExLJRho0[10]
dpt vs dphi, excl leading jet
TH3F * fHistJetLJPsi2Pt[10]
event plane dependence of jet pt
Double_t fMaxCent
max centrality for event selection
TProfile * fProfV3Resolution[10]
v3 cumulant
void CalculateRandomCone(Float_t &pt, Float_t &eta, Float_t &phi, AliParticleContainer *tracksCont, AliClusterContainer *clusterCont=0x0, AliEmcalJet *jet=0x0) const
Container structure for EMCAL clusters.
Int_t fMappedRunNumber
runnumber of the cached calibration info
AliVCluster * GetNextAcceptCluster()
TH1F * fHistRCPtExLJ[10]
rho * A vs rcpt, excl leading jet
Bool_t InitializeAnalysis()
TH2F * fHistJetEtaPhi[10]
jet pt before area cut
TH3F * fHistPsi2Correlation[10]
correlation vzerocomb EP, LJ pt
TH1F * CorrectForResolutionInt(TH1F *v, detectorType detector, TArrayD *cen, Int_t h=2)
Double_t fSemiGoodJetMinPhi
TH2F * fHistRhoVsMult
background
TH3F * BookTH3F(const char *name, const char *x, const char *y, const char *z, Int_t binsx, Double_t minx, Double_t maxx, Int_t binsy, Double_t miny, Double_t maxy, Int_t binsz, Double_t minz, Double_t maxz, Int_t c=-1, Bool_t append=kTRUE)
TH1F * GetDifferentialQC(TProfile *refCumulants, TProfile *diffCumlants, TArrayD *ptBins, Int_t h)
TArrayD * fChi2A
calibration info per disc
Float_t fExcludeJetsWithTrackPt
TH2F * fHistMultVsCell
fHistEP
Float_t fReduceBinsYByFactor