11 #include <TObjArray.h> 12 #include <TObjString.h> 27 #include "AliQnCorrectionsProfileCorrelationComponents.h" 28 #include "AliQnCorrectionsProfile3DCorrelations.h" 29 #include "AliQnCorrectionsEventClassVariablesSet.h" 30 #include "AliQnCorrectionsCutWithin.h" 31 #include "AliQnCorrectionsDataVector.h" 32 #include "AliQnCorrectionsQnVector.h" 33 #include "AliQnCorrectionsDetector.h" 34 #include "AliQnCorrectionsDetectorConfigurationTracks.h" 35 #include "AliQnCorrectionsDetectorConfigurationChannels.h" 36 #include "AliQnCorrectionsManager.h" 37 #include "AliQnCorrectionsInputGainEqualization.h" 38 #include "AliQnCorrectionsQnVectorRecentering.h" 39 #include "AliQnCorrectionsQnVectorAlignment.h" 40 #include "AliQnCorrectionsQnVectorTwistAndRescale.h" 41 #include "AliAnalysisTaskFlowVectorCorrections.h" 44 namespace EMCALJetTasks {
80 0.971679, 0.0767571, 1.13355, -0.0274484, 0.856652, 0.00536795, 3.90795e-05, 1.06889, 0.011007,
81 0.447046, -0.146626, 0.919777, 0.192601, -0.268515, 1.00243, 0.00620849, 0.709477
85 0.97929, 0.0776039, 1.12213, -0.0300645, 0.844722, 0.0134788, -0.0012333, 1.07955, 0.0116835,
86 0.456608, -0.132743, 0.930964, 0.174175, -0.267154, 0.993118, 0.00574892, 0.765256
90 0.997696, 0.0816769, 1.14341, -0.0353734, 0.752151, 0.0744259, -0.0102926, 1.01561, 0.00713274,
91 0.57203, -0.0640248, 0.947747, 0.102007, -0.194698, 0.999164, 0.00568476, 0.7237
95 0.97041, 0.0813559, 1.12151, -0.0368797, 0.709327, 0.0701501, -0.00784043, 1.06276, 0.00676173,
96 0.53607, -0.0703117, 0.982534, 0.0947881, -0.18073, 1.03229, 0.00580109, 0.737801
106 1.0124, 0.7568, 0.0277, -0.0034,
107 0.1506 * 0.001, -0.0023 * 0.001 };
109 0.0427, 0.8579, 0.0088, 0.4697, 0.0772,
110 -0.0352, 0.0645, 0.7716 };
113 0.8213, 0.0527, 0.0867, 0.1970, 1.1518, 0.7469, 0.0300, -0.0038, 0.1704 * 0.001, -0.0026 * 0.001
116 0.0400, 0.8729, 0.0122, 0.4537, 0.0965,
117 -0.0328, 0.0623, 0.7658 };
120 0.8381, 0.0648, 0.1052, 0.1478, 1.0320, 0.7628, 0.0263, -0.0032, 0.1443 * 0.001, -0.0023 * 0.001
123 0.0456, 0.8521, 0.0073, 0.4764, 0.0668,
124 -0.0363, 0.0668, 0.7748 };
127 0.8437, 0.0668, 0.1083, 0.2000, 0.9741, 0.7677, 0.0255, -0.0030, 0.1260 * 0.001, -0.0019 * 0.001
130 0.0440, 0.8421, 0.0066, 0.5061, 0.0580,
131 -0.0379, 0.0651, 0.7786 };
147 double maxTrackPt = 0;
148 double maxClusterPt = 0;
150 if (leadingHadronType ==
kCharged || leadingHadronType ==
kBoth) {
153 maxTrackPt = particle->
Pt();
156 if (leadingHadronType ==
kNeutral || leadingHadronType ==
kBoth) {
166 maxClusterPt = cluster->
Pt();
172 return (maxTrackPt > maxClusterPt) ? maxTrackPt : maxClusterPt;
186 double dphi = (epAngle - jetAngle);
189 if( dphi<-1*TMath::Pi() ) {
190 dphi = dphi + 1*TMath::Pi();
193 if( (dphi>0) && (dphi<1*TMath::Pi()/2) ) {
195 }
else if ( (dphi>1*TMath::Pi()/2) && (dphi<1*TMath::Pi()) ) {
196 dphi = 1*TMath::Pi() - dphi;
197 }
else if ( (dphi<0) && (dphi>-1*TMath::Pi()/2) ) {
198 dphi = std::abs(dphi);
199 }
else if ( (dphi<-1*TMath::Pi()/2) && (dphi>-1*TMath::Pi()) ) {
200 dphi = dphi + 1*TMath::Pi();
204 if ( dphi < 0 || dphi > TMath::Pi()/2 ) {
205 AliWarningGeneralStream(
"AliAnalysisTaskEmcalJetHUtils") <<
": dPHI not in range [0, 0.5*Pi]!\n";
224 bool useEventCutsAutomaticTriggerSelection =
false;
225 bool res = yamlConfig.
GetProperty(std::vector<std::string>({baseName,
"useAutomaticTriggerSelection"}), useEventCutsAutomaticTriggerSelection,
false);
226 if (res && useEventCutsAutomaticTriggerSelection) {
228 AliInfoGeneralStream(taskName.c_str()) <<
"Using the automatic trigger selection from AliEventCuts.\n";
232 AliInfoGeneralStream(taskName.c_str()) <<
"Using the trigger selection specified with SelectCollisionCandidates() or via YAML. Value: " << offlineTriggerMask <<
"\n";
233 eventCuts.OverrideAutomaticTriggerSelection(offlineTriggerMask,
true);
237 bool manualMode =
false;
238 yamlConfig.
GetProperty({baseName,
"manualMode"}, manualMode,
false);
240 AliInfoGeneralStream(taskName.c_str()) <<
"Configuring manual event cuts.\n";
241 eventCuts.SetManualMode();
244 typedef void (AliEventCuts::*MFP)();
245 std::map<std::string, MFP> eventCutsPeriods = { std::make_pair(
"LHC11h", &AliEventCuts::SetupRun1PbPb),
246 std::make_pair(
"LHC15o", &AliEventCuts::SetupLHC15o),
247 std::make_pair(
"LHC18qr", &AliEventCuts::SetupPbPb2018) };
248 std::string manualCutsPeriod =
"";
249 yamlConfig.
GetProperty({ baseName,
"cutsPeriod" }, manualCutsPeriod,
true);
250 auto eventCutsPeriod = eventCutsPeriods.find(manualCutsPeriod);
251 if (eventCutsPeriod != eventCutsPeriods.end()) {
253 (eventCuts.*eventCutsPeriod->second)();
254 AliDebugGeneralStream(taskName.c_str(), 3) <<
"Configuring event cuts with period \"" << manualCutsPeriod <<
"\"\n";
256 AliFatalGeneralF(taskName.c_str(),
"Period %s was not found in the event cuts period map.", manualCutsPeriod.c_str());
261 std::pair<double, double> centRange;
262 res = yamlConfig.
GetProperty({ baseName,
"centralityRange" }, centRange,
false);
264 AliDebugGeneralStream(taskName.c_str(), 3) <<
"Setting centrality range of (" << centRange.first <<
", " << centRange.second <<
").\n";
265 eventCuts.SetCentralityRange(centRange.first, centRange.second);
270 yamlConfig.
GetProperty({ baseName,
"MC" }, mc,
false);
274 if (manualCutsPeriod ==
"LHC15o") {
275 bool enablePileupCuts =
true;
276 yamlConfig.
GetProperty({ baseName,
"enablePileupCuts" }, enablePileupCuts,
false);
277 AliDebugGeneralStream(taskName.c_str(), 3) <<
"Setting 15o pileup cuts to " << std::boolalpha << enablePileupCuts <<
".\n";
278 eventCuts.fUseVariablesCorrelationCuts = enablePileupCuts;
295 partCont = trackCont;
297 else if (collectionName !=
"") {
314 std::string containerName,
317 std::string taskName)
320 cont->
SetName(containerName.c_str());
323 double tempDouble = -1.0;
324 bool tempBool =
false;
325 std::vector<double> tempRange;
327 bool result = yamlConfig.
GetProperty(baseName,
"minPt", tempDouble,
false);
329 AliDebugGeneralStream(taskName.c_str(), 2) << cont->
GetName() <<
": Setting minPt of " << tempDouble <<
"\n";
333 result = yamlConfig.
GetProperty(baseName,
"minE", tempDouble,
false);
335 AliDebugGeneralStream(taskName.c_str(), 2) << cont->
GetName() <<
": Setting minE of " << tempDouble <<
"\n";
339 result = yamlConfig.
GetProperty(baseName,
"etaLimits", tempRange,
false);
341 if (tempRange.size() != 2) {
342 AliErrorGeneralStream(taskName.c_str()) <<
"Passed eta range with " << tempRange.size()
343 <<
" entries, but 2 values are required. Ignoring values.\n";
345 AliDebugGeneralStream(taskName.c_str(), 2)
346 <<
"Setting eta range to [" << tempRange.at(0) <<
", " << tempRange.at(1) <<
"]\n";
351 result = yamlConfig.
GetProperty(baseName,
"phiLimits", tempRange,
false);
353 if (tempRange.size() != 2) {
354 AliErrorGeneralStream(taskName.c_str()) <<
"Passed phi range with " << tempRange.size()
355 <<
" entries, but 2 values are required. Ignoring values.\n";
357 AliDebugGeneralStream(taskName.c_str(), 2)
358 <<
"Setting phi range to [" << tempRange.at(0) <<
", " << tempRange.at(1) <<
"]\n";
363 result = yamlConfig.
GetProperty(baseName,
"embedding", tempBool,
false);
365 AliDebugGeneralStream(taskName.c_str(), 2)
366 << cont->
GetName() <<
": Setting embedding to " << (tempBool ?
"enabled" :
"disabled") <<
"\n";
384 std::string tempString =
"";
388 std::vector<UInt_t> filterBitsVector;
389 bool result = yamlConfig.
GetProperty(baseNameWithContainer,
"aodFilterBits", filterBitsVector,
false);
392 for (
int filterBit : filterBitsVector) {
393 filterBits += filterBit;
395 AliDebugGeneralStream(taskName.c_str(), 2)
396 << trackCont->
GetName() <<
": Setting filterBits of " << filterBits <<
"\n";
401 result = yamlConfig.
GetProperty(baseNameWithContainer,
"trackFilterType", tempString,
false);
406 AliDebugGeneralStream(taskName.c_str(), 2)
407 << trackCont->
GetName() <<
": Setting trackFilterType of " << trackFilterType <<
" (" << tempString <<
")\n";
412 result = yamlConfig.
GetProperty(baseNameWithContainer,
"trackCutsPeriod", tempString,
false);
415 AliDebugGeneralStream(taskName.c_str(), 2)
416 << trackCont->
GetName() <<
": Setting track cuts period to " << tempString <<
"\n";
434 double tempDouble = 0;
435 std::string tempString =
"";
436 bool tempBool =
false;
439 bool result = yamlConfig.
GetProperty(baseNameWithContainer,
"defaultClusterEnergy", tempString,
false);
442 AliVCluster::VCluUserDefEnergy_t clusterEnergyType =
444 AliDebugGeneralStream(taskName.c_str(), 2)
445 << clusterCont->
GetName() <<
": Setting cluster energy type to " << clusterEnergyType <<
"\n";
450 result = yamlConfig.
GetProperty(baseNameWithContainer,
"clusNonLinCorrEnergyCut", tempDouble,
false);
452 AliDebugGeneralStream(taskName.c_str(), 2)
453 << clusterCont->
GetName() <<
": Setting clusNonLinCorrEnergyCut of " << tempDouble <<
"\n";
458 result = yamlConfig.
GetProperty(baseNameWithContainer,
"clusHadCorrEnergyCut", tempDouble,
false);
460 AliDebugGeneralStream(taskName.c_str(), 2)
461 << clusterCont->
GetName() <<
": Setting clusHadCorrEnergyCut of " << tempDouble <<
"\n";
466 result = yamlConfig.
GetProperty(baseNameWithContainer,
"includePHOS", tempBool,
false);
468 AliDebugGeneralStream(taskName.c_str(), 2) << clusterCont->
GetName() <<
": Setting Include PHOS to " 469 << (tempBool ?
"enabled" :
"disabled") <<
"\n";
483 for (
auto selection : selections) {
485 AliDebugGeneralStream(
"AliAnalysisTaskEmcalJetHUtils", 3) <<
"Adding jet acceptance: " << selection <<
"\n";
487 jetAcceptance |= sel->second;
489 AliFatalGeneralF(
"AliAnalysisTaskEmcalJetHUtils",
"Could not find jet acceptance with key \"%s\"",
493 return jetAcceptance;
513 const std::string& configFilename)
517 Error(
"AddTaskFlowQnVectorCorrections",
"No analysis manager found.");
522 AliQnCorrectionsManager* QnManager =
new AliQnCorrectionsManager();
523 AliAnalysisTaskFlowVectorCorrections* taskQnCorrections =
524 new AliAnalysisTaskFlowVectorCorrections(
"FlowQnVectorCorrections");
529 std::string baseName =
"";
534 bool useMultiplicityPercentileForCentralityDetermination =
true;
535 yamlConfig.
GetProperty(
"useMultiplicityPercentileForCentralityDetermination",
536 useMultiplicityPercentileForCentralityDetermination,
true);
537 AliQnCorrectionsVarManagerTask::Variables varForEventMultiplicity = AliQnCorrectionsVarManagerTask::kCentVZERO;
538 if (useMultiplicityPercentileForCentralityDetermination) {
539 varForEventMultiplicity = AliQnCorrectionsVarManagerTask::kVZEROMultPercentile;
542 std::pair<double, double> zVertexRange;
543 yamlConfig.
GetProperty(
"zVertex", zVertexRange,
true);
544 std::pair<double, double> centRange;
545 yamlConfig.
GetProperty(
"centrality", centRange,
true);
550 bool useOnlyCentralityCalibratedEvents =
false;
551 yamlConfig.
GetProperty(
"useOnlyCentralityCalibratedEvents", useOnlyCentralityCalibratedEvents,
true);
553 std::vector<std::string> listOfRuns;
554 yamlConfig.
GetProperty(
"runsToUseDuringCalibration", listOfRuns,
false);
556 std::vector<std::string> physicsSelection;
557 bool res = yamlConfig.
GetProperty(
"physicsSelection", physicsSelection,
false);
559 taskQnCorrections->SelectCollisionCandidates(
563 taskQnCorrections->SelectCollisionCandidates(AliVEvent::kAnyINT);
567 baseName =
"correctionHistograms";
568 std::string correctionsSource =
"";
569 yamlConfig.
GetProperty({ baseName,
"source" }, correctionsSource,
true);
570 std::string correctionsFilePath =
"";
571 yamlConfig.
GetProperty({ baseName,
"path" }, correctionsFilePath,
true);
572 std::string correctionsFileName =
"";
573 yamlConfig.
GetProperty({ baseName,
"filename" }, correctionsFileName,
true);
576 baseName =
"detectors";
578 yamlConfig.
GetProperty({ baseName,
"TPC" }, useTPC,
false);
580 yamlConfig.
GetProperty({ baseName,
"SPD" }, useSPD,
false);
581 bool useVZERO =
false;
582 yamlConfig.
GetProperty({ baseName,
"VZERO" }, useVZERO,
false);
583 bool useTZERO =
false;
584 yamlConfig.
GetProperty({ baseName,
"TZERO" }, useTZERO,
false);
586 yamlConfig.
GetProperty({ baseName,
"FMD" }, useFMD,
false);
587 bool useRawFMD =
false;
588 yamlConfig.
GetProperty({ baseName,
"RawFMD" }, useRawFMD,
false);
590 yamlConfig.
GetProperty({ baseName,
"ZDC" }, useZDC,
false);
593 baseName =
"outputs";
594 bool fillQVectorTree =
false;
595 yamlConfig.
GetProperty({ baseName,
"QVectorTree" }, fillQVectorTree,
false);
596 bool fillQAHistograms =
true;
597 yamlConfig.
GetProperty({ baseName,
"QAHistograms" }, fillQAHistograms,
false);
598 bool fillNveQAHistograms =
true;
599 yamlConfig.
GetProperty({ baseName,
"NveQAHistograms" }, fillNveQAHistograms,
false);
600 bool fillOutputHistograms =
true;
601 yamlConfig.
GetProperty({ baseName,
"OutputHistograms" }, fillOutputHistograms,
false);
602 bool fillExchangeContainerWithQvectors =
true;
603 yamlConfig.
GetProperty({ baseName,
"ExchangeContainerWithQvectors" }, fillExchangeContainerWithQvectors,
false);
604 bool fillEventQA =
true;
605 yamlConfig.
GetProperty({ baseName,
"EventQA" }, fillEventQA,
false);
610 std::stringstream tempSS;
611 tempSS << std::boolalpha;
612 tempSS <<
"Flow Qn vector corrections configuration:\n";
613 tempSS <<
"Use multiplicity percentile for centrality determination: " 614 << useMultiplicityPercentileForCentralityDetermination <<
"\n";
615 tempSS <<
"Z vertex: [" << zVertexRange.first <<
", " << zVertexRange.second <<
"]\n";
616 tempSS <<
"Centrality: [" << centRange.first <<
", " << centRange.second <<
"]\n";
617 tempSS <<
"Use only centrality calibrated events: " << useOnlyCentralityCalibratedEvents <<
"\n";
618 tempSS <<
"Runs to use during calibration:\n";
619 bool atLeastOneRun =
false;
620 for (
const auto& run : listOfRuns) {
621 atLeastOneRun =
true;
622 tempSS <<
"\t" << run <<
"\n";
624 if (!atLeastOneRun) {
625 tempSS <<
"\tNone\n";
627 tempSS <<
"Physics selection: " << taskQnCorrections->GetCollisionCandidates() <<
"\n";
629 tempSS <<
"Correction histograms:\n";
630 tempSS <<
"\tSource: " << correctionsSource <<
"\n";
631 tempSS <<
"\tPath: " << correctionsFilePath <<
"\n";
632 tempSS <<
"\tName: " << correctionsFileName <<
"\n";
634 tempSS <<
"Detectors:\n";
635 tempSS <<
"\tTPC: " << useTPC <<
"\n";
636 tempSS <<
"\tSPD: " << useSPD <<
"\n";
637 tempSS <<
"\tVZERO: " << useVZERO <<
"\n";
638 tempSS <<
"\tTZERO: " << useTZERO <<
"\n";
639 tempSS <<
"\tFMD: " << useFMD <<
"\n";
640 tempSS <<
"\tRaw FMD: " << useRawFMD <<
"\n";
641 tempSS <<
"\tZDC: " << useZDC <<
"\n";
643 tempSS <<
"Outputs:\n";
644 tempSS <<
"\tQ vector tree: " << fillQVectorTree <<
"\n";
645 tempSS <<
"\tQA histograms: " << fillQAHistograms <<
"\n";
646 tempSS <<
"\tNve QA histograms: " << fillNveQAHistograms <<
"\n";
647 tempSS <<
"\tOutput histograms: " << fillOutputHistograms <<
"\n";
648 tempSS <<
"\tExchange containers with Q vectors: " << fillExchangeContainerWithQvectors <<
"\n";
649 tempSS <<
"\tEvent QA: " << fillEventQA <<
"\n";
653 std::cout << tempSS.str();
659 listOfRunsTOBJ->SetOwner(kTRUE);
660 for (
const auto& run : listOfRuns) {
661 listOfRunsTOBJ->Add(
new TObjString(run.c_str()));
665 AliQnCorrectionsCutsSet* eventCuts =
new AliQnCorrectionsCutsSet();
667 new AliQnCorrectionsCutWithin(AliQnCorrectionsVarManagerTask::kVtxZ, zVertexRange.first, zVertexRange.second));
668 eventCuts->Add(
new AliQnCorrectionsCutWithin(varForEventMultiplicity, centRange.first, centRange.second));
669 taskQnCorrections->SetEventCuts(eventCuts);
670 taskQnCorrections->SetUseOnlyCentCalibEvents(useOnlyCentralityCalibratedEvents);
673 histClass +=
"Event_NoCuts;";
674 histClass +=
"Event_Analysis;";
675 histClass +=
"TrackQA_NoCuts;";
680 histClass +=
"TrackQA_TPC;";
684 histClass +=
"TrackletQA_SPD;";
702 QnManager->SetShouldFillQnVectorTree(fillQVectorTree);
703 QnManager->SetShouldFillQAHistograms(fillQAHistograms);
704 QnManager->SetShouldFillNveQAHistograms(fillNveQAHistograms);
705 QnManager->SetShouldFillOutputHistograms(fillOutputHistograms);
707 taskQnCorrections->SetFillExchangeContainerWithQvectors(fillExchangeContainerWithQvectors);
708 taskQnCorrections->SetFillEventQA(fillEventQA);
710 taskQnCorrections->SetAliQnCorrectionsManager(QnManager);
711 taskQnCorrections->DefineInOutput();
712 taskQnCorrections->SetRunsLabels(listOfRunsTOBJ);
715 AliInfoGeneralStream(
"PWGJE::EMCALJetTasks::AddTaskFlowQnVectorCorrections")
716 <<
"=================== CALIBRATION FILE =============================================\n";
717 std::string inputCalibrationFilename = correctionsFilePath +
"/" + correctionsFileName;
718 if (correctionsSource ==
"local") {
719 AliInfoGeneralStream(
"PWGJE::EMCALJetTasks::AddTaskFlowQnVectorCorrections")
720 <<
"\t File " << inputCalibrationFilename <<
"\n\t being taken locally when building the task object.\n";
721 taskQnCorrections->SetCalibrationHistogramsFile(AliAnalysisTaskFlowVectorCorrections::CALIBSRC_local,
722 inputCalibrationFilename.c_str());
723 }
else if (correctionsSource ==
"aliensingle") {
724 AliInfoGeneralStream(
"PWGJE::EMCALJetTasks::AddTaskFlowQnVectorCorrections")
725 <<
"\t File " << inputCalibrationFilename <<
" being taken from alien in the execution nodes\n";
726 taskQnCorrections->SetCalibrationHistogramsFile(AliAnalysisTaskFlowVectorCorrections::CALIBSRC_aliensingle,
727 inputCalibrationFilename.c_str());
728 }
else if (correctionsSource ==
"alienmultiple") {
729 AliInfoGeneralStream(
"PWGJE::EMCALJetTasks::AddTaskFlowQnVectorCorrections")
730 <<
"\t File " << inputCalibrationFilename
731 <<
" being taken from alien in the execution nodes on a per run basis\n";
732 taskQnCorrections->SetCalibrationHistogramsFile(AliAnalysisTaskFlowVectorCorrections::CALIBSRC_alienmultiple,
733 inputCalibrationFilename.c_str());
734 }
else if (correctionsSource ==
"OADBsingle") {
735 AliInfoGeneralStream(
"PWGJE::EMCALJetTasks::AddTaskFlowQnVectorCorrections")
736 <<
"\t File " << inputCalibrationFilename <<
" being taken from OADB in the execution nodes\n";
737 taskQnCorrections->SetCalibrationHistogramsFile(AliAnalysisTaskFlowVectorCorrections::CALIBSRC_OADBsingle,
738 inputCalibrationFilename.c_str());
739 }
else if (correctionsSource ==
"OADBmultiple") {
740 AliInfoGeneralStream(
"PWGJE::EMCALJetTasks::AddTaskFlowQnVectorCorrections")
741 <<
"\t File " << inputCalibrationFilename
742 <<
" being taken from OADB in the execution nodes on a per run basis\n";
743 taskQnCorrections->SetCalibrationHistogramsFile(AliAnalysisTaskFlowVectorCorrections::CALIBSRC_OADBmultiple,
744 inputCalibrationFilename.c_str());
746 AliErrorGeneralStream(
"AddTaskFlowQnVectorCorrections")
747 <<
"\t CALIBRATION FILE SOURCE NOT SUPPORTED. ABORTING!!!";
750 AliInfoGeneralStream(
"PWGJE::EMCALJetTasks::AddTaskFlowQnVectorCorrections")
751 <<
"==================================================================================\n";
753 AliQnCorrectionsHistos* hists = taskQnCorrections->GetEventHistograms();
756 mgr->AddTask(taskQnCorrections);
757 mgr->ConnectInput(taskQnCorrections, 0, mgr->GetCommonInputContainer());
760 if (QnManager->GetShouldFillOutputHistograms()) {
761 AliAnalysisDataContainer* cOutputHist =
762 mgr->CreateContainer(QnManager->GetCalibrationHistogramsContainerName(), TList::Class(),
763 AliAnalysisManager::kOutputContainer,
"CalibrationHistograms.root");
764 mgr->ConnectOutput(taskQnCorrections, taskQnCorrections->OutputSlotHistQn(), cOutputHist);
767 if (QnManager->GetShouldFillQnVectorTree()) {
768 AliAnalysisDataContainer* cOutputQvec = mgr->CreateContainer(
769 "CalibratedQvector", TTree::Class(), AliAnalysisManager::kOutputContainer,
"QvectorsTree.root");
770 mgr->ConnectOutput(taskQnCorrections, taskQnCorrections->OutputSlotTree(), cOutputQvec);
773 if (QnManager->GetShouldFillQAHistograms()) {
774 AliAnalysisDataContainer* cOutputHistQA =
775 mgr->CreateContainer(QnManager->GetCalibrationQAHistogramsContainerName(), TList::Class(),
776 AliAnalysisManager::kOutputContainer,
"CalibrationQA.root");
777 mgr->ConnectOutput(taskQnCorrections, taskQnCorrections->OutputSlotHistQA(), cOutputHistQA);
780 if (QnManager->GetShouldFillNveQAHistograms()) {
781 AliAnalysisDataContainer* cOutputHistNveQA =
782 mgr->CreateContainer(QnManager->GetCalibrationNveQAHistogramsContainerName(), TList::Class(),
783 AliAnalysisManager::kOutputContainer,
"CalibrationQA.root");
784 mgr->ConnectOutput(taskQnCorrections, taskQnCorrections->OutputSlotHistNveQA(), cOutputHistNveQA);
787 if (taskQnCorrections->GetFillEventQA()) {
788 AliAnalysisDataContainer* cOutputQnEventQA =
789 mgr->CreateContainer(
"QnEventQA", TList::Class(), AliAnalysisManager::kOutputContainer,
"QnEventQA.root");
790 mgr->ConnectOutput(taskQnCorrections, taskQnCorrections->OutputSlotEventQA(), cOutputQnEventQA);
793 AliAnalysisDataContainer* cOutputQvecList = mgr->CreateContainer(
794 "CalibratedQvectorList", TList::Class(), AliAnalysisManager::kExchangeContainer,
"QvectorsList.root");
796 if (taskQnCorrections->GetFillExchangeContainerWithQvectors())
797 mgr->ConnectOutput(taskQnCorrections, taskQnCorrections->OutputSlotGetListQnVectors(), cOutputQvecList);
799 return taskQnCorrections;
811 double pT = jet->
Pt() - rho * jet->
Area();
829 double efficiency = 1;
836 switch (centralityBin) {
848 (trackEta >= 0.0 && trackEta <= 0.4) *
852 efficiency = ptAxis * etaAxis;
857 ptAxis = (trackPt < 2.9) *
870 efficiency = ptAxis * etaAxis;
875 ptAxis = (trackPt < 2.9) *
888 efficiency = ptAxis * etaAxis;
893 ptAxis = (trackPt < 2.9) *
906 efficiency = ptAxis * etaAxis;
910 AliErrorGeneralStream(taskName.c_str()) <<
"Invalid centrality for determine tracking efficiency.\n";
941 return (params[index + 0] + -1.0 * params[index + 1] / trackPt) +
942 params[index + 2] * TMath::Gaus(trackPt, params[index + 3], params[index + 4]);
955 return params[index + 0] + params[index + 1] * trackPt + params[index + 2] * std::pow(trackPt, 2) +
956 params[index + 3] * std::pow(trackPt, 3) + params[index + 4] * std::pow(trackPt, 4);
986 int sign = index > 0 ? -1 : 1;
987 return (params[index + 0] *
988 std::exp(-1.0 * std::pow(params[index + 1] / std::abs(sign * trackEta + 0.91), params[index + 2])) +
989 params[index + 3] * trackEta + params[index + 4] * TMath::Gaus(trackEta, -0.04, params[index + 5])) /
1010 const double* ptParams =
nullptr;
1011 const double* etaParams =
nullptr;
1012 switch (centralityBin) {
1030 AliFatalGeneral(taskName.c_str(),
"Invalid centrality for determine tracking efficiency.\n");
1036 double efficiency = ptAxis * etaAxis;
1057 coefficient = (1 + -0.442232 * trackPt
1058 + 0.501831 * std::pow(trackPt, 2)
1059 + -0.252024 * std::pow(trackPt, 3)
1060 + 0.062964 * std::pow(trackPt, 4)
1061 + -0.007681 * std::pow(trackPt, 5)
1062 + 0.000365 * std::pow(trackPt, 6));
1066 double efficiency = coefficient * (1 + 0.402825 * std::abs(trackEta)
1067 + -2.213152 * std::pow(trackEta, 2)
1068 + 4.311098 * std::abs(std::pow(trackEta, 3))
1069 + -2.778200 * std::pow(trackEta, 4));
1086 const double trackPt,
const double trackEta,
const int centralityBin,
1090 double efficiency = 1;
1091 switch (efficiencyPeriodIdentifier) {
1108 AliFatalGeneral(taskName.c_str(),
1109 TString::Format(
"Tracking efficiency for period identifier %d is not yet implemented.",
1110 efficiencyPeriodIdentifier));
1115 AliErrorGeneralStream(taskName.c_str())
1116 <<
"No single track efficiency setting selected! Please select one.\n";
1127 AliQnCorrectionsVarManagerTask::Variables varForEventMultiplicity)
1129 Bool_t VZEROchannels[4][64];
1130 for (
Int_t iv0 = 0; iv0 < 4; iv0++)
1131 for (
Int_t ich = 0; ich < 64; ich++)
1132 VZEROchannels[iv0][ich] = kFALSE;
1134 for (
Int_t ich = 32; ich < 64; ich++)
1135 VZEROchannels[0][ich] = kTRUE;
1136 for (
Int_t ich = 0; ich < 32; ich++)
1137 VZEROchannels[1][ich] = kTRUE;
1138 for (
Int_t ich = 0; ich < 64; ich++)
1139 VZEROchannels[2][ich] = kTRUE;
1141 Int_t channelGroups[64];
1142 for (
Int_t ich = 0; ich < 64; ich++)
1143 channelGroups[ich] =
Int_t(ich / 8);
1148 const Int_t nVZEROdim = 2;
1149 AliQnCorrectionsEventClassVariablesSet* CorrEventClasses =
new AliQnCorrectionsEventClassVariablesSet(nVZEROdim);
1150 Double_t VtxZbinning[][2] = { { -10.0, 4 }, { -7.0, 1 }, { 7.0, 8 }, { 10.0, 1 } };
1151 Double_t Ctbinning[][2] = { { 0.0, 2 }, { 100.0, 100 } };
1152 CorrEventClasses->Add(
new AliQnCorrectionsEventClassVariable(
1153 AliQnCorrectionsVarManagerTask::kVtxZ, task->VarName(AliQnCorrectionsVarManagerTask::kVtxZ), VtxZbinning));
1154 CorrEventClasses->Add(
new AliQnCorrectionsEventClassVariable(
1155 varForEventMultiplicity, Form(
"Centrality (%s)", task->VarName(varForEventMultiplicity)), Ctbinning));
1159 AliQnCorrectionsDetector* VZERO =
new AliQnCorrectionsDetector(
"VZERO", AliQnCorrectionsVarManagerTask::kVZERO);
1162 AliQnCorrectionsDetectorConfigurationChannels* VZEROAconf =
1163 new AliQnCorrectionsDetectorConfigurationChannels(
"VZEROAQoverM", CorrEventClasses, 64,
1165 VZEROAconf->SetChannelsScheme(VZEROchannels[0], channelGroups);
1167 VZEROAconf->SetQVectorNormalizationMethod(AliQnCorrectionsQnVector::QVNORM_QoverM);
1169 AliQnCorrectionsInputGainEqualization* eqA =
new AliQnCorrectionsInputGainEqualization();
1170 eqA->SetEqualizationMethod(AliQnCorrectionsInputGainEqualization::GEQUAL_averageEqualization);
1173 eqA->SetUseChannelGroupsWeights(kTRUE);
1174 VZEROAconf->AddCorrectionOnInputData(eqA);
1177 VZEROAconf->AddCorrectionOnQnVector(
new AliQnCorrectionsQnVectorRecentering());
1179 AliQnCorrectionsQnVectorAlignment* alignA =
new AliQnCorrectionsQnVectorAlignment();
1180 alignA->SetHarmonicNumberForAlignment(2);
1181 alignA->SetReferenceConfigurationForAlignment(
"TPCQoverM");
1182 VZEROAconf->AddCorrectionOnQnVector(alignA);
1184 VZEROAconf->SetQACentralityVar(varForEventMultiplicity);
1185 VZEROAconf->SetQAMultiplicityAxis(100, 0.0, 500.0);
1187 AliQnCorrectionsQnVectorTwistAndRescale* twScaleA =
new AliQnCorrectionsQnVectorTwistAndRescale();
1188 twScaleA->SetApplyTwist(kTRUE);
1189 twScaleA->SetApplyRescale(kTRUE);
1190 twScaleA->SetTwistAndRescaleMethod(AliQnCorrectionsQnVectorTwistAndRescale::TWRESCALE_correlations);
1191 twScaleA->SetReferenceConfigurationsForTwistAndRescale(
"TPCQoverM",
"VZEROCQoverM");
1193 VZEROAconf->AddCorrectionOnQnVector(twScaleA);
1196 VZERO->AddDetectorConfiguration(VZEROAconf);
1199 AliQnCorrectionsDetectorConfigurationChannels* VZEROCconf =
1200 new AliQnCorrectionsDetectorConfigurationChannels(
"VZEROCQoverM", CorrEventClasses, 64,
1202 VZEROCconf->SetChannelsScheme(VZEROchannels[1], channelGroups);
1204 VZEROCconf->SetQVectorNormalizationMethod(AliQnCorrectionsQnVector::QVNORM_QoverM);
1206 AliQnCorrectionsInputGainEqualization* eqC =
new AliQnCorrectionsInputGainEqualization();
1207 eqC->SetEqualizationMethod(AliQnCorrectionsInputGainEqualization::GEQUAL_averageEqualization);
1210 eqC->SetUseChannelGroupsWeights(kTRUE);
1211 VZEROCconf->AddCorrectionOnInputData(eqC);
1214 VZEROCconf->AddCorrectionOnQnVector(
new AliQnCorrectionsQnVectorRecentering());
1216 AliQnCorrectionsQnVectorAlignment* alignC =
new AliQnCorrectionsQnVectorAlignment();
1217 alignC->SetHarmonicNumberForAlignment(2);
1218 alignC->SetReferenceConfigurationForAlignment(
"TPCQoverM");
1219 VZEROCconf->AddCorrectionOnQnVector(alignC);
1221 VZEROCconf->SetQACentralityVar(varForEventMultiplicity);
1222 VZEROCconf->SetQAMultiplicityAxis(100, 0.0, 500.0);
1224 AliQnCorrectionsQnVectorTwistAndRescale* twScaleC =
new AliQnCorrectionsQnVectorTwistAndRescale();
1225 twScaleC->SetApplyTwist(kTRUE);
1226 twScaleC->SetApplyRescale(kTRUE);
1227 twScaleC->SetTwistAndRescaleMethod(AliQnCorrectionsQnVectorTwistAndRescale::TWRESCALE_correlations);
1228 twScaleC->SetReferenceConfigurationsForTwistAndRescale(
"TPCQoverM",
"VZEROAQoverM");
1230 VZEROCconf->AddCorrectionOnQnVector(twScaleC);
1233 VZERO->AddDetectorConfiguration(VZEROCconf);
1236 AliQnCorrectionsDetectorConfigurationChannels* VZEROconf =
1237 new AliQnCorrectionsDetectorConfigurationChannels(
"VZEROQoverM", CorrEventClasses, 64,
1239 VZEROconf->SetChannelsScheme(VZEROchannels[2], channelGroups);
1241 VZEROconf->SetQVectorNormalizationMethod(AliQnCorrectionsQnVector::QVNORM_QoverM);
1243 AliQnCorrectionsInputGainEqualization* eq =
new AliQnCorrectionsInputGainEqualization();
1244 eq->SetEqualizationMethod(AliQnCorrectionsInputGainEqualization::GEQUAL_averageEqualization);
1247 eq->SetUseChannelGroupsWeights(kTRUE);
1248 VZEROconf->AddCorrectionOnInputData(eq);
1251 VZEROconf->AddCorrectionOnQnVector(
new AliQnCorrectionsQnVectorRecentering());
1253 AliQnCorrectionsQnVectorAlignment* align =
new AliQnCorrectionsQnVectorAlignment();
1254 align->SetHarmonicNumberForAlignment(2);
1255 align->SetReferenceConfigurationForAlignment(
"TPCQoverM");
1256 VZEROconf->AddCorrectionOnQnVector(align);
1258 VZEROconf->SetQACentralityVar(varForEventMultiplicity);
1259 VZEROconf->SetQAMultiplicityAxis(100, 0.0, 500.0);
1261 AliQnCorrectionsQnVectorTwistAndRescale* twScale =
new AliQnCorrectionsQnVectorTwistAndRescale();
1262 twScale->SetApplyTwist(kTRUE);
1263 twScale->SetApplyRescale(kTRUE);
1264 twScale->SetTwistAndRescaleMethod(AliQnCorrectionsQnVectorTwistAndRescale::TWRESCALE_correlations);
1265 twScale->SetReferenceConfigurationsForTwistAndRescale(
"TPCQoverM",
"VZEROCQoverM");
1267 VZEROconf->AddCorrectionOnQnVector(twScale);
1270 VZERO->AddDetectorConfiguration(VZEROconf);
1273 AliQnCorrectionsDetectorConfigurationChannels* VZEROAconfQoverQlength =
1274 new AliQnCorrectionsDetectorConfigurationChannels(
"VZEROAQoverQlength", CorrEventClasses,
1277 VZEROAconfQoverQlength->SetChannelsScheme(VZEROchannels[0], channelGroups);
1279 VZEROAconfQoverQlength->SetQVectorNormalizationMethod(AliQnCorrectionsQnVector::QVNORM_QoverQlength);
1281 AliQnCorrectionsInputGainEqualization* eqAQoverQlength =
new AliQnCorrectionsInputGainEqualization();
1282 eqAQoverQlength->SetEqualizationMethod(AliQnCorrectionsInputGainEqualization::GEQUAL_averageEqualization);
1283 eqAQoverQlength->SetShift(1.0);
1284 eqAQoverQlength->SetScale(0.1);
1285 eqAQoverQlength->SetUseChannelGroupsWeights(kTRUE);
1286 VZEROAconfQoverQlength->AddCorrectionOnInputData(eqAQoverQlength);
1289 VZEROAconfQoverQlength->AddCorrectionOnQnVector(
new AliQnCorrectionsQnVectorRecentering());
1291 AliQnCorrectionsQnVectorAlignment* alignAQoverQlength =
new AliQnCorrectionsQnVectorAlignment();
1292 alignAQoverQlength->SetHarmonicNumberForAlignment(2);
1293 alignAQoverQlength->SetReferenceConfigurationForAlignment(
"TPCQoverQlength");
1294 VZEROAconfQoverQlength->AddCorrectionOnQnVector(alignAQoverQlength);
1296 VZEROAconfQoverQlength->SetQACentralityVar(varForEventMultiplicity);
1297 VZEROAconfQoverQlength->SetQAMultiplicityAxis(100, 0.0, 500.0);
1299 AliQnCorrectionsQnVectorTwistAndRescale* twScaleAQoverQlength =
new AliQnCorrectionsQnVectorTwistAndRescale();
1300 twScaleAQoverQlength->SetApplyTwist(kTRUE);
1301 twScaleAQoverQlength->SetApplyRescale(kTRUE);
1302 twScaleAQoverQlength->SetTwistAndRescaleMethod(AliQnCorrectionsQnVectorTwistAndRescale::TWRESCALE_correlations);
1303 twScaleAQoverQlength->SetReferenceConfigurationsForTwistAndRescale(
"TPCQoverQlength",
"VZEROCQoverQlength");
1305 VZEROAconfQoverQlength->AddCorrectionOnQnVector(twScaleAQoverQlength);
1308 VZERO->AddDetectorConfiguration(VZEROAconfQoverQlength);
1311 AliQnCorrectionsDetectorConfigurationChannels* VZEROCconfQoverQlength =
1312 new AliQnCorrectionsDetectorConfigurationChannels(
"VZEROCQoverQlength", CorrEventClasses,
1315 VZEROCconfQoverQlength->SetChannelsScheme(VZEROchannels[1], channelGroups);
1317 VZEROCconfQoverQlength->SetQVectorNormalizationMethod(AliQnCorrectionsQnVector::QVNORM_QoverQlength);
1319 eqAQoverQlength =
new AliQnCorrectionsInputGainEqualization();
1320 eqAQoverQlength->SetEqualizationMethod(AliQnCorrectionsInputGainEqualization::GEQUAL_averageEqualization);
1321 eqAQoverQlength->SetShift(1.0);
1322 eqAQoverQlength->SetScale(0.1);
1323 eqAQoverQlength->SetUseChannelGroupsWeights(kTRUE);
1324 VZEROCconfQoverQlength->AddCorrectionOnInputData(eqAQoverQlength);
1327 VZEROCconfQoverQlength->AddCorrectionOnQnVector(
new AliQnCorrectionsQnVectorRecentering());
1329 alignAQoverQlength =
new AliQnCorrectionsQnVectorAlignment();
1330 alignAQoverQlength->SetHarmonicNumberForAlignment(2);
1331 alignAQoverQlength->SetReferenceConfigurationForAlignment(
"TPCQoverQlength");
1332 VZEROCconfQoverQlength->AddCorrectionOnQnVector(alignAQoverQlength);
1334 VZEROCconfQoverQlength->SetQACentralityVar(varForEventMultiplicity);
1335 VZEROCconfQoverQlength->SetQAMultiplicityAxis(100, 0.0, 500.0);
1337 twScaleAQoverQlength =
new AliQnCorrectionsQnVectorTwistAndRescale();
1338 twScaleAQoverQlength->SetApplyTwist(kTRUE);
1339 twScaleAQoverQlength->SetApplyRescale(kTRUE);
1340 twScaleAQoverQlength->SetTwistAndRescaleMethod(AliQnCorrectionsQnVectorTwistAndRescale::TWRESCALE_correlations);
1341 twScaleAQoverQlength->SetReferenceConfigurationsForTwistAndRescale(
"TPCQoverQlength",
"VZEROAQoverQlength");
1343 VZEROCconfQoverQlength->AddCorrectionOnQnVector(twScaleAQoverQlength);
1346 VZERO->AddDetectorConfiguration(VZEROCconfQoverQlength);
1349 AliQnCorrectionsDetectorConfigurationChannels* VZEROconfQoverQlength =
1350 new AliQnCorrectionsDetectorConfigurationChannels(
"VZEROQoverQlength", CorrEventClasses,
1353 VZEROconfQoverQlength->SetChannelsScheme(VZEROchannels[2], channelGroups);
1355 VZEROconfQoverQlength->SetQVectorNormalizationMethod(AliQnCorrectionsQnVector::QVNORM_QoverQlength);
1357 AliQnCorrectionsInputGainEqualization* eqQoverQlength =
new AliQnCorrectionsInputGainEqualization();
1358 eqQoverQlength->SetEqualizationMethod(AliQnCorrectionsInputGainEqualization::GEQUAL_averageEqualization);
1359 eqQoverQlength->SetShift(1.0);
1360 eqQoverQlength->SetScale(0.1);
1361 eqQoverQlength->SetUseChannelGroupsWeights(kTRUE);
1362 VZEROconfQoverQlength->AddCorrectionOnInputData(eqQoverQlength);
1365 VZEROconfQoverQlength->AddCorrectionOnQnVector(
new AliQnCorrectionsQnVectorRecentering());
1367 AliQnCorrectionsQnVectorAlignment* alignQoverQlength =
new AliQnCorrectionsQnVectorAlignment();
1368 alignQoverQlength->SetHarmonicNumberForAlignment(2);
1369 alignQoverQlength->SetReferenceConfigurationForAlignment(
"TPCQoverQlength");
1370 VZEROconfQoverQlength->AddCorrectionOnQnVector(alignQoverQlength);
1372 VZEROconfQoverQlength->SetQACentralityVar(varForEventMultiplicity);
1373 VZEROconfQoverQlength->SetQAMultiplicityAxis(100, 0.0, 500.0);
1375 AliQnCorrectionsQnVectorTwistAndRescale* twScaleQoverQlength =
new AliQnCorrectionsQnVectorTwistAndRescale();
1376 twScaleQoverQlength->SetApplyTwist(kTRUE);
1377 twScaleQoverQlength->SetApplyRescale(kTRUE);
1378 twScaleQoverQlength->SetTwistAndRescaleMethod(AliQnCorrectionsQnVectorTwistAndRescale::TWRESCALE_correlations);
1379 twScaleQoverQlength->SetReferenceConfigurationsForTwistAndRescale(
"TPCQoverQlength",
"VZEROCQoverQlength");
1381 VZEROconfQoverQlength->AddCorrectionOnQnVector(twScaleQoverQlength);
1384 VZERO->AddDetectorConfiguration(VZEROconfQoverQlength);
1387 AliQnCorrectionsDetectorConfigurationChannels* VZEROAconfQoverSqrtM =
1388 new AliQnCorrectionsDetectorConfigurationChannels(
"VZEROAQoverSqrtM", CorrEventClasses,
1391 VZEROAconfQoverSqrtM->SetChannelsScheme(VZEROchannels[0], channelGroups);
1393 VZEROAconfQoverSqrtM->SetQVectorNormalizationMethod(AliQnCorrectionsQnVector::QVNORM_QoverSqrtM);
1395 AliQnCorrectionsInputGainEqualization* eqAQoverSqrtM =
new AliQnCorrectionsInputGainEqualization();
1396 eqAQoverSqrtM->SetEqualizationMethod(AliQnCorrectionsInputGainEqualization::GEQUAL_averageEqualization);
1397 eqAQoverSqrtM->SetShift(1.0);
1398 eqAQoverSqrtM->SetScale(0.1);
1399 eqAQoverSqrtM->SetUseChannelGroupsWeights(kTRUE);
1400 VZEROAconfQoverSqrtM->AddCorrectionOnInputData(eqAQoverSqrtM);
1403 VZEROAconfQoverSqrtM->AddCorrectionOnQnVector(
new AliQnCorrectionsQnVectorRecentering());
1405 AliQnCorrectionsQnVectorAlignment* alignAQoverSqrtM =
new AliQnCorrectionsQnVectorAlignment();
1406 alignAQoverSqrtM->SetHarmonicNumberForAlignment(2);
1407 alignAQoverSqrtM->SetReferenceConfigurationForAlignment(
"TPCQoverSqrtM");
1408 VZEROAconfQoverSqrtM->AddCorrectionOnQnVector(alignAQoverSqrtM);
1410 VZEROAconfQoverSqrtM->SetQACentralityVar(varForEventMultiplicity);
1411 VZEROAconfQoverSqrtM->SetQAMultiplicityAxis(100, 0.0, 500.0);
1413 AliQnCorrectionsQnVectorTwistAndRescale* twScaleAQoverSqrtM =
new AliQnCorrectionsQnVectorTwistAndRescale();
1414 twScaleAQoverSqrtM->SetApplyTwist(kTRUE);
1415 twScaleAQoverSqrtM->SetApplyRescale(kTRUE);
1416 twScaleAQoverSqrtM->SetTwistAndRescaleMethod(AliQnCorrectionsQnVectorTwistAndRescale::TWRESCALE_correlations);
1417 twScaleAQoverSqrtM->SetReferenceConfigurationsForTwistAndRescale(
"TPCQoverSqrtM",
"VZEROCQoverSqrtM");
1419 VZEROAconfQoverSqrtM->AddCorrectionOnQnVector(twScaleAQoverSqrtM);
1422 VZERO->AddDetectorConfiguration(VZEROAconfQoverSqrtM);
1425 AliQnCorrectionsDetectorConfigurationChannels* VZEROCconfQoverSqrtM =
1426 new AliQnCorrectionsDetectorConfigurationChannels(
"VZEROCQoverSqrtM", CorrEventClasses,
1429 VZEROCconfQoverSqrtM->SetChannelsScheme(VZEROchannels[1], channelGroups);
1431 VZEROCconfQoverSqrtM->SetQVectorNormalizationMethod(AliQnCorrectionsQnVector::QVNORM_QoverSqrtM);
1433 eqAQoverSqrtM =
new AliQnCorrectionsInputGainEqualization();
1434 eqAQoverSqrtM->SetEqualizationMethod(AliQnCorrectionsInputGainEqualization::GEQUAL_averageEqualization);
1435 eqAQoverSqrtM->SetShift(1.0);
1436 eqAQoverSqrtM->SetScale(0.1);
1437 eqAQoverSqrtM->SetUseChannelGroupsWeights(kTRUE);
1438 VZEROCconfQoverSqrtM->AddCorrectionOnInputData(eqAQoverSqrtM);
1441 VZEROCconfQoverSqrtM->AddCorrectionOnQnVector(
new AliQnCorrectionsQnVectorRecentering());
1443 alignAQoverSqrtM =
new AliQnCorrectionsQnVectorAlignment();
1444 alignAQoverSqrtM->SetHarmonicNumberForAlignment(2);
1445 alignAQoverSqrtM->SetReferenceConfigurationForAlignment(
"TPCQoverSqrtM");
1446 VZEROCconfQoverSqrtM->AddCorrectionOnQnVector(alignAQoverSqrtM);
1448 VZEROCconfQoverSqrtM->SetQACentralityVar(varForEventMultiplicity);
1449 VZEROCconfQoverSqrtM->SetQAMultiplicityAxis(100, 0.0, 500.0);
1451 twScaleAQoverSqrtM =
new AliQnCorrectionsQnVectorTwistAndRescale();
1452 twScaleAQoverSqrtM->SetApplyTwist(kTRUE);
1453 twScaleAQoverSqrtM->SetApplyRescale(kTRUE);
1454 twScaleAQoverSqrtM->SetTwistAndRescaleMethod(AliQnCorrectionsQnVectorTwistAndRescale::TWRESCALE_correlations);
1455 twScaleAQoverSqrtM->SetReferenceConfigurationsForTwistAndRescale(
"TPCQoverSqrtM",
"VZEROAQoverSqrtM");
1457 VZEROCconfQoverSqrtM->AddCorrectionOnQnVector(twScaleAQoverSqrtM);
1460 VZERO->AddDetectorConfiguration(VZEROCconfQoverSqrtM);
1463 AliQnCorrectionsDetectorConfigurationChannels* VZEROconfQoverSqrtM =
1464 new AliQnCorrectionsDetectorConfigurationChannels(
"VZEROQoverSqrtM", CorrEventClasses,
1467 VZEROconfQoverSqrtM->SetChannelsScheme(VZEROchannels[2], channelGroups);
1469 VZEROconfQoverSqrtM->SetQVectorNormalizationMethod(AliQnCorrectionsQnVector::QVNORM_QoverSqrtM);
1471 AliQnCorrectionsInputGainEqualization* eqQoverSqrtM =
new AliQnCorrectionsInputGainEqualization();
1472 eqQoverSqrtM->SetEqualizationMethod(AliQnCorrectionsInputGainEqualization::GEQUAL_averageEqualization);
1473 eqQoverSqrtM->SetShift(1.0);
1474 eqQoverSqrtM->SetScale(0.1);
1475 eqQoverSqrtM->SetUseChannelGroupsWeights(kTRUE);
1476 VZEROconfQoverSqrtM->AddCorrectionOnInputData(eqQoverSqrtM);
1479 VZEROconfQoverSqrtM->AddCorrectionOnQnVector(
new AliQnCorrectionsQnVectorRecentering());
1481 AliQnCorrectionsQnVectorAlignment* alignQoverQoverSqrtM =
new AliQnCorrectionsQnVectorAlignment();
1482 alignQoverQoverSqrtM->SetHarmonicNumberForAlignment(2);
1483 alignQoverQoverSqrtM->SetReferenceConfigurationForAlignment(
"TPCQoverSqrtM");
1484 VZEROconfQoverSqrtM->AddCorrectionOnQnVector(alignQoverQoverSqrtM);
1486 VZEROconfQoverSqrtM->SetQACentralityVar(varForEventMultiplicity);
1487 VZEROconfQoverSqrtM->SetQAMultiplicityAxis(100, 0.0, 500.0);
1489 AliQnCorrectionsQnVectorTwistAndRescale* twScaleQoverSqrtM =
new AliQnCorrectionsQnVectorTwistAndRescale();
1490 twScaleQoverSqrtM->SetApplyTwist(kTRUE);
1491 twScaleQoverSqrtM->SetApplyRescale(kTRUE);
1492 twScaleQoverSqrtM->SetTwistAndRescaleMethod(AliQnCorrectionsQnVectorTwistAndRescale::TWRESCALE_correlations);
1493 twScaleQoverSqrtM->SetReferenceConfigurationsForTwistAndRescale(
"TPCQoverSqrtM",
"VZEROCQoverM");
1495 VZEROconfQoverSqrtM->AddCorrectionOnQnVector(twScaleQoverSqrtM);
1498 VZERO->AddDetectorConfiguration(VZEROconfQoverSqrtM);
1501 QnManager->AddDetector(VZERO);
1508 AliQnCorrectionsVarManagerTask::Variables varForEventMultiplicity)
1515 const Int_t nTPCdim = 2;
1516 AliQnCorrectionsEventClassVariablesSet* CorrEventClasses =
new AliQnCorrectionsEventClassVariablesSet(nTPCdim);
1517 Double_t VtxZbinning[][2] = { { -10.0, 4 }, { -7.0, 1 }, { 7.0, 8 }, { 10.0, 1 } };
1518 Double_t Ctbinning[][2] = { { 0.0, 2 }, { 100.0, 100 } };
1519 CorrEventClasses->Add(
new AliQnCorrectionsEventClassVariable(
1520 AliQnCorrectionsVarManagerTask::kVtxZ, task->VarName(AliQnCorrectionsVarManagerTask::kVtxZ), VtxZbinning));
1521 CorrEventClasses->Add(
new AliQnCorrectionsEventClassVariable(
1522 varForEventMultiplicity, Form(
"Centrality (%s)", task->VarName(varForEventMultiplicity)), Ctbinning));
1529 AliQnCorrectionsDetectorConfigurationTracks* TPCconf =
new AliQnCorrectionsDetectorConfigurationTracks(
1530 "TPCQoverM", CorrEventClasses, 4);
1532 TPCconf->SetQVectorNormalizationMethod(AliQnCorrectionsQnVector::QVNORM_QoverM);
1535 TPCconf->AddCorrectionOnQnVector(
new AliQnCorrectionsQnVectorRecentering());
1537 AliQnCorrectionsQnVectorTwistAndRescale* twScale =
new AliQnCorrectionsQnVectorTwistAndRescale();
1538 twScale->SetApplyTwist(kTRUE);
1539 twScale->SetApplyRescale(kFALSE);
1540 twScale->SetTwistAndRescaleMethod(AliQnCorrectionsQnVectorTwistAndRescale::TWRESCALE_doubleHarmonic);
1541 TPCconf->AddCorrectionOnQnVector(twScale);
1545 Bool_t isESD = mgr->GetInputEventHandler()->IsA() == AliESDInputHandler::Class();
1546 AliQnCorrectionsCutsSet* cutsTPC =
new AliQnCorrectionsCutsSet();
1548 cutsTPC->Add(
new AliQnCorrectionsCutWithin(AliQnCorrectionsVarManagerTask::kFilterBitMask768, 0.5, 1.5));
1549 cutsTPC->Add(
new AliQnCorrectionsCutWithin(AliQnCorrectionsVarManagerTask::kEta, -0.8, 0.8));
1552 Bool_t UseTPConlyTracks = kFALSE;
1553 task->SetUseTPCStandaloneTracks(UseTPConlyTracks);
1554 if (UseTPConlyTracks) {
1555 cutsTPC->Add(
new AliQnCorrectionsCutWithin(AliQnCorrectionsVarManagerTask::kDcaXY, -3.0, 3.0));
1556 cutsTPC->Add(
new AliQnCorrectionsCutWithin(AliQnCorrectionsVarManagerTask::kDcaZ, -3.0, 3.0));
1557 cutsTPC->Add(
new AliQnCorrectionsCutWithin(AliQnCorrectionsVarManagerTask::kEta, -0.8, 0.8));
1559 cutsTPC->Add(
new AliQnCorrectionsCutWithin(AliQnCorrectionsVarManagerTask::kTPCnclsIter1, 70.0, 161.0));
1560 cutsTPC->Add(
new AliQnCorrectionsCutWithin(AliQnCorrectionsVarManagerTask::kTPCchi2Iter1, 0.2, 4.0));
1562 cutsTPC->Add(
new AliQnCorrectionsCutWithin(AliQnCorrectionsVarManagerTask::kDcaXY, -0.3, 0.3));
1563 cutsTPC->Add(
new AliQnCorrectionsCutWithin(AliQnCorrectionsVarManagerTask::kDcaZ, -0.3, 0.3));
1564 cutsTPC->Add(
new AliQnCorrectionsCutWithin(AliQnCorrectionsVarManagerTask::kEta, -0.8, 0.8));
1566 cutsTPC->Add(
new AliQnCorrectionsCutWithin(AliQnCorrectionsVarManagerTask::kTPCncls, 70.0, 161.0));
1567 cutsTPC->Add(
new AliQnCorrectionsCutWithin(AliQnCorrectionsVarManagerTask::kTPCchi2, 0.2, 4.0));
1570 TPCconf->SetCuts(cutsTPC);
1573 TPC->AddDetectorConfiguration(TPCconf);
1576 AliQnCorrectionsDetectorConfigurationTracks* TPCNegEtaconf =
new AliQnCorrectionsDetectorConfigurationTracks(
1577 "TPCNegEtaQoverM", CorrEventClasses, 4);
1579 TPCNegEtaconf->SetQVectorNormalizationMethod(AliQnCorrectionsQnVector::QVNORM_QoverM);
1582 TPCNegEtaconf->AddCorrectionOnQnVector(
new AliQnCorrectionsQnVectorRecentering());
1584 AliQnCorrectionsQnVectorTwistAndRescale* twScaleNegEta =
new AliQnCorrectionsQnVectorTwistAndRescale();
1585 twScaleNegEta->SetApplyTwist(kTRUE);
1586 twScaleNegEta->SetApplyRescale(kFALSE);
1587 twScaleNegEta->SetTwistAndRescaleMethod(AliQnCorrectionsQnVectorTwistAndRescale::TWRESCALE_doubleHarmonic);
1588 TPCNegEtaconf->AddCorrectionOnQnVector(twScaleNegEta);
1591 isESD = mgr->GetInputEventHandler()->IsA() == AliESDInputHandler::Class();
1592 AliQnCorrectionsCutsSet* cutsTPCNegEta =
new AliQnCorrectionsCutsSet();
1594 cutsTPCNegEta->Add(
new AliQnCorrectionsCutWithin(AliQnCorrectionsVarManagerTask::kFilterBitMask768, 0.5, 1.5));
1595 cutsTPCNegEta->Add(
new AliQnCorrectionsCutWithin(AliQnCorrectionsVarManagerTask::kEta, -0.8, 0.));
1598 Bool_t UseTPConlyTracks = kFALSE;
1599 task->SetUseTPCStandaloneTracks(UseTPConlyTracks);
1600 if (UseTPConlyTracks) {
1601 cutsTPCNegEta->Add(
new AliQnCorrectionsCutWithin(AliQnCorrectionsVarManagerTask::kDcaXY, -3.0, 3.0));
1602 cutsTPCNegEta->Add(
new AliQnCorrectionsCutWithin(AliQnCorrectionsVarManagerTask::kDcaZ, -3.0, 3.0));
1603 cutsTPCNegEta->Add(
new AliQnCorrectionsCutWithin(AliQnCorrectionsVarManagerTask::kEta, -0.8, 0.));
1606 new AliQnCorrectionsCutWithin(AliQnCorrectionsVarManagerTask::kTPCnclsIter1, 70.0, 161.0));
1607 cutsTPCNegEta->Add(
new AliQnCorrectionsCutWithin(AliQnCorrectionsVarManagerTask::kTPCchi2Iter1, 0.2, 4.0));
1609 cutsTPCNegEta->Add(
new AliQnCorrectionsCutWithin(AliQnCorrectionsVarManagerTask::kDcaXY, -0.3, 0.3));
1610 cutsTPCNegEta->Add(
new AliQnCorrectionsCutWithin(AliQnCorrectionsVarManagerTask::kDcaZ, -0.3, 0.3));
1611 cutsTPCNegEta->Add(
new AliQnCorrectionsCutWithin(AliQnCorrectionsVarManagerTask::kEta, -0.8, 0.));
1613 cutsTPCNegEta->Add(
new AliQnCorrectionsCutWithin(AliQnCorrectionsVarManagerTask::kTPCncls, 70.0, 161.0));
1614 cutsTPCNegEta->Add(
new AliQnCorrectionsCutWithin(AliQnCorrectionsVarManagerTask::kTPCchi2, 0.2, 4.0));
1617 TPCNegEtaconf->SetCuts(cutsTPCNegEta);
1620 TPC->AddDetectorConfiguration(TPCNegEtaconf);
1623 AliQnCorrectionsDetectorConfigurationTracks* TPCPosEtaconf =
new AliQnCorrectionsDetectorConfigurationTracks(
1624 "TPCPosEtaQoverM", CorrEventClasses, 4);
1626 TPCPosEtaconf->SetQVectorNormalizationMethod(AliQnCorrectionsQnVector::QVNORM_QoverM);
1629 TPCPosEtaconf->AddCorrectionOnQnVector(
new AliQnCorrectionsQnVectorRecentering());
1631 AliQnCorrectionsQnVectorTwistAndRescale* twScalePosEta =
new AliQnCorrectionsQnVectorTwistAndRescale();
1632 twScalePosEta->SetApplyTwist(kTRUE);
1633 twScalePosEta->SetApplyRescale(kFALSE);
1634 twScalePosEta->SetTwistAndRescaleMethod(AliQnCorrectionsQnVectorTwistAndRescale::TWRESCALE_doubleHarmonic);
1635 TPCPosEtaconf->AddCorrectionOnQnVector(twScalePosEta);
1638 isESD = mgr->GetInputEventHandler()->IsA() == AliESDInputHandler::Class();
1639 AliQnCorrectionsCutsSet* cutsTPCPosEta =
new AliQnCorrectionsCutsSet();
1641 cutsTPCPosEta->Add(
new AliQnCorrectionsCutWithin(AliQnCorrectionsVarManagerTask::kFilterBitMask768, 0.5, 1.5));
1642 cutsTPCPosEta->Add(
new AliQnCorrectionsCutWithin(AliQnCorrectionsVarManagerTask::kEta, 0., 0.8));
1645 Bool_t UseTPConlyTracks = kFALSE;
1646 task->SetUseTPCStandaloneTracks(UseTPConlyTracks);
1647 if (UseTPConlyTracks) {
1648 cutsTPCPosEta->Add(
new AliQnCorrectionsCutWithin(AliQnCorrectionsVarManagerTask::kDcaXY, -3.0, 3.0));
1649 cutsTPCPosEta->Add(
new AliQnCorrectionsCutWithin(AliQnCorrectionsVarManagerTask::kDcaZ, -3.0, 3.0));
1650 cutsTPCPosEta->Add(
new AliQnCorrectionsCutWithin(AliQnCorrectionsVarManagerTask::kEta, 0., 0.8));
1653 new AliQnCorrectionsCutWithin(AliQnCorrectionsVarManagerTask::kTPCnclsIter1, 70.0, 161.0));
1654 cutsTPCPosEta->Add(
new AliQnCorrectionsCutWithin(AliQnCorrectionsVarManagerTask::kTPCchi2Iter1, 0.2, 4.0));
1656 cutsTPCPosEta->Add(
new AliQnCorrectionsCutWithin(AliQnCorrectionsVarManagerTask::kDcaXY, -0.3, 0.3));
1657 cutsTPCPosEta->Add(
new AliQnCorrectionsCutWithin(AliQnCorrectionsVarManagerTask::kDcaZ, -0.3, 0.3));
1658 cutsTPCPosEta->Add(
new AliQnCorrectionsCutWithin(AliQnCorrectionsVarManagerTask::kEta, 0., 0.8));
1660 cutsTPCPosEta->Add(
new AliQnCorrectionsCutWithin(AliQnCorrectionsVarManagerTask::kTPCncls, 70.0, 161.0));
1661 cutsTPCPosEta->Add(
new AliQnCorrectionsCutWithin(AliQnCorrectionsVarManagerTask::kTPCchi2, 0.2, 4.0));
1664 TPCPosEtaconf->SetCuts(cutsTPCPosEta);
1667 TPC->AddDetectorConfiguration(TPCPosEtaconf);
1670 AliQnCorrectionsDetectorConfigurationTracks* TPCconfQoverQlength =
new AliQnCorrectionsDetectorConfigurationTracks(
1671 "TPCQoverQlength", CorrEventClasses, 4);
1673 TPCconfQoverQlength->SetQVectorNormalizationMethod(AliQnCorrectionsQnVector::QVNORM_QoverQlength);
1676 TPCconfQoverQlength->AddCorrectionOnQnVector(
new AliQnCorrectionsQnVectorRecentering());
1678 AliQnCorrectionsQnVectorTwistAndRescale* twScaleQoverQlength =
new AliQnCorrectionsQnVectorTwistAndRescale();
1679 twScaleQoverQlength->SetApplyTwist(kTRUE);
1680 twScaleQoverQlength->SetApplyRescale(kFALSE);
1681 twScaleQoverQlength->SetTwistAndRescaleMethod(AliQnCorrectionsQnVectorTwistAndRescale::TWRESCALE_doubleHarmonic);
1682 TPCconfQoverQlength->AddCorrectionOnQnVector(twScaleQoverQlength);
1685 isESD = mgr->GetInputEventHandler()->IsA() == AliESDInputHandler::Class();
1686 AliQnCorrectionsCutsSet* cutsTPCQoverQlength =
new AliQnCorrectionsCutsSet();
1688 cutsTPCQoverQlength->Add(
1689 new AliQnCorrectionsCutWithin(AliQnCorrectionsVarManagerTask::kFilterBitMask768, 0.5, 1.5));
1690 cutsTPCQoverQlength->Add(
new AliQnCorrectionsCutWithin(AliQnCorrectionsVarManagerTask::kEta, -0.8, 0.8));
1693 Bool_t UseTPConlyTracks = kFALSE;
1694 task->SetUseTPCStandaloneTracks(UseTPConlyTracks);
1695 if (UseTPConlyTracks) {
1696 cutsTPCQoverQlength->Add(
new AliQnCorrectionsCutWithin(AliQnCorrectionsVarManagerTask::kDcaXY, -3.0, 3.0));
1697 cutsTPCQoverQlength->Add(
new AliQnCorrectionsCutWithin(AliQnCorrectionsVarManagerTask::kDcaZ, -3.0, 3.0));
1698 cutsTPCQoverQlength->Add(
new AliQnCorrectionsCutWithin(AliQnCorrectionsVarManagerTask::kEta, -0.8, 0.8));
1700 cutsTPCQoverQlength->Add(
1701 new AliQnCorrectionsCutWithin(AliQnCorrectionsVarManagerTask::kTPCnclsIter1, 70.0, 161.0));
1702 cutsTPCQoverQlength->Add(
1703 new AliQnCorrectionsCutWithin(AliQnCorrectionsVarManagerTask::kTPCchi2Iter1, 0.2, 4.0));
1705 cutsTPCQoverQlength->Add(
new AliQnCorrectionsCutWithin(AliQnCorrectionsVarManagerTask::kDcaXY, -0.3, 0.3));
1706 cutsTPCQoverQlength->Add(
new AliQnCorrectionsCutWithin(AliQnCorrectionsVarManagerTask::kDcaZ, -0.3, 0.3));
1707 cutsTPCQoverQlength->Add(
new AliQnCorrectionsCutWithin(AliQnCorrectionsVarManagerTask::kEta, -0.8, 0.8));
1709 cutsTPCQoverQlength->Add(
1710 new AliQnCorrectionsCutWithin(AliQnCorrectionsVarManagerTask::kTPCncls, 70.0, 161.0));
1711 cutsTPCQoverQlength->Add(
new AliQnCorrectionsCutWithin(AliQnCorrectionsVarManagerTask::kTPCchi2, 0.2, 4.0));
1714 TPCconfQoverQlength->SetCuts(cutsTPCQoverQlength);
1717 TPC->AddDetectorConfiguration(TPCconfQoverQlength);
1720 AliQnCorrectionsDetectorConfigurationTracks* TPCNegEtaconfQoverQlength =
1721 new AliQnCorrectionsDetectorConfigurationTracks(
"TPCNegEtaQoverQlength", CorrEventClasses,
1724 TPCNegEtaconfQoverQlength->SetQVectorNormalizationMethod(AliQnCorrectionsQnVector::QVNORM_QoverQlength);
1727 TPCNegEtaconfQoverQlength->AddCorrectionOnQnVector(
new AliQnCorrectionsQnVectorRecentering());
1729 AliQnCorrectionsQnVectorTwistAndRescale* twScaleNegEtaQoverQlength =
new AliQnCorrectionsQnVectorTwistAndRescale();
1730 twScaleNegEtaQoverQlength->SetApplyTwist(kTRUE);
1731 twScaleNegEtaQoverQlength->SetApplyRescale(kFALSE);
1732 twScaleNegEtaQoverQlength->SetTwistAndRescaleMethod(
1733 AliQnCorrectionsQnVectorTwistAndRescale::TWRESCALE_doubleHarmonic);
1734 TPCNegEtaconfQoverQlength->AddCorrectionOnQnVector(twScaleNegEtaQoverQlength);
1737 isESD = mgr->GetInputEventHandler()->IsA() == AliESDInputHandler::Class();
1738 AliQnCorrectionsCutsSet* cutsTPCNegEtaQoverQlength =
new AliQnCorrectionsCutsSet();
1740 cutsTPCNegEtaQoverQlength->Add(
1741 new AliQnCorrectionsCutWithin(AliQnCorrectionsVarManagerTask::kFilterBitMask768, 0.5, 1.5));
1742 cutsTPCNegEtaQoverQlength->Add(
new AliQnCorrectionsCutWithin(AliQnCorrectionsVarManagerTask::kEta, -0.8, 0.));
1745 Bool_t UseTPConlyTracks = kFALSE;
1746 task->SetUseTPCStandaloneTracks(UseTPConlyTracks);
1747 if (UseTPConlyTracks) {
1748 cutsTPCNegEtaQoverQlength->Add(
1749 new AliQnCorrectionsCutWithin(AliQnCorrectionsVarManagerTask::kDcaXY, -3.0, 3.0));
1750 cutsTPCNegEtaQoverQlength->Add(
1751 new AliQnCorrectionsCutWithin(AliQnCorrectionsVarManagerTask::kDcaZ, -3.0, 3.0));
1752 cutsTPCNegEtaQoverQlength->Add(
1753 new AliQnCorrectionsCutWithin(AliQnCorrectionsVarManagerTask::kEta, -0.8, 0.));
1755 cutsTPCNegEtaQoverQlength->Add(
1756 new AliQnCorrectionsCutWithin(AliQnCorrectionsVarManagerTask::kTPCnclsIter1, 70.0, 161.0));
1757 cutsTPCNegEtaQoverQlength->Add(
1758 new AliQnCorrectionsCutWithin(AliQnCorrectionsVarManagerTask::kTPCchi2Iter1, 0.2, 4.0));
1760 cutsTPCNegEtaQoverQlength->Add(
1761 new AliQnCorrectionsCutWithin(AliQnCorrectionsVarManagerTask::kDcaXY, -0.3, 0.3));
1762 cutsTPCNegEtaQoverQlength->Add(
1763 new AliQnCorrectionsCutWithin(AliQnCorrectionsVarManagerTask::kDcaZ, -0.3, 0.3));
1764 cutsTPCNegEtaQoverQlength->Add(
1765 new AliQnCorrectionsCutWithin(AliQnCorrectionsVarManagerTask::kEta, -0.8, 0.));
1767 cutsTPCNegEtaQoverQlength->Add(
1768 new AliQnCorrectionsCutWithin(AliQnCorrectionsVarManagerTask::kTPCncls, 70.0, 161.0));
1769 cutsTPCNegEtaQoverQlength->Add(
1770 new AliQnCorrectionsCutWithin(AliQnCorrectionsVarManagerTask::kTPCchi2, 0.2, 4.0));
1773 TPCNegEtaconfQoverQlength->SetCuts(cutsTPCNegEtaQoverQlength);
1774 TPC->AddDetectorConfiguration(TPCNegEtaconfQoverQlength);
1777 AliQnCorrectionsDetectorConfigurationTracks* TPCPosEtaconfQoverQlength =
1778 new AliQnCorrectionsDetectorConfigurationTracks(
"TPCPosEtaQoverQlength", CorrEventClasses,
1781 TPCPosEtaconfQoverQlength->SetQVectorNormalizationMethod(AliQnCorrectionsQnVector::QVNORM_QoverQlength);
1784 TPCPosEtaconfQoverQlength->AddCorrectionOnQnVector(
new AliQnCorrectionsQnVectorRecentering());
1786 AliQnCorrectionsQnVectorTwistAndRescale* twScalePosEtaQoverQlength =
new AliQnCorrectionsQnVectorTwistAndRescale();
1787 twScalePosEtaQoverQlength->SetApplyTwist(kTRUE);
1788 twScalePosEtaQoverQlength->SetApplyRescale(kFALSE);
1789 twScalePosEtaQoverQlength->SetTwistAndRescaleMethod(
1790 AliQnCorrectionsQnVectorTwistAndRescale::TWRESCALE_doubleHarmonic);
1791 TPCPosEtaconfQoverQlength->AddCorrectionOnQnVector(twScalePosEtaQoverQlength);
1794 isESD = mgr->GetInputEventHandler()->IsA() == AliESDInputHandler::Class();
1795 AliQnCorrectionsCutsSet* cutsTPCPosEtaQoverQlength =
new AliQnCorrectionsCutsSet();
1797 cutsTPCPosEtaQoverQlength->Add(
1798 new AliQnCorrectionsCutWithin(AliQnCorrectionsVarManagerTask::kFilterBitMask768, 0.5, 1.5));
1799 cutsTPCPosEtaQoverQlength->Add(
new AliQnCorrectionsCutWithin(AliQnCorrectionsVarManagerTask::kEta, 0., 0.8));
1802 Bool_t UseTPConlyTracks = kFALSE;
1803 task->SetUseTPCStandaloneTracks(UseTPConlyTracks);
1804 if (UseTPConlyTracks) {
1805 cutsTPCPosEtaQoverQlength->Add(
1806 new AliQnCorrectionsCutWithin(AliQnCorrectionsVarManagerTask::kDcaXY, -3.0, 3.0));
1807 cutsTPCPosEtaQoverQlength->Add(
1808 new AliQnCorrectionsCutWithin(AliQnCorrectionsVarManagerTask::kDcaZ, -3.0, 3.0));
1809 cutsTPCPosEtaQoverQlength->Add(
1810 new AliQnCorrectionsCutWithin(AliQnCorrectionsVarManagerTask::kEta, 0., 0.8));
1812 cutsTPCPosEtaQoverQlength->Add(
1813 new AliQnCorrectionsCutWithin(AliQnCorrectionsVarManagerTask::kTPCnclsIter1, 70.0, 161.0));
1814 cutsTPCPosEtaQoverQlength->Add(
1815 new AliQnCorrectionsCutWithin(AliQnCorrectionsVarManagerTask::kTPCchi2Iter1, 0.2, 4.0));
1817 cutsTPCPosEtaQoverQlength->Add(
1818 new AliQnCorrectionsCutWithin(AliQnCorrectionsVarManagerTask::kDcaXY, -0.3, 0.3));
1819 cutsTPCPosEtaQoverQlength->Add(
1820 new AliQnCorrectionsCutWithin(AliQnCorrectionsVarManagerTask::kDcaZ, -0.3, 0.3));
1821 cutsTPCPosEtaQoverQlength->Add(
1822 new AliQnCorrectionsCutWithin(AliQnCorrectionsVarManagerTask::kEta, 0., 0.8));
1824 cutsTPCPosEtaQoverQlength->Add(
1825 new AliQnCorrectionsCutWithin(AliQnCorrectionsVarManagerTask::kTPCncls, 70.0, 161.0));
1826 cutsTPCPosEtaQoverQlength->Add(
1827 new AliQnCorrectionsCutWithin(AliQnCorrectionsVarManagerTask::kTPCchi2, 0.2, 4.0));
1830 TPCPosEtaconfQoverQlength->SetCuts(cutsTPCPosEtaQoverQlength);
1833 TPC->AddDetectorConfiguration(TPCPosEtaconfQoverQlength);
1836 AliQnCorrectionsDetectorConfigurationTracks* TPCconfQoverSqrtM =
new AliQnCorrectionsDetectorConfigurationTracks(
1837 "TPCQoverSqrtM", CorrEventClasses, 4);
1839 TPCconfQoverSqrtM->SetQVectorNormalizationMethod(AliQnCorrectionsQnVector::QVNORM_QoverSqrtM);
1842 TPCconfQoverSqrtM->AddCorrectionOnQnVector(
new AliQnCorrectionsQnVectorRecentering());
1844 AliQnCorrectionsQnVectorTwistAndRescale* twScaleQoverSqrtM =
new AliQnCorrectionsQnVectorTwistAndRescale();
1845 twScaleQoverSqrtM->SetApplyTwist(kTRUE);
1846 twScaleQoverSqrtM->SetApplyRescale(kFALSE);
1847 twScaleQoverSqrtM->SetTwistAndRescaleMethod(AliQnCorrectionsQnVectorTwistAndRescale::TWRESCALE_doubleHarmonic);
1848 TPCconfQoverSqrtM->AddCorrectionOnQnVector(twScaleQoverSqrtM);
1851 isESD = mgr->GetInputEventHandler()->IsA() == AliESDInputHandler::Class();
1852 AliQnCorrectionsCutsSet* cutsTPCQoverSqrtM =
new AliQnCorrectionsCutsSet();
1854 cutsTPCQoverSqrtM->Add(
1855 new AliQnCorrectionsCutWithin(AliQnCorrectionsVarManagerTask::kFilterBitMask768, 0.5, 1.5));
1856 cutsTPCQoverSqrtM->Add(
new AliQnCorrectionsCutWithin(AliQnCorrectionsVarManagerTask::kEta, -0.8, 0.8));
1859 Bool_t UseTPConlyTracks = kFALSE;
1860 task->SetUseTPCStandaloneTracks(UseTPConlyTracks);
1861 if (UseTPConlyTracks) {
1862 cutsTPCQoverSqrtM->Add(
new AliQnCorrectionsCutWithin(AliQnCorrectionsVarManagerTask::kDcaXY, -3.0, 3.0));
1863 cutsTPCQoverSqrtM->Add(
new AliQnCorrectionsCutWithin(AliQnCorrectionsVarManagerTask::kDcaZ, -3.0, 3.0));
1864 cutsTPCQoverSqrtM->Add(
new AliQnCorrectionsCutWithin(AliQnCorrectionsVarManagerTask::kEta, -0.8, 0.8));
1866 cutsTPCQoverSqrtM->Add(
1867 new AliQnCorrectionsCutWithin(AliQnCorrectionsVarManagerTask::kTPCnclsIter1, 70.0, 161.0));
1868 cutsTPCQoverSqrtM->Add(
1869 new AliQnCorrectionsCutWithin(AliQnCorrectionsVarManagerTask::kTPCchi2Iter1, 0.2, 4.0));
1871 cutsTPCQoverSqrtM->Add(
new AliQnCorrectionsCutWithin(AliQnCorrectionsVarManagerTask::kDcaXY, -0.3, 0.3));
1872 cutsTPCQoverSqrtM->Add(
new AliQnCorrectionsCutWithin(AliQnCorrectionsVarManagerTask::kDcaZ, -0.3, 0.3));
1873 cutsTPCQoverSqrtM->Add(
new AliQnCorrectionsCutWithin(AliQnCorrectionsVarManagerTask::kEta, -0.8, 0.8));
1875 cutsTPCQoverSqrtM->Add(
1876 new AliQnCorrectionsCutWithin(AliQnCorrectionsVarManagerTask::kTPCncls, 70.0, 161.0));
1877 cutsTPCQoverSqrtM->Add(
new AliQnCorrectionsCutWithin(AliQnCorrectionsVarManagerTask::kTPCchi2, 0.2, 4.0));
1880 TPCconfQoverSqrtM->SetCuts(cutsTPCQoverSqrtM);
1883 TPC->AddDetectorConfiguration(TPCconfQoverSqrtM);
1886 AliQnCorrectionsDetectorConfigurationTracks* TPCNegEtaconfQoverSqrtM =
1887 new AliQnCorrectionsDetectorConfigurationTracks(
"TPCNegEtaQoverSqrtM", CorrEventClasses,
1890 TPCNegEtaconfQoverSqrtM->SetQVectorNormalizationMethod(AliQnCorrectionsQnVector::QVNORM_QoverSqrtM);
1893 TPCNegEtaconfQoverSqrtM->AddCorrectionOnQnVector(
new AliQnCorrectionsQnVectorRecentering());
1895 AliQnCorrectionsQnVectorTwistAndRescale* twScaleNegEtaQoverSqrtM =
new AliQnCorrectionsQnVectorTwistAndRescale();
1896 twScaleNegEtaQoverSqrtM->SetApplyTwist(kTRUE);
1897 twScaleNegEtaQoverSqrtM->SetApplyRescale(kFALSE);
1898 twScaleNegEtaQoverSqrtM->SetTwistAndRescaleMethod(
1899 AliQnCorrectionsQnVectorTwistAndRescale::TWRESCALE_doubleHarmonic);
1900 TPCNegEtaconfQoverSqrtM->AddCorrectionOnQnVector(twScaleNegEtaQoverSqrtM);
1903 isESD = mgr->GetInputEventHandler()->IsA() == AliESDInputHandler::Class();
1904 AliQnCorrectionsCutsSet* cutsTPCNegEtaQoverSqrtM =
new AliQnCorrectionsCutsSet();
1906 cutsTPCNegEtaQoverSqrtM->Add(
1907 new AliQnCorrectionsCutWithin(AliQnCorrectionsVarManagerTask::kFilterBitMask768, 0.5, 1.5));
1908 cutsTPCNegEtaQoverSqrtM->Add(
new AliQnCorrectionsCutWithin(AliQnCorrectionsVarManagerTask::kEta, -0.8, 0.));
1911 Bool_t UseTPConlyTracks = kFALSE;
1912 task->SetUseTPCStandaloneTracks(UseTPConlyTracks);
1913 if (UseTPConlyTracks) {
1914 cutsTPCNegEtaQoverSqrtM->Add(
1915 new AliQnCorrectionsCutWithin(AliQnCorrectionsVarManagerTask::kDcaXY, -3.0, 3.0));
1916 cutsTPCNegEtaQoverSqrtM->Add(
1917 new AliQnCorrectionsCutWithin(AliQnCorrectionsVarManagerTask::kDcaZ, -3.0, 3.0));
1918 cutsTPCNegEtaQoverSqrtM->Add(
new AliQnCorrectionsCutWithin(AliQnCorrectionsVarManagerTask::kEta, -0.8, 0.));
1920 cutsTPCNegEtaQoverSqrtM->Add(
1921 new AliQnCorrectionsCutWithin(AliQnCorrectionsVarManagerTask::kTPCnclsIter1, 70.0, 161.0));
1922 cutsTPCNegEtaQoverSqrtM->Add(
1923 new AliQnCorrectionsCutWithin(AliQnCorrectionsVarManagerTask::kTPCchi2Iter1, 0.2, 4.0));
1925 cutsTPCNegEtaQoverSqrtM->Add(
1926 new AliQnCorrectionsCutWithin(AliQnCorrectionsVarManagerTask::kDcaXY, -0.3, 0.3));
1927 cutsTPCNegEtaQoverSqrtM->Add(
1928 new AliQnCorrectionsCutWithin(AliQnCorrectionsVarManagerTask::kDcaZ, -0.3, 0.3));
1929 cutsTPCNegEtaQoverSqrtM->Add(
new AliQnCorrectionsCutWithin(AliQnCorrectionsVarManagerTask::kEta, -0.8, 0.));
1931 cutsTPCNegEtaQoverSqrtM->Add(
1932 new AliQnCorrectionsCutWithin(AliQnCorrectionsVarManagerTask::kTPCncls, 70.0, 161.0));
1933 cutsTPCNegEtaQoverSqrtM->Add(
1934 new AliQnCorrectionsCutWithin(AliQnCorrectionsVarManagerTask::kTPCchi2, 0.2, 4.0));
1937 TPCNegEtaconfQoverSqrtM->SetCuts(cutsTPCNegEtaQoverSqrtM);
1940 TPC->AddDetectorConfiguration(TPCNegEtaconfQoverSqrtM);
1943 AliQnCorrectionsDetectorConfigurationTracks* TPCPosEtaconfQoverSqrtM =
1944 new AliQnCorrectionsDetectorConfigurationTracks(
"TPCPosEtaQoverSqrtM", CorrEventClasses,
1947 TPCPosEtaconfQoverSqrtM->SetQVectorNormalizationMethod(AliQnCorrectionsQnVector::QVNORM_QoverSqrtM);
1950 TPCPosEtaconfQoverSqrtM->AddCorrectionOnQnVector(
new AliQnCorrectionsQnVectorRecentering());
1952 AliQnCorrectionsQnVectorTwistAndRescale* twScalePosEtaQoverSqrtM =
new AliQnCorrectionsQnVectorTwistAndRescale();
1953 twScalePosEtaQoverSqrtM->SetApplyTwist(kTRUE);
1954 twScalePosEtaQoverSqrtM->SetApplyRescale(kFALSE);
1955 twScalePosEtaQoverSqrtM->SetTwistAndRescaleMethod(
1956 AliQnCorrectionsQnVectorTwistAndRescale::TWRESCALE_doubleHarmonic);
1957 TPCPosEtaconfQoverSqrtM->AddCorrectionOnQnVector(twScalePosEtaQoverSqrtM);
1960 isESD = mgr->GetInputEventHandler()->IsA() == AliESDInputHandler::Class();
1961 AliQnCorrectionsCutsSet* cutsTPCPosEtaQoverSqrtM =
new AliQnCorrectionsCutsSet();
1963 cutsTPCPosEtaQoverSqrtM->Add(
1964 new AliQnCorrectionsCutWithin(AliQnCorrectionsVarManagerTask::kFilterBitMask768, 0.5, 1.5));
1965 cutsTPCPosEtaQoverSqrtM->Add(
new AliQnCorrectionsCutWithin(AliQnCorrectionsVarManagerTask::kEta, 0., 0.8));
1968 Bool_t UseTPConlyTracks = kFALSE;
1969 task->SetUseTPCStandaloneTracks(UseTPConlyTracks);
1970 if (UseTPConlyTracks) {
1971 cutsTPCPosEtaQoverSqrtM->Add(
1972 new AliQnCorrectionsCutWithin(AliQnCorrectionsVarManagerTask::kDcaXY, -3.0, 3.0));
1973 cutsTPCPosEtaQoverSqrtM->Add(
1974 new AliQnCorrectionsCutWithin(AliQnCorrectionsVarManagerTask::kDcaZ, -3.0, 3.0));
1975 cutsTPCPosEtaQoverSqrtM->Add(
new AliQnCorrectionsCutWithin(AliQnCorrectionsVarManagerTask::kEta, 0., 0.8));
1977 cutsTPCPosEtaQoverSqrtM->Add(
1978 new AliQnCorrectionsCutWithin(AliQnCorrectionsVarManagerTask::kTPCnclsIter1, 70.0, 161.0));
1979 cutsTPCPosEtaQoverSqrtM->Add(
1980 new AliQnCorrectionsCutWithin(AliQnCorrectionsVarManagerTask::kTPCchi2Iter1, 0.2, 4.0));
1982 cutsTPCPosEtaQoverSqrtM->Add(
1983 new AliQnCorrectionsCutWithin(AliQnCorrectionsVarManagerTask::kDcaXY, -0.3, 0.3));
1984 cutsTPCPosEtaQoverSqrtM->Add(
1985 new AliQnCorrectionsCutWithin(AliQnCorrectionsVarManagerTask::kDcaZ, -0.3, 0.3));
1986 cutsTPCPosEtaQoverSqrtM->Add(
new AliQnCorrectionsCutWithin(AliQnCorrectionsVarManagerTask::kEta, 0., 0.8));
1988 cutsTPCPosEtaQoverSqrtM->Add(
1989 new AliQnCorrectionsCutWithin(AliQnCorrectionsVarManagerTask::kTPCncls, 70.0, 161.0));
1990 cutsTPCPosEtaQoverSqrtM->Add(
1991 new AliQnCorrectionsCutWithin(AliQnCorrectionsVarManagerTask::kTPCchi2, 0.2, 4.0));
1994 TPCPosEtaconfQoverSqrtM->SetCuts(cutsTPCPosEtaQoverSqrtM);
1997 TPC->AddDetectorConfiguration(TPCPosEtaconfQoverSqrtM);
2000 QnManager->AddDetector(TPC);
2007 AliQnCorrectionsVarManagerTask::Variables varForEventMultiplicity)
2014 const Int_t nSPDdim = 2;
2015 AliQnCorrectionsEventClassVariablesSet* CorrEventClasses =
new AliQnCorrectionsEventClassVariablesSet(nSPDdim);
2016 Double_t VtxZbinning[][2] = { { -10.0, 4 }, { -7.0, 1 }, { 7.0, 8 }, { 10.0, 1 } };
2017 Double_t Ctbinning[][2] = { { 0.0, 2 }, { 100.0, 100 } };
2018 CorrEventClasses->Add(
new AliQnCorrectionsEventClassVariable(
2019 AliQnCorrectionsVarManagerTask::kVtxZ, task->VarName(AliQnCorrectionsVarManagerTask::kVtxZ), VtxZbinning));
2020 CorrEventClasses->Add(
new AliQnCorrectionsEventClassVariable(
2021 varForEventMultiplicity, Form(
"Centrality (%s)", task->VarName(varForEventMultiplicity)), Ctbinning));
2025 AliQnCorrectionsDetector* SPD =
new AliQnCorrectionsDetector(
"SPD", AliQnCorrectionsVarManagerTask::kSPD);
2028 AliQnCorrectionsDetectorConfigurationTracks* SPDconf =
new AliQnCorrectionsDetectorConfigurationTracks(
2029 "SPD", CorrEventClasses, 4);
2031 SPDconf->SetQVectorNormalizationMethod(AliQnCorrectionsQnVector::QVNORM_QoverM);
2034 SPDconf->AddCorrectionOnQnVector(
new AliQnCorrectionsQnVectorRecentering());
2036 AliQnCorrectionsQnVectorTwistAndRescale* twScale =
new AliQnCorrectionsQnVectorTwistAndRescale();
2037 twScale->SetApplyTwist(kTRUE);
2038 twScale->SetApplyRescale(kFALSE);
2039 twScale->SetTwistAndRescaleMethod(AliQnCorrectionsQnVectorTwistAndRescale::TWRESCALE_doubleHarmonic);
2040 SPDconf->AddCorrectionOnQnVector(twScale);
2043 SPD->AddDetectorConfiguration(SPDconf);
2046 QnManager->AddDetector(SPD);
2053 AliQnCorrectionsVarManagerTask::Variables varForEventMultiplicity)
2057 Bool_t TZEROchannels[2][24];
2058 for (
Int_t iv0 = 0; iv0 < 2; iv0++)
2059 for (
Int_t ich = 0; ich < 24; ich++)
2060 TZEROchannels[iv0][ich] = kFALSE;
2062 for (
Int_t ich = 12; ich < 24; ich++)
2063 TZEROchannels[0][ich] = kTRUE;
2064 for (
Int_t ich = 0; ich < 12; ich++)
2065 TZEROchannels[1][ich] = kTRUE;
2067 Int_t channelGroups[24];
2068 for (
Int_t ich = 0; ich < 24; ich++)
2069 channelGroups[ich] =
Int_t(ich / 12);
2074 const Int_t nTZEROdim = 2;
2075 AliQnCorrectionsEventClassVariablesSet* CorrEventClasses =
new AliQnCorrectionsEventClassVariablesSet(nTZEROdim);
2076 Double_t VtxZbinning[][2] = { { -10.0, 4 }, { -7.0, 1 }, { 7.0, 8 }, { 10.0, 1 } };
2077 Double_t Ctbinning[][2] = { { 0.0, 2 }, { 100.0, 100 } };
2078 CorrEventClasses->Add(
new AliQnCorrectionsEventClassVariable(
2079 AliQnCorrectionsVarManagerTask::kVtxZ, task->VarName(AliQnCorrectionsVarManagerTask::kVtxZ), VtxZbinning));
2080 CorrEventClasses->Add(
new AliQnCorrectionsEventClassVariable(
2081 varForEventMultiplicity, Form(
"Centrality (%s)", task->VarName(varForEventMultiplicity)), Ctbinning));
2085 AliQnCorrectionsDetector* TZERO =
new AliQnCorrectionsDetector(
"TZERO", AliQnCorrectionsVarManagerTask::kTZERO);
2088 AliQnCorrectionsDetectorConfigurationChannels* TZEROAconf =
2089 new AliQnCorrectionsDetectorConfigurationChannels(
"TZEROA", CorrEventClasses, 24,
2091 TZEROAconf->SetChannelsScheme(TZEROchannels[0], channelGroups);
2093 TZEROAconf->SetQVectorNormalizationMethod(AliQnCorrectionsQnVector::QVNORM_QoverM);
2095 AliQnCorrectionsInputGainEqualization* eqA =
new AliQnCorrectionsInputGainEqualization();
2096 eqA->SetEqualizationMethod(AliQnCorrectionsInputGainEqualization::GEQUAL_averageEqualization);
2099 eqA->SetUseChannelGroupsWeights(kFALSE);
2100 TZEROAconf->AddCorrectionOnInputData(eqA);
2103 TZEROAconf->AddCorrectionOnQnVector(
new AliQnCorrectionsQnVectorRecentering());
2105 AliQnCorrectionsQnVectorAlignment* alignA =
new AliQnCorrectionsQnVectorAlignment();
2106 alignA->SetHarmonicNumberForAlignment(2);
2107 alignA->SetReferenceConfigurationForAlignment(
"TPC");
2108 TZEROAconf->AddCorrectionOnQnVector(alignA);
2110 TZEROAconf->SetQACentralityVar(varForEventMultiplicity);
2111 TZEROAconf->SetQAMultiplicityAxis(100, 0.0, 150.0);
2113 AliQnCorrectionsQnVectorTwistAndRescale* twScaleA =
new AliQnCorrectionsQnVectorTwistAndRescale();
2114 twScaleA->SetApplyTwist(kTRUE);
2115 twScaleA->SetApplyRescale(kTRUE);
2116 twScaleA->SetTwistAndRescaleMethod(AliQnCorrectionsQnVectorTwistAndRescale::TWRESCALE_correlations);
2117 twScaleA->SetReferenceConfigurationsForTwistAndRescale(
"TPC",
"TZEROC");
2119 TZEROAconf->AddCorrectionOnQnVector(twScaleA);
2122 TZERO->AddDetectorConfiguration(TZEROAconf);
2125 AliQnCorrectionsDetectorConfigurationChannels* TZEROCconf =
2126 new AliQnCorrectionsDetectorConfigurationChannels(
"TZEROC", CorrEventClasses, 24,
2128 TZEROCconf->SetChannelsScheme(TZEROchannels[1], channelGroups);
2130 TZEROCconf->SetQVectorNormalizationMethod(AliQnCorrectionsQnVector::QVNORM_QoverM);
2132 AliQnCorrectionsInputGainEqualization* eqC =
new AliQnCorrectionsInputGainEqualization();
2133 eqC->SetEqualizationMethod(AliQnCorrectionsInputGainEqualization::GEQUAL_averageEqualization);
2136 eqC->SetUseChannelGroupsWeights(kFALSE);
2137 TZEROCconf->AddCorrectionOnInputData(eqC);
2140 TZEROCconf->AddCorrectionOnQnVector(
new AliQnCorrectionsQnVectorRecentering());
2142 AliQnCorrectionsQnVectorAlignment* alignC =
new AliQnCorrectionsQnVectorAlignment();
2143 alignC->SetHarmonicNumberForAlignment(2);
2144 alignC->SetReferenceConfigurationForAlignment(
"TPC");
2145 TZEROCconf->AddCorrectionOnQnVector(alignC);
2147 TZEROCconf->SetQACentralityVar(varForEventMultiplicity);
2148 TZEROCconf->SetQAMultiplicityAxis(100, 0.0, 150.0);
2150 AliQnCorrectionsQnVectorTwistAndRescale* twScaleC =
new AliQnCorrectionsQnVectorTwistAndRescale();
2151 twScaleC->SetApplyTwist(kTRUE);
2152 twScaleC->SetApplyRescale(kTRUE);
2153 twScaleC->SetTwistAndRescaleMethod(AliQnCorrectionsQnVectorTwistAndRescale::TWRESCALE_correlations);
2154 twScaleC->SetReferenceConfigurationsForTwistAndRescale(
"TPC",
"TZEROA");
2156 TZEROCconf->AddCorrectionOnQnVector(twScaleC);
2159 TZERO->AddDetectorConfiguration(TZEROCconf);
2162 QnManager->AddDetector(TZERO);
2169 AliQnCorrectionsVarManagerTask::Variables varForEventMultiplicity)
2173 Bool_t ZDCchannels[2][10];
2174 for (
Int_t iv0 = 0; iv0 < 2; iv0++)
2175 for (
Int_t ich = 0; ich < 10; ich++)
2176 ZDCchannels[iv0][ich] = kFALSE;
2178 for (
Int_t ich = 6; ich < 10; ich++)
2179 ZDCchannels[0][ich] = kTRUE;
2180 for (
Int_t ich = 1; ich < 5; ich++)
2181 ZDCchannels[1][ich] = kTRUE;
2186 const Int_t nZDCdim = 3;
2187 AliQnCorrectionsEventClassVariablesSet* CorrEventClasses =
new AliQnCorrectionsEventClassVariablesSet(nZDCdim);
2188 Double_t VtxXbinning[][2] = { { -0.3, 2 }, { 0.3, 10 } };
2189 Double_t VtxYbinning[][2] = { { -0.3, 2 }, { 0.3, 10 } };
2190 Double_t Ctbinning[][2] = { { 0.0, 2 }, { 100.0, 100 } };
2191 CorrEventClasses->Add(
new AliQnCorrectionsEventClassVariable(
2192 AliQnCorrectionsVarManagerTask::kVtxX, task->VarName(AliQnCorrectionsVarManagerTask::kVtxX), VtxXbinning));
2193 CorrEventClasses->Add(
new AliQnCorrectionsEventClassVariable(
2194 AliQnCorrectionsVarManagerTask::kVtxY, task->VarName(AliQnCorrectionsVarManagerTask::kVtxY), VtxYbinning));
2195 CorrEventClasses->Add(
new AliQnCorrectionsEventClassVariable(
2196 varForEventMultiplicity, Form(
"Centrality (%s)", task->VarName(varForEventMultiplicity)), Ctbinning));
2200 AliQnCorrectionsDetector* ZDC =
new AliQnCorrectionsDetector(
"ZDC", AliQnCorrectionsVarManagerTask::kZDC);
2203 AliQnCorrectionsDetectorConfigurationChannels* ZDCAconf =
2204 new AliQnCorrectionsDetectorConfigurationChannels(
"ZDCA", CorrEventClasses, 10,
2206 ZDCAconf->SetChannelsScheme(ZDCchannels[0], NULL );
2208 ZDCAconf->SetQVectorNormalizationMethod(AliQnCorrectionsQnVector::QVNORM_QoverM);
2211 ZDCAconf->AddCorrectionOnQnVector(
new AliQnCorrectionsQnVectorRecentering());
2214 ZDC->AddDetectorConfiguration(ZDCAconf);
2217 AliQnCorrectionsDetectorConfigurationChannels* ZDCCconf =
2218 new AliQnCorrectionsDetectorConfigurationChannels(
"ZDCC", CorrEventClasses, 10,
2220 ZDCCconf->SetChannelsScheme(ZDCchannels[1], NULL );
2222 ZDCCconf->SetQVectorNormalizationMethod(AliQnCorrectionsQnVector::QVNORM_QoverM);
2225 ZDCCconf->AddCorrectionOnQnVector(
new AliQnCorrectionsQnVectorRecentering());
2228 ZDC->AddDetectorConfiguration(ZDCCconf);
2231 QnManager->AddDetector(ZDC);
2238 AliQnCorrectionsVarManagerTask::Variables varForEventMultiplicity)
2241 Bool_t isESD = mgr->GetInputEventHandler()->IsA() == AliESDInputHandler::Class();
2243 AliFatalGeneral(
"PWGJE::EMCALJetTasks::FlowVectorCorrections::AddFMD",
2244 "ESD analysis is not supported for the FMD.");
2247 Bool_t FMDchannels[2][4000];
2248 for (
Int_t iv0 = 0; iv0 < 2; iv0++)
2249 for (
Int_t ich = 0; ich < 4000; ich++)
2250 FMDchannels[iv0][ich] = kFALSE;
2252 for (
Int_t ich = 2000; ich < 4000; ich++)
2253 FMDchannels[0][ich] = kTRUE;
2254 for (
Int_t ich = 0; ich < 2000; ich++)
2255 FMDchannels[1][ich] = kTRUE;
2260 const Int_t nFMDdim = 2;
2261 AliQnCorrectionsEventClassVariablesSet* CorrEventClasses =
new AliQnCorrectionsEventClassVariablesSet(nFMDdim);
2262 Double_t VtxZbinning[][2] = { { -10.0, 4 }, { -7.0, 1 }, { 7.0, 8 }, { 10.0, 1 } };
2263 Double_t Ctbinning[][2] = { { 0.0, 2 }, { 100.0, 100 } };
2264 CorrEventClasses->Add(
new AliQnCorrectionsEventClassVariable(
2265 AliQnCorrectionsVarManagerTask::kVtxZ, task->VarName(AliQnCorrectionsVarManagerTask::kVtxZ), VtxZbinning));
2266 CorrEventClasses->Add(
new AliQnCorrectionsEventClassVariable(
2267 varForEventMultiplicity, Form(
"Centrality (%s)", task->VarName(varForEventMultiplicity)), Ctbinning));
2271 AliQnCorrectionsDetector* FMD =
new AliQnCorrectionsDetector(
"FMD", AliQnCorrectionsVarManagerTask::kFMD);
2274 AliQnCorrectionsDetectorConfigurationChannels* FMDAconf =
2275 new AliQnCorrectionsDetectorConfigurationChannels(
"FMDA", CorrEventClasses, 4000,
2277 FMDAconf->SetChannelsScheme(FMDchannels[0], NULL );
2279 FMDAconf->SetQVectorNormalizationMethod(AliQnCorrectionsQnVector::QVNORM_QoverM);
2282 FMDAconf->AddCorrectionOnQnVector(
new AliQnCorrectionsQnVectorRecentering());
2284 AliQnCorrectionsQnVectorAlignment* alignA =
new AliQnCorrectionsQnVectorAlignment();
2285 alignA->SetHarmonicNumberForAlignment(2);
2286 alignA->SetReferenceConfigurationForAlignment(
"TPC");
2287 FMDAconf->AddCorrectionOnQnVector(alignA);
2289 AliQnCorrectionsQnVectorTwistAndRescale* twScaleA =
new AliQnCorrectionsQnVectorTwistAndRescale();
2290 twScaleA->SetApplyTwist(kTRUE);
2291 twScaleA->SetApplyRescale(kTRUE);
2292 twScaleA->SetTwistAndRescaleMethod(AliQnCorrectionsQnVectorTwistAndRescale::TWRESCALE_correlations);
2293 twScaleA->SetReferenceConfigurationsForTwistAndRescale(
"TPC",
"FMDC");
2295 FMDAconf->AddCorrectionOnQnVector(twScaleA);
2298 FMD->AddDetectorConfiguration(FMDAconf);
2301 AliQnCorrectionsDetectorConfigurationChannels* FMDCconf =
2302 new AliQnCorrectionsDetectorConfigurationChannels(
"FMDC", CorrEventClasses, 4000,
2304 FMDCconf->SetChannelsScheme(FMDchannels[1], NULL );
2306 FMDCconf->SetQVectorNormalizationMethod(AliQnCorrectionsQnVector::QVNORM_QoverM);
2309 FMDCconf->AddCorrectionOnQnVector(
new AliQnCorrectionsQnVectorRecentering());
2311 AliQnCorrectionsQnVectorAlignment* alignC =
new AliQnCorrectionsQnVectorAlignment();
2312 alignC->SetHarmonicNumberForAlignment(2);
2313 alignC->SetReferenceConfigurationForAlignment(
"TPC");
2314 FMDCconf->AddCorrectionOnQnVector(alignC);
2316 AliQnCorrectionsQnVectorTwistAndRescale* twScaleC =
new AliQnCorrectionsQnVectorTwistAndRescale();
2317 twScaleC->SetApplyTwist(kTRUE);
2318 twScaleC->SetApplyRescale(kTRUE);
2319 twScaleC->SetTwistAndRescaleMethod(AliQnCorrectionsQnVectorTwistAndRescale::TWRESCALE_correlations);
2320 twScaleC->SetReferenceConfigurationsForTwistAndRescale(
"TPC",
"FMDA");
2322 FMDCconf->AddCorrectionOnQnVector(twScaleC);
2325 FMD->AddDetectorConfiguration(FMDCconf);
2328 QnManager->AddDetector(FMD);
2335 AliQnCorrectionsVarManagerTask::Variables varForEventMultiplicity)
2340 const Int_t nNoOfDetectors = 3;
2341 const Int_t detectorNumber[] = { 1, 2, 3 };
2342 const Int_t nNoOfRings[] = { 1, 2, 2 };
2343 const Int_t ringNoOfSectors[] = { 20, 40 };
2344 const Int_t nTotalNoOfChannels =
2345 ringNoOfSectors[0] * 3 + ringNoOfSectors[1] * 2;
2348 const Int_t FMDCdetectorNumber = 3;
2349 Int_t nSectorId = 0;
2352 Bool_t FMDchannels[2][nTotalNoOfChannels];
2353 Int_t FMDchannelGroups[nTotalNoOfChannels];
2354 for (
Int_t i = 0; i < 2; i++)
2355 for (
Int_t c = 0;
c < nTotalNoOfChannels;
c++)
2356 FMDchannels[i][
c] = kFALSE;
2358 for (
Int_t detector = 0; detector < nNoOfDetectors; detector++) {
2359 for (
Int_t ring = 0; ring < nNoOfRings[detector]; ring++) {
2360 for (
Int_t sector = 0; sector < ringNoOfSectors[ring]; sector++) {
2361 FMDchannels[0][nSectorId] = ((detectorNumber[detector] != FMDCdetectorNumber) ? kTRUE : kFALSE);
2362 FMDchannels[1][nSectorId] = ((detectorNumber[detector] != FMDCdetectorNumber) ? kFALSE : kTRUE);
2363 FMDchannelGroups[nSectorId] = nRingId;
2373 const Int_t nFMDdim = 2;
2374 AliQnCorrectionsEventClassVariablesSet* CorrEventClasses =
new AliQnCorrectionsEventClassVariablesSet(nFMDdim);
2375 Double_t VtxZbinning[][2] = { { -10.0, 4 }, { -7.0, 1 }, { 7.0, 8 }, { 10.0, 1 } };
2376 Double_t Ctbinning[][2] = { { 0.0, 2 }, { 100.0, 100 } };
2377 CorrEventClasses->Add(
new AliQnCorrectionsEventClassVariable(
2378 AliQnCorrectionsVarManagerTask::kVtxZ, task->VarName(AliQnCorrectionsVarManagerTask::kVtxZ), VtxZbinning));
2379 CorrEventClasses->Add(
new AliQnCorrectionsEventClassVariable(
2380 varForEventMultiplicity, Form(
"Centrality (%s)", task->VarName(varForEventMultiplicity)), Ctbinning));
2383 AliQnCorrectionsCutsSet* cutFMDA =
new AliQnCorrectionsCutsSet();
2384 cutFMDA->Add(
new AliQnCorrectionsCutWithin(AliQnCorrectionsVarManagerTask::kFMDEta, 0.0, 6.0));
2386 AliQnCorrectionsCutsSet* cutFMDC =
new AliQnCorrectionsCutsSet();
2387 cutFMDC->Add(
new AliQnCorrectionsCutWithin(AliQnCorrectionsVarManagerTask::kFMDEta, -6.0, 0.0));
2390 AliQnCorrectionsDetector* FMDraw =
new AliQnCorrectionsDetector(
"FMDraw", AliQnCorrectionsVarManagerTask::kFMDraw);
2393 AliQnCorrectionsDetectorConfigurationChannels* FMDArawconf =
new AliQnCorrectionsDetectorConfigurationChannels(
2394 "FMDAraw", CorrEventClasses, nTotalNoOfChannels, 4);
2395 FMDArawconf->SetChannelsScheme(FMDchannels[0], FMDchannelGroups);
2397 FMDArawconf->SetQVectorNormalizationMethod(AliQnCorrectionsQnVector::QVNORM_QoverM);
2399 AliQnCorrectionsInputGainEqualization* eqA =
new AliQnCorrectionsInputGainEqualization();
2400 eqA->SetEqualizationMethod(AliQnCorrectionsInputGainEqualization::GEQUAL_averageEqualization);
2403 eqA->SetUseChannelGroupsWeights(kTRUE);
2404 FMDArawconf->AddCorrectionOnInputData(eqA);
2407 FMDArawconf->AddCorrectionOnQnVector(
new AliQnCorrectionsQnVectorRecentering());
2409 AliQnCorrectionsQnVectorAlignment* alignA =
new AliQnCorrectionsQnVectorAlignment();
2410 alignA->SetHarmonicNumberForAlignment(2);
2411 alignA->SetReferenceConfigurationForAlignment(
"TPC");
2412 FMDArawconf->AddCorrectionOnQnVector(alignA);
2414 FMDArawconf->SetCuts(cutFMDA);
2417 FMDraw->AddDetectorConfiguration(FMDArawconf);
2420 AliQnCorrectionsDetectorConfigurationChannels* FMDCrawconf =
new AliQnCorrectionsDetectorConfigurationChannels(
2421 "FMDCraw", CorrEventClasses, nTotalNoOfChannels, 4);
2422 FMDCrawconf->SetChannelsScheme(FMDchannels[1], FMDchannelGroups);
2424 FMDCrawconf->SetQVectorNormalizationMethod(AliQnCorrectionsQnVector::QVNORM_QoverM);
2426 AliQnCorrectionsInputGainEqualization* eqC =
new AliQnCorrectionsInputGainEqualization();
2427 eqC->SetEqualizationMethod(AliQnCorrectionsInputGainEqualization::GEQUAL_averageEqualization);
2430 eqC->SetUseChannelGroupsWeights(kTRUE);
2431 FMDCrawconf->AddCorrectionOnInputData(eqC);
2434 FMDCrawconf->AddCorrectionOnQnVector(
new AliQnCorrectionsQnVectorRecentering());
2436 AliQnCorrectionsQnVectorAlignment* alignC =
new AliQnCorrectionsQnVectorAlignment();
2437 alignC->SetHarmonicNumberForAlignment(2);
2438 alignC->SetReferenceConfigurationForAlignment(
"TPC");
2439 FMDCrawconf->AddCorrectionOnQnVector(alignC);
2441 FMDCrawconf->SetCuts(cutFMDC);
2444 FMDraw->AddDetectorConfiguration(FMDCrawconf);
2447 QnManager->AddDetector(FMDraw);
2459 const Char_t* histClasses = histClass.Data();
2461 AliInfoGeneralStream(
"PWGJE::EMCALJetTasks::FlowVectorCorrections::DefineHistograms")
2462 <<
"Defining histograms ...\n";
2463 AliInfoGeneralStream(
"PWGJE::EMCALJetTasks::FlowVectorCorrections::DefineHistograms")
2464 <<
"histogram classes: " << histClass <<
"\n";
2468 TString classesStr(histClasses);
2469 TObjArray* arr = classesStr.Tokenize(
";");
2471 const Int_t kNRunBins = 3000;
2472 Double_t runHistRange[2] = { 137000., 140000. };
2474 for (
Int_t iclass = 0; iclass < arr->GetEntries(); ++iclass) {
2475 TString classStr = arr->At(iclass)->GetName();
2476 AliInfoGeneralStream(
"PWGJE::EMCALJetTasks::FlowVectorCorrections::DefineHistograms")
2477 <<
"hist class: " << classStr.Data() <<
"\n";
2480 if (classStr.Contains(
"Event")) {
2481 histos->AddHistClass(classStr.Data());
2482 histos->AddHistogram(classStr.Data(),
"RunNo",
"Run numbers;Run", kFALSE, kNRunBins, runHistRange[0],
2483 runHistRange[1], AliQnCorrectionsVarManagerTask::kRunNo);
2484 histos->AddHistogram(classStr.Data(),
"BC",
"Bunch crossing;BC", kFALSE, 3000, 0., 3000.,
2485 AliQnCorrectionsVarManagerTask::kBC);
2486 histos->AddHistogram(classStr.Data(),
"IsPhysicsSelection",
"Physics selection flag;;", kFALSE, 2, -0.5,
2487 1.5, AliQnCorrectionsVarManagerTask::kIsPhysicsSelection, 0, 0.0, 0.0,
2488 AliQnCorrectionsVarManagerTask::kNothing, 0, 0.0, 0.0,
2489 AliQnCorrectionsVarManagerTask::kNothing,
"off;on");
2491 histos->AddHistogram(classStr.Data(),
"VtxZ",
"Vtx Z;vtx Z (cm)", kFALSE, 300, -30.0, 30.0,
2492 AliQnCorrectionsVarManagerTask::kVtxZ);
2495 histos->AddHistogram(classStr.Data(),
"VtxX",
"Vtx X;vtx X (cm)", kFALSE, 300, -1., 1.,
2496 AliQnCorrectionsVarManagerTask::kVtxX);
2497 histos->AddHistogram(classStr.Data(),
"VtxY",
"Vtx Y;vtx Y (cm)", kFALSE, 300, -1., 1.,
2498 AliQnCorrectionsVarManagerTask::kVtxY);
2500 histos->AddHistogram(
2501 classStr.Data(),
"CentVZEROvsMultPVZERO",
2502 "Multiplicity percentile (VZERO);multiplicity VZERO (percents);centrality VZERO (percents)", kFALSE, 100,
2503 0.0, 100.0, AliQnCorrectionsVarManagerTask::kVZEROMultPercentile, 100, 0.0, 100.0,
2504 AliQnCorrectionsVarManagerTask::kCentVZERO);
2505 histos->AddHistogram(classStr.Data(),
"CentVZEROvsCentSPD",
2506 "Centrality(VZERO);centrality VZERO (percents);centrality SPD (percents)", kFALSE, 100,
2507 0.0, 100.0, AliQnCorrectionsVarManagerTask::kCentVZERO, 100, 0.0, 100.0,
2508 AliQnCorrectionsVarManagerTask::kCentSPD);
2509 histos->AddHistogram(classStr.Data(),
"CentTPCvsCentSPD",
2510 "Centrality(TPC);centrality TPC (percents);centrality SPD (percents)", kFALSE, 100,
2511 0.0, 100.0, AliQnCorrectionsVarManagerTask::kCentTPC, 100, 0.0, 100.0,
2512 AliQnCorrectionsVarManagerTask::kCentSPD);
2513 histos->AddHistogram(classStr.Data(),
"CentTPCvsCentVZERO",
2514 "Centrality(TPC);centrality TPC (percents);centrality VZERO (percents)", kFALSE, 100,
2515 0.0, 100.0, AliQnCorrectionsVarManagerTask::kCentTPC, 100, 0.0, 100.0,
2516 AliQnCorrectionsVarManagerTask::kCentVZERO);
2517 histos->AddHistogram(classStr.Data(),
"CentTPCvsCentZDC",
2518 "Centrality(TPC);centrality TPC (percents);centrality ZDC (percents)", kFALSE, 100,
2519 0.0, 100.0, AliQnCorrectionsVarManagerTask::kCentTPC, 100, 0.0, 100.0,
2520 AliQnCorrectionsVarManagerTask::kCentZDC);
2521 histos->AddHistogram(classStr.Data(),
"CentZDCvsCentVZERO",
2522 "Centrality(ZDC);centrality ZDC (percents);centrality VZERO (percents)", kFALSE, 100,
2523 0.0, 100.0, AliQnCorrectionsVarManagerTask::kCentZDC, 100, 0.0, 100.0,
2524 AliQnCorrectionsVarManagerTask::kCentVZERO);
2525 histos->AddHistogram(classStr.Data(),
"CentZDCvsCentSPD",
2526 "Centrality(ZDC);centrality ZDC (percents);centrality SPD (percents)", kFALSE, 100,
2527 0.0, 100.0, AliQnCorrectionsVarManagerTask::kCentZDC, 100, 0.0, 100.0,
2528 AliQnCorrectionsVarManagerTask::kCentSPD);
2530 histos->AddHistogram(classStr.Data(),
"MultVZEROvsCentVZERO",
2531 "Multiplicity;multiplicity VZERO;VZERO centrality", kFALSE, 100, 0.0, 32000.0,
2532 AliQnCorrectionsVarManagerTask::kVZEROTotalMult, 100, 0., 100.,
2533 AliQnCorrectionsVarManagerTask::kCentVZERO);
2534 histos->AddHistogram(classStr.Data(),
"MultSPDvsCentPSD",
"Multiplicity;SPD tracklets;SPD centrality",
2535 kFALSE, 100, 0.0, 3000.0, AliQnCorrectionsVarManagerTask::kSPDntracklets, 100, 0.,
2536 100., AliQnCorrectionsVarManagerTask::kCentSPD);
2537 histos->AddHistogram(classStr.Data(),
"MultTPCvsCentSPD",
"Multiplicity;TPC selected tracks;TPC centrality",
2538 kFALSE, 100, 0.0, 3500.0, AliQnCorrectionsVarManagerTask::kNtracksSelected, 100, 0.,
2539 100., AliQnCorrectionsVarManagerTask::kCentTPC);
2540 histos->AddHistogram(classStr.Data(),
"MultZDCvsCentZDC",
"Multiplicity;multiplicity ZDC;ZDC centrality",
2541 kFALSE, 100, 0.0, 300000.0, AliQnCorrectionsVarManagerTask::kZDCTotalEnergy, 100, 0.,
2542 100., AliQnCorrectionsVarManagerTask::kCentZDC);
2544 histos->AddHistogram(classStr.Data(),
"MultTPCvsMultVZERO",
"Multiplicity;tracks TPC;multiplicity VZERO",
2545 kFALSE, 100, 0.0, 3500.0, AliQnCorrectionsVarManagerTask::kNtracksSelected, 100, 0.0,
2546 32000.0, AliQnCorrectionsVarManagerTask::kVZEROTotalMult);
2547 histos->AddHistogram(classStr.Data(),
"MultTPCvsMultSPD",
"Multiplicity;tracklets SPD;tracks TPC", kFALSE,
2548 100, 0.0, 3500.0, AliQnCorrectionsVarManagerTask::kNtracksSelected, 100, 0.0, 3000.0,
2549 AliQnCorrectionsVarManagerTask::kSPDntracklets);
2550 histos->AddHistogram(classStr.Data(),
"MultSPDvsMultVZERO",
"Multiplicity;tracklets SPD;multiplicity VZERO",
2551 kFALSE, 100, 0.0, 32000.0, AliQnCorrectionsVarManagerTask::kVZEROTotalMult, 100, 0.0,
2552 3000.0, AliQnCorrectionsVarManagerTask::kSPDntracklets);
2553 histos->AddHistogram(classStr.Data(),
"MultTPCvsMultZDC",
"Multiplicity;tracks TPC;energy ZDC", kFALSE, 100,
2554 0.0, 3500.0, AliQnCorrectionsVarManagerTask::kNtracksSelected, 100, 0.0, 300000.0,
2555 AliQnCorrectionsVarManagerTask::kZDCTotalEnergy);
2556 histos->AddHistogram(classStr.Data(),
"MultVZEROvsMultZDC",
"Multiplicity;multiplicity VZERO;energy ZDC",
2557 kFALSE, 100, 0.0, 32000.0, AliQnCorrectionsVarManagerTask::kVZEROTotalMult, 100, 0.0,
2558 300000.0, AliQnCorrectionsVarManagerTask::kZDCTotalEnergy);
2559 histos->AddHistogram(classStr.Data(),
"MultSPDvsMultZDC",
"Multiplicity;tracklets SPD;energy ZDC", kFALSE,
2560 100, 0.0, 3000.0, AliQnCorrectionsVarManagerTask::kSPDntracklets, 100, 0.0, 300000.0,
2561 AliQnCorrectionsVarManagerTask::kZDCTotalEnergy);
2563 histos->AddHistogram(classStr.Data(),
"MultVZERO",
"Multiplicity;multiplicity VZERO", kFALSE, 320, 0.0,
2564 25000.0, AliQnCorrectionsVarManagerTask::kVZEROTotalMult);
2565 histos->AddHistogram(classStr.Data(),
"MultVZEROA",
"Multiplicity;multiplicity VZEROA", kFALSE, 250, 0.0,
2566 9500.0, AliQnCorrectionsVarManagerTask::kVZEROATotalMult);
2567 histos->AddHistogram(classStr.Data(),
"MultVZEROC",
"Multiplicity;multiplicity VZEROC", kFALSE, 250, 0.0,
2568 16000.0, AliQnCorrectionsVarManagerTask::kVZEROCTotalMult);
2569 histos->AddHistogram(classStr.Data(),
"MultZDC",
"Multiplicity;multiplicity ZDC", kFALSE, 200, 0.0,
2570 300000.0, AliQnCorrectionsVarManagerTask::kZDCTotalEnergy);
2571 histos->AddHistogram(classStr.Data(),
"MultZDCA",
"Multiplicity;multiplicity ZDCA", kFALSE, 200, 0.0,
2572 150000.0, AliQnCorrectionsVarManagerTask::kZDCATotalEnergy);
2573 histos->AddHistogram(classStr.Data(),
"MultZDCC",
"Multiplicity;multiplicity ZDCC", kFALSE, 200, 0.0,
2574 150000.0, AliQnCorrectionsVarManagerTask::kZDCCTotalEnergy);
2575 histos->AddHistogram(classStr.Data(),
"MultFMD1",
"Multiplicity;multiplicity FMD1", kFALSE, 300, 0.0,
2576 10000.0, AliQnCorrectionsVarManagerTask::kFMD1TotalMult);
2577 histos->AddHistogram(classStr.Data(),
"MultFMD2I",
"Multiplicity;multiplicity FMD2I", kFALSE, 300, 0.0,
2578 10000.0, AliQnCorrectionsVarManagerTask::kFMD2ITotalMult);
2579 histos->AddHistogram(classStr.Data(),
"MultFMD2O",
"Multiplicity;multiplicity FMD2O", kFALSE, 300, 0.0,
2580 10000.0, AliQnCorrectionsVarManagerTask::kFMD2OTotalMult);
2581 histos->AddHistogram(classStr.Data(),
"MultFMD3I",
"Multiplicity;multiplicity FMD3I", kFALSE, 300, 0.0,
2582 10000.0, AliQnCorrectionsVarManagerTask::kFMD3ITotalMult);
2583 histos->AddHistogram(classStr.Data(),
"MultFMD3O",
"Multiplicity;multiplicity FMD3O", kFALSE, 300, 0.0,
2584 10000.0, AliQnCorrectionsVarManagerTask::kFMD3OTotalMult);
2585 histos->AddHistogram(classStr.Data(),
"MultTZEROA",
"Multiplicity;multiplicity TZEROA", kFALSE, 300, 0.0,
2586 3000.0, AliQnCorrectionsVarManagerTask::kTZEROATotalMult);
2587 histos->AddHistogram(classStr.Data(),
"MultTZEROC",
"Multiplicity;multiplicity TZEROC", kFALSE, 300, 0.0,
2588 3000.0, AliQnCorrectionsVarManagerTask::kTZEROCTotalMult);
2590 histos->AddHistogram(classStr.Data(),
"MultPercentVZERO",
2591 "Multiplicity percentile (VZERO);multiplicity VZERO (percents)", kFALSE, 100, 0.0,
2592 100.0, AliQnCorrectionsVarManagerTask::kVZEROMultPercentile);
2593 histos->AddHistogram(classStr.Data(),
"CentVZERO",
"Centrality(VZERO);centrality VZERO (percents)", kFALSE,
2594 100, 0.0, 100.0, AliQnCorrectionsVarManagerTask::kCentVZERO);
2595 histos->AddHistogram(classStr.Data(),
"CentSPD",
"Centrality(SPD);centrality SPD (percents)", kFALSE, 100,
2596 0.0, 100.0, AliQnCorrectionsVarManagerTask::kCentSPD);
2597 histos->AddHistogram(classStr.Data(),
"CentTPC",
"Centrality(TPC);centrality TPC (percents)", kFALSE, 100,
2598 0.0, 100.0, AliQnCorrectionsVarManagerTask::kCentTPC);
2599 histos->AddHistogram(classStr.Data(),
"CentZDC",
"Centrality(ZDC);centrality ZDC (percents)", kFALSE, 100,
2600 0.0, 100.0, AliQnCorrectionsVarManagerTask::kCentZDC);
2602 histos->AddHistogram(classStr.Data(),
"CentQuality",
"Centrality quality;centrality quality", kFALSE, 100,
2603 -50.5, 49.5, AliQnCorrectionsVarManagerTask::kCentQuality);
2604 histos->AddHistogram(classStr.Data(),
"CentVZERO_Run_prof",
2605 "<Centrality(VZERO)> vs run;Run; centrality VZERO (%)", kTRUE, kNRunBins,
2606 runHistRange[0], runHistRange[1], AliQnCorrectionsVarManagerTask::kRunNo, 100, 0.0,
2607 100.0, AliQnCorrectionsVarManagerTask::kCentVZERO);
2608 histos->AddHistogram(classStr.Data(),
"CentSPD_Run_prof",
2609 "<Centrality(SPD)> vs run;Run; centrality SPD (%)", kTRUE, kNRunBins, runHistRange[0],
2610 runHistRange[1], AliQnCorrectionsVarManagerTask::kRunNo, 100, 0.0, 100.0,
2611 AliQnCorrectionsVarManagerTask::kCentSPD);
2612 histos->AddHistogram(classStr.Data(),
"CentTPC_Run_prof",
2613 "<Centrality(TPC)> vs run;Run; centrality TPC (%)", kTRUE, kNRunBins, runHistRange[0],
2614 runHistRange[1], AliQnCorrectionsVarManagerTask::kRunNo, 100, 0.0, 100.0,
2615 AliQnCorrectionsVarManagerTask::kCentTPC);
2616 histos->AddHistogram(classStr.Data(),
"CentZDC_Run_prof",
2617 "<Centrality(ZDC)> vs run;Run; centrality ZDC (%)", kTRUE, kNRunBins, runHistRange[0],
2618 runHistRange[1], AliQnCorrectionsVarManagerTask::kRunNo, 100, 0.0, 100.0,
2619 AliQnCorrectionsVarManagerTask::kCentZDC);
2621 histos->AddHistogram(classStr.Data(),
"NV0sTotal",
"Number of V0 candidates per event;# pairs", kFALSE,
2622 1000, 0., 30000., AliQnCorrectionsVarManagerTask::kNV0total);
2623 histos->AddHistogram(classStr.Data(),
"NV0sSelected",
"Number of selected V0 candidates per event;# pairs",
2624 kFALSE, 1000, 0., 10000., AliQnCorrectionsVarManagerTask::kNV0selected);
2625 histos->AddHistogram(classStr.Data(),
"NPairs",
"Number of candidates per event;# pairs", kFALSE, 5000, 0.,
2626 5000., AliQnCorrectionsVarManagerTask::kNdielectrons);
2627 histos->AddHistogram(classStr.Data(),
"NPairsSelected",
"Number of selected pairs per event; #pairs",
2628 kFALSE, 5000, 0., 5000., AliQnCorrectionsVarManagerTask::kNpairsSelected);
2629 histos->AddHistogram(classStr.Data(),
"NTracksTotal",
"Number of total tracks per event;# tracks", kFALSE,
2630 1000, 0., 30000., AliQnCorrectionsVarManagerTask::kNtracksTotal);
2631 histos->AddHistogram(classStr.Data(),
"NTracksSelected",
"Number of selected tracks per event;# tracks",
2632 kFALSE, 1000, 0., 30000., AliQnCorrectionsVarManagerTask::kNtracksSelected);
2633 histos->AddHistogram(classStr.Data(),
"SPDntracklets",
"SPD #tracklets; tracklets", kFALSE, 3000, -0.5,
2634 2999.5, AliQnCorrectionsVarManagerTask::kSPDntracklets);
2635 histos->AddHistogram(classStr.Data(),
"SPDnSingleClusters",
"SPD #single clusters; tracklets", kFALSE, 3000,
2636 -0.5, 2999.5, AliQnCorrectionsVarManagerTask::kSPDnSingleClusters);
2638 histos->AddHistogram(classStr.Data(),
"NV0total_Run_prof",
"<Number of total V0s> per run; Run; #tracks",
2639 kTRUE, kNRunBins, runHistRange[0], runHistRange[1],
2640 AliQnCorrectionsVarManagerTask::kRunNo, 100, 0., 10000.,
2641 AliQnCorrectionsVarManagerTask::kNV0total);
2642 histos->AddHistogram(classStr.Data(),
"NV0selected_Run_prof",
2643 "<Number of selected V0s> per run; Run; #tracks", kTRUE, kNRunBins, runHistRange[0],
2644 runHistRange[1], AliQnCorrectionsVarManagerTask::kRunNo, 100, 0., 10000.,
2645 AliQnCorrectionsVarManagerTask::kNV0selected);
2646 histos->AddHistogram(classStr.Data(),
"Ndielectrons_Run_prof",
2647 "<Number of dielectrons> per run; Run; #tracks", kTRUE, kNRunBins, runHistRange[0],
2648 runHistRange[1], AliQnCorrectionsVarManagerTask::kRunNo, 100, 0., 10000.,
2649 AliQnCorrectionsVarManagerTask::kNdielectrons);
2650 histos->AddHistogram(classStr.Data(),
"NpairsSelected_Run_prof",
2651 "<Number of selected pairs> per run; Run; #tracks", kTRUE, kNRunBins, runHistRange[0],
2652 runHistRange[1], AliQnCorrectionsVarManagerTask::kRunNo, 100, 0., 10000.,
2653 AliQnCorrectionsVarManagerTask::kNpairsSelected);
2654 histos->AddHistogram(classStr.Data(),
"NTracksTotal_Run_prof",
"<Number of tracks> per run; Run; #tracks",
2655 kTRUE, kNRunBins, runHistRange[0], runHistRange[1],
2656 AliQnCorrectionsVarManagerTask::kRunNo, 100, 0., 10000.,
2657 AliQnCorrectionsVarManagerTask::kNtracksTotal);
2658 histos->AddHistogram(classStr.Data(),
"NTracksSelected_Run_prof",
2659 "<Number of selected tracks> per run; Run; #tracks", kTRUE, kNRunBins, runHistRange[0],
2660 runHistRange[1], AliQnCorrectionsVarManagerTask::kRunNo, 100, 0., 10000.,
2661 AliQnCorrectionsVarManagerTask::kNtracksSelected);
2662 histos->AddHistogram(classStr.Data(),
"SPDntracklets_Run_prof",
"<SPD ntracklets> per run; Run; #tracks",
2663 kTRUE, kNRunBins, runHistRange[0], runHistRange[1],
2664 AliQnCorrectionsVarManagerTask::kRunNo, 100, 0., 10000.,
2665 AliQnCorrectionsVarManagerTask::kSPDntracklets);
2667 histos->AddHistogram(classStr.Data(),
"VtxZ_CentVZERO",
2668 "Centrality(VZERO) vs vtx. Z;vtx Z (cm); centrality VZERO (%)", kFALSE, 300, -15., 15.,
2669 AliQnCorrectionsVarManagerTask::kVtxZ, 100, 0.0, 100.0,
2670 AliQnCorrectionsVarManagerTask::kCentVZERO);
2671 histos->AddHistogram(classStr.Data(),
"VtxZ_CentSPD",
2672 "Centrality(SPD) vs vtx. Z;vtx Z (cm); centrality SPD (%)", kFALSE, 300, -15., 15.,
2673 AliQnCorrectionsVarManagerTask::kVtxZ, 100, 0.0, 100.0,
2674 AliQnCorrectionsVarManagerTask::kCentSPD);
2675 histos->AddHistogram(classStr.Data(),
"VtxZ_CentTPC",
2676 "Centrality(TPC) vs vtx. Z;vtx Z (cm); centrality TPC (%)", kFALSE, 300, -15., 15.,
2677 AliQnCorrectionsVarManagerTask::kVtxZ, 100, 0.0, 100.0,
2678 AliQnCorrectionsVarManagerTask::kCentTPC);
2683 if (classStr.Contains(
"OfflineTriggers")) {
2684 histos->AddHistClass(classStr.Data());
2687 for (
Int_t i = 0; i < 64; ++i) {
2688 triggerNames += Form(
"%s", AliQnCorrectionsVarManagerTask::fOfflineTriggerNames[i]);
2689 triggerNames +=
";";
2692 histos->AddHistogram(classStr.Data(),
"Triggers",
"Offline triggers fired; ; ;", kFALSE, 64, -0.5, 63.5,
2693 AliQnCorrectionsVarManagerTask::kOfflineTrigger, 2, -0.5, 1.5,
2694 AliQnCorrectionsVarManagerTask::kOfflineTriggerFired, 0, 0.0, 0.0,
2695 AliQnCorrectionsVarManagerTask::kNothing, triggerNames.Data(),
"off;on");
2696 histos->AddHistogram(classStr.Data(),
"Triggers2",
"Offline triggers fired; ; ;", kFALSE, 64, -0.5, 63.5,
2697 AliQnCorrectionsVarManagerTask::kOfflineTriggerFired2, 0, 0.0, 0.0,
2698 AliQnCorrectionsVarManagerTask::kNothing, 0, 0.0, 0.0,
2699 AliQnCorrectionsVarManagerTask::kNothing, triggerNames.Data());
2700 histos->AddHistogram(classStr.Data(),
"CentVZERO_Triggers2",
2701 "Offline triggers fired vs centrality VZERO; ; centrality VZERO;", kFALSE, 64, -0.5,
2702 63.5, AliQnCorrectionsVarManagerTask::kOfflineTriggerFired2, 20, 0.0, 100.0,
2703 AliQnCorrectionsVarManagerTask::kCentVZERO, 0, 0.0, 0.0,
2704 AliQnCorrectionsVarManagerTask::kNothing, triggerNames.Data());
2705 histos->AddHistogram(classStr.Data(),
"CentTPC_Triggers2",
2706 "Offline triggers fired vs centrality TPC; ; centrality TPC;", kFALSE, 64, -0.5, 63.5,
2707 AliQnCorrectionsVarManagerTask::kOfflineTriggerFired2, 20, 0.0, 100.0,
2708 AliQnCorrectionsVarManagerTask::kCentTPC, 0, 0.0, 0.0,
2709 AliQnCorrectionsVarManagerTask::kNothing, triggerNames.Data());
2710 histos->AddHistogram(classStr.Data(),
"CentSPD_Triggers2",
2711 "Offline triggers fired vs centrality SPD; ; centrality SPD;", kFALSE, 64, -0.5, 63.5,
2712 AliQnCorrectionsVarManagerTask::kOfflineTriggerFired2, 20, 0.0, 100.0,
2713 AliQnCorrectionsVarManagerTask::kCentSPD, 0, 0.0, 0.0,
2714 AliQnCorrectionsVarManagerTask::kNothing, triggerNames.Data());
2715 histos->AddHistogram(classStr.Data(),
"CentZDC_Triggers2",
2716 "Offline triggers fired vs centrality ZDC; ; centrality ZDC;", kFALSE, 64, -0.5, 63.5,
2717 AliQnCorrectionsVarManagerTask::kOfflineTriggerFired2, 20, 0.0, 100.0,
2718 AliQnCorrectionsVarManagerTask::kCentZDC, 0, 0.0, 0.0,
2719 AliQnCorrectionsVarManagerTask::kNothing, triggerNames.Data());
2720 histos->AddHistogram(classStr.Data(),
"VtxZ_Triggers2",
"Offline triggers fired vs vtxZ; ; vtx Z (cm.);",
2721 kFALSE, 64, -0.5, 63.5, AliQnCorrectionsVarManagerTask::kOfflineTriggerFired2, 200,
2722 -20.0, 20.0, AliQnCorrectionsVarManagerTask::kVtxZ, 0, 0.0, 0.0,
2723 AliQnCorrectionsVarManagerTask::kNothing, triggerNames.Data());
2728 if (classStr.Contains(
"Tracks")) {
2729 histos->AddHistClass(classStr.Data());
2730 for (
Int_t ih = 0; ih < 6; ++ih) {
2731 histos->AddHistogram(
2732 classStr.Data(), Form(
"Cos%dPhi_CentVZERO", ih + 1),
2733 Form(
"<cos%d #varphi> vs (CentVZERO); centrality VZERO; <cos%d #varphi>", ih + 1, ih + 1), kTRUE, 20,
2734 0.0, 100.0, AliQnCorrectionsVarManagerTask::kCentVZERO, 500, -1., 1.,
2735 AliQnCorrectionsVarManagerTask::kCosNPhi + ih);
2736 histos->AddHistogram(
2737 classStr.Data(), Form(
"Sin%dPhi_CentVZERO", ih + 1),
2738 Form(
"<sin%d #varphi> vs (CentVZERO); centrality VZERO; <sin%d #varphi>", ih + 1, ih + 1), kTRUE, 20,
2739 0.0, 100.0, AliQnCorrectionsVarManagerTask::kCentVZERO, 500, -1.0, 1.0,
2740 AliQnCorrectionsVarManagerTask::kSinNPhi + ih);
2745 if (classStr.Contains(
"TrackQA")) {
2746 histos->AddHistClass(classStr.Data());
2748 histos->AddHistogram(classStr.Data(),
"Pt",
"p_{T} distribution; p_{T} (GeV/c^{2});", kFALSE, 1000, 0.0,
2750 histos->AddHistogram(classStr.Data(),
"Eta",
"#eta illumination; #eta;", kFALSE, 1000, -1.5, 1.5,
2751 AliQnCorrectionsVarManagerTask::kEta);
2752 histos->AddHistogram(classStr.Data(),
"Phi",
"#varphi illumination; #varphi;", kFALSE, 1000, 0.0, 6.3,
2753 AliQnCorrectionsVarManagerTask::kPhi);
2754 histos->AddHistogram(classStr.Data(),
"DCAxy",
"DCAxy; DCAxy (cm.)", kFALSE, 1000, -10.0, 10.0,
2755 AliQnCorrectionsVarManagerTask::kDcaXY);
2756 histos->AddHistogram(classStr.Data(),
"DCAz",
"DCAz; DCAz (cm.)", kFALSE, 1000, -10.0, 10.0,
2757 AliQnCorrectionsVarManagerTask::kDcaZ);
2758 histos->AddHistogram(classStr.Data(),
"TPCncls",
"TPCncls; TPCncls", kFALSE, 160, 0.0, 160.0,
2759 AliQnCorrectionsVarManagerTask::kTPCncls);
2760 histos->AddHistogram(classStr.Data(),
"TPCsa_TPCncls",
"TPC standalone TPCncls; TPCncls", kFALSE, 160, 0.0,
2761 160.0, AliQnCorrectionsVarManagerTask::kTPCnclsIter1);
2764 histos->AddHistogram(classStr.Data(),
"Pt_Run",
"<p_{T}> vs run; run;", kTRUE, kNRunBins, runHistRange[0],
2765 runHistRange[1], AliQnCorrectionsVarManagerTask::kRunNo, 1000, 0.0, 50.0,
2767 histos->AddHistogram(classStr.Data(),
"Eta_Run",
"<#eta> vs run; run;", kTRUE, kNRunBins, runHistRange[0],
2768 runHistRange[1], AliQnCorrectionsVarManagerTask::kRunNo, 1000, -1.5, 1.5,
2769 AliQnCorrectionsVarManagerTask::kEta);
2770 histos->AddHistogram(classStr.Data(),
"Phi_Run",
"<#varphi> vs run; run;", kTRUE, kNRunBins,
2771 runHistRange[0], runHistRange[1], AliQnCorrectionsVarManagerTask::kRunNo, 1000, 0.0,
2772 6.3, AliQnCorrectionsVarManagerTask::kPhi);
2773 histos->AddHistogram(classStr.Data(),
"DCAxy_Run",
"<DCAxy> vs run; run;", kTRUE, kNRunBins,
2774 runHistRange[0], runHistRange[1], AliQnCorrectionsVarManagerTask::kRunNo, 1000, -10.0,
2775 10.0, AliQnCorrectionsVarManagerTask::kDcaXY);
2776 histos->AddHistogram(classStr.Data(),
"DCAz_Run",
"<DCAz> vs run; run;", kTRUE, kNRunBins, runHistRange[0],
2777 runHistRange[1], AliQnCorrectionsVarManagerTask::kRunNo, 1000, -10.0, 10.0,
2778 AliQnCorrectionsVarManagerTask::kDcaZ);
2781 histos->AddHistogram(classStr.Data(),
"Eta_Pt_prof",
"<p_{T}> vs #eta; #eta; p_{T} (GeV/c);", kTRUE, 300,
2782 -1.5, +1.5, AliQnCorrectionsVarManagerTask::kEta, 100, 0.0, 10.0,
2784 histos->AddHistogram(classStr.Data(),
"Phi_Pt",
"p_{T} vs #varphi; #varphi (rad.); p_{T} (GeV/c)", kFALSE,
2785 300, -0.01, 6.3, AliQnCorrectionsVarManagerTask::kPhi, 100, 0.0, 2.2,
2787 histos->AddHistogram(classStr.Data(),
"Phi_Pt_prof",
"<p_{T}> vs #varphi; #varphi (rad.); p_{T} (GeV/c)",
2788 kTRUE, 300, 0.0, 6.3, AliQnCorrectionsVarManagerTask::kPhi, 100, 0.0, 10.0,
2790 histos->AddHistogram(classStr.Data(),
"Eta_Phi",
"#varphi vs #eta; #eta; #varphi (rad.);", kFALSE, 200,
2791 -1.0, +1.0, AliQnCorrectionsVarManagerTask::kEta, 100, 0.0, 6.3,
2792 AliQnCorrectionsVarManagerTask::kPhi);
2793 histos->AddHistogram(
2794 classStr.Data(),
"TPCncls_Eta_Phi_prof",
"<TPC ncls> vs #varphi vs #eta; #eta; #varphi (rad.);TPC ncls",
2795 kTRUE, 200, -1.0, +1.0, AliQnCorrectionsVarManagerTask::kEta, 100, 0.0, 6.3,
2796 AliQnCorrectionsVarManagerTask::kPhi, 10, 0.0, 200., AliQnCorrectionsVarManagerTask::kTPCncls);
2797 histos->AddHistogram(
2798 classStr.Data(),
"DCAxy_Eta_Phi_prof",
"<DCAxy> vs #varphi vs #eta; #eta; #varphi (rad.);DCAxy (cm)",
2799 kTRUE, 200, -1.0, +1.0, AliQnCorrectionsVarManagerTask::kEta, 100, 0.0, 6.3,
2800 AliQnCorrectionsVarManagerTask::kPhi, 10, 0.0, 200., AliQnCorrectionsVarManagerTask::kDcaXY);
2801 histos->AddHistogram(
2802 classStr.Data(),
"DCAz_Eta_Phi_prof",
"<DCAz> vs #varphi vs #eta; #eta; #varphi (rad.);DCAz (cm)", kTRUE,
2803 200, -1.0, +1.0, AliQnCorrectionsVarManagerTask::kEta, 100, 0.0, 6.3,
2804 AliQnCorrectionsVarManagerTask::kPhi, 10, 0.0, 200., AliQnCorrectionsVarManagerTask::kDcaZ);
2805 histos->AddHistogram(classStr.Data(),
"Pt_DCAxy",
"DCAxy vs p_{T}; p_{T} (GeV/c); DCA_{xy} (cm)", kFALSE,
2807 AliQnCorrectionsVarManagerTask::kDcaXY);
2808 histos->AddHistogram(classStr.Data(),
"Pt_DCAz",
"DCAz vs p_{T}; p_{T} (GeV/c); DCA_{z} (cm)", kFALSE, 100,
2810 AliQnCorrectionsVarManagerTask::kDcaZ);
2811 histos->AddHistogram(classStr.Data(),
"Eta_DCAxy",
"DCAxy vs #eta; #eta; DCA_{xy} (cm)", kFALSE, 100, -1.0,
2812 1.0, AliQnCorrectionsVarManagerTask::kEta, 500, -2.0, 2.0,
2813 AliQnCorrectionsVarManagerTask::kDcaXY);
2814 histos->AddHistogram(classStr.Data(),
"Eta_DCAz",
"DCAz vs #eta; #eta; DCA_{z} (cm)", kFALSE, 100, -1.0,
2815 1.0, AliQnCorrectionsVarManagerTask::kEta, 500, -2.0, 2.0,
2816 AliQnCorrectionsVarManagerTask::kDcaZ);
2818 for (
Int_t ih = 0; ih < 6; ++ih) {
2827 histos->AddHistogram(
2828 classStr.Data(), Form(
"Cos%dPhi_Pt_Eta", ih + 1),
2829 Form(
"<cos%d #varphi> vs (#eta,p_{T}); #eta; p_{T} (GeV/c); <cos%d #varphi>", ih + 1, ih + 1), kTRUE,
2830 20, -1.0, 1.0, AliQnCorrectionsVarManagerTask::kEta, 30, 0.0, 3.0,
2832 histos->AddHistogram(
2833 classStr.Data(), Form(
"Sin%dPhi_Pt_Eta", ih + 1),
2834 Form(
"<sin%d #varphi> vs (#eta,p_{T}); #eta; p_{T} (GeV/c); <sin%d #varphi>", ih + 1, ih + 1), kTRUE,
2835 20, -1.0, 1.0, AliQnCorrectionsVarManagerTask::kEta, 30, 0.0, 3.0,
2837 histos->AddHistogram(
2838 classStr.Data(), Form(
"Cos%dPhi_CentVZERO_VtxZ", ih + 1),
2839 Form(
"<cos%d #varphi> vs (CentVZERO,VtxZ); Z (cm.); centrality VZERO; <cos%d #varphi>", ih + 1,
2841 kTRUE, 30, -15.0, 15.0, AliQnCorrectionsVarManagerTask::kVtxZ, 20, 0.0, 100.0,
2842 AliQnCorrectionsVarManagerTask::kCentVZERO, 500, -1., 1.,
2843 AliQnCorrectionsVarManagerTask::kCosNPhi + ih);
2844 histos->AddHistogram(
2845 classStr.Data(), Form(
"Sin%dPhi_CentVZERO_VtxZ", ih + 1),
2846 Form(
"<sin%d #varphi> vs (CentVZERO,VtxZ); Z (cm.); centrality VZERO; <sin%d #varphi>", ih + 1,
2848 kTRUE, 30, -15.0, 15.0, AliQnCorrectionsVarManagerTask::kVtxZ, 20, 0.0, 100.0,
2849 AliQnCorrectionsVarManagerTask::kCentVZERO, 500, -1.0, 1.0,
2850 AliQnCorrectionsVarManagerTask::kSinNPhi + ih);
2855 if (classStr.Contains(
"TrackletQA")) {
2856 histos->AddHistClass(classStr.Data());
2858 histos->AddHistogram(classStr.Data(),
"Eta",
"#eta illumination; #eta;", kFALSE, 1000, -3.0, 3.0,
2859 AliQnCorrectionsVarManagerTask::kSPDtrackletEta);
2860 histos->AddHistogram(classStr.Data(),
"Phi",
"#varphi illumination; #varphi;", kFALSE, 300, -0.01, 6.3,
2861 AliQnCorrectionsVarManagerTask::kSPDtrackletPhi);
2862 histos->AddHistogram(classStr.Data(),
"Eta_Phi",
"#varphi vs #eta; #eta; #varphi (rad.);", kFALSE, 200,
2863 -3.0, +3.0, AliQnCorrectionsVarManagerTask::kSPDtrackletEta, 100, 0.0, 6.3,
2864 AliQnCorrectionsVarManagerTask::kSPDtrackletPhi);
2868 AliInfoGeneralStream(
"PWGJE::EMCALJetTasks::FlowVectorCorrections::DefineHistograms") <<
" done\n";
static void DefineHistograms(AliQnCorrectionsManager *QnManager, AliQnCorrectionsHistos *histos, TString histClass)
static double LHC15oTrackingEfficiency(const double trackPt, const double trackEta, const int centralityBin, const std::string &taskName)
static void ConfigureTrackContainersFromYAMLConfig(std::vector< std::string > baseNameWithContainer, AliTrackContainer *trackCont, PWG::Tools::AliYAMLConfiguration &yamlConfig, std::string taskName)
static void AddVZERO(AliAnalysisTaskFlowVectorCorrections *task, AliQnCorrectionsManager *QnManager, AliQnCorrectionsVarManagerTask::Variables varForEventMultiplicity)
static const std::map< std::string, AliEmcalJet::JetAcceptanceType > fgkJetAcceptanceMap
void SetTrackCutsPeriod(const char *period)
! Leading is from the leader of both
static double DetermineTrackingEfficiency(const double trackPt, const double trackEta, const int centralityBin, const EEfficiencyPeriodIdentifier_t efficiencyPeriodIdentifier, const std::string &taskName)
void SetName(const char *n)
Set the name of the class of the objets inside the underlying array.
DCal acceptance – spans entire rectangular region in eta-phi (including most of PHOS) ...
void SetMinE(Double_t min)
static const double LHC15oParam_50_90_eta[13]
! 50-90% eta parameters
Container with name, TClonesArray and cuts for particles.
static void AddRawFMD(AliAnalysisTaskFlowVectorCorrections *task, AliQnCorrectionsManager *QnManager, AliQnCorrectionsVarManagerTask::Variables varForEventMultiplicity)
static double LHC11hTrackingEfficiency(const double trackPt, const double trackEta, const int centralityBin, const std::string &taskName)
static double LHC15oEtaEfficiencyImpl(const double trackEta, const double params[13], const int index)
static const double LHC11hParam_10_30[17]
! 10-30% good runs
static double LHC15oHighPtEfficiencyImpl(const double trackPt, const double params[10], const int index)
void SetMinPt(Double_t min)
static const double LHC11hParam_50_90[17]
! 50-90% good runs
Full acceptance, i.e. no acceptance cut applied – left to user.
static const double LHC15oParam_0_10_pt[10]
! 0-10% pt parameters
const PWG::JETFW::AliEmcalParticleJetConstituent * GetLeadingParticleConstituent() const
Get the leading particle constituent.
void SetEtaLimits(Double_t min, Double_t max)
Container for particles within the EMCAL framework.
void SetIsEmbedding(Bool_t b)
Set embedding status.
TPC fiducial acceptance (each eta edge narrowed by jet R)
static const double LHC15oParam_10_30_eta[13]
! 10-30% eta parameters
static void ConfigureEventCuts(AliEventCuts &eventCuts, PWG::Tools::AliYAMLConfiguration &yamlConfig, const UInt_t offlineTriggerMask, const std::string &baseName, const std::string &taskName)
void SetAODFilterBits(UInt_t bits)
static UInt_t DeterminePhysicsSelectionFromYAML(const std::vector< std::string > &selections)
static void AddZDC(AliAnalysisTaskFlowVectorCorrections *task, AliQnCorrectionsManager *QnManager, AliQnCorrectionsVarManagerTask::Variables varForEventMultiplicity)
ELeadingHadronBiasType_t
Determine the jet leading hadron bias type.
void SetClusNonLinCorrEnergyCut(Double_t cut)
static double LHC15oLowPtEfficiencyImpl(const double trackPt, const double params[10], const int index)
PHOS fiducial acceptance (each eta, phi edge narrowed by jet R)
static void AddTPC(AliAnalysisTaskFlowVectorCorrections *task, AliQnCorrectionsManager *QnManager, AliQnCorrectionsVarManagerTask::Variables varForEventMultiplicity)
static void ConfigureClusterContainersFromYAMLConfig(std::vector< std::string > baseNameWithContainer, AliClusterContainer *clusterCont, PWG::Tools::AliYAMLConfiguration &yamlConfig, std::string taskName)
Base class for container structures within the EMCAL framework.
static const double LHC15oParam_10_30_pt[10]
! 10-30% pt parameters
static double GetJetPt(const AliEmcalJet *jet, const double rho)
void SetIncludePHOS(Bool_t b)
static const double LHC11hParam_30_50[17]
! 30-50% good runs
static double LHC15oEtaEfficiency(const double trackEta, const double params[13])
static AliParticleContainer * CreateParticleOrTrackContainer(const std::string &collectionName)
static const std::map< std::string, AliEmcalTrackSelection::ETrackFilterType_t > fgkTrackFilterTypeMap
Relates string to the track filter enumeration for YAML configuration.
static const std::map< std::string, EEfficiencyPeriodIdentifier_t > fgkEfficiencyPeriodIdentifier
! Map from name to efficiency period identifier for use with the YAML config
static void ConfigureEMCalContainersFromYAMLConfig(std::vector< std::string > baseName, std::string containerName, AliEmcalContainer *cont, PWG::Tools::AliYAMLConfiguration &yamlConfig, std::string taskName)
static const double LHC11hParam_0_10[17]
! 0-10% good runs
static double RelativeEPAngle(double jetAngle, double epAngle)
static double GetLeadingHadronPt(AliEmcalJet *jet, ELeadingHadronBiasType_t leadingHadronType)
const char * GetName() const
static double LHC11aTrackingEfficiency(const double trackPt, const double trackEta, const int centralityBin, const std::string &taskName)
static UInt_t DetermineJetAcceptanceFromYAML(const std::vector< std::string > &selections)
const PWG::JETFW::AliEmcalClusterJetConstituent * GetLeadingClusterConstituent() const
Get the leading cluster constituent.
! Run1 pp - LHC11a (2.76 TeV)
virtual double Pt() const
Access to transverse momentum.
static AliAnalysisTaskFlowVectorCorrections * AddTaskFlowQnVectorCorrections(const std::string &configFilename)
static const double LHC15oParam_50_90_pt[10]
! 50-90% pt parameters
static const double LHC15oParam_30_50_pt[10]
! 30-50% pt parameters
ETrackFilterType_t
Pre-defined track filters.
static double LHC15oPtEfficiency(const double trackPt, const double params[10])
static const double LHC15oParam_0_10_eta[13]
! 0-10% eta parameters
virtual double Pt() const
Access to transverse momentum.
Represent a jet reconstructed using the EMCal jet framework.
static void AddFMD(AliAnalysisTaskFlowVectorCorrections *task, AliQnCorrectionsManager *QnManager, AliQnCorrectionsVarManagerTask::Variables varForEventMultiplicity)
static std::string DetermineUseDefaultName(InputObject_t objType)
void SetTrackFilterType(ETrackFilterType_t f)
void SetPhiLimits(Double_t min, Double_t max)
DCal fiducial acceptance (each eta, phi edge narrowed by jet R)
DCal acceptance – spans ONLY DCal (no PHOS or gap)
void SetDefaultClusterEnergy(Int_t d)
EEfficiencyPeriodIdentifier_t
Identify the beam type and period that is being analyzed.
Container structure for EMCAL clusters.
static const std::map< std::string, VCluUserDefEnergy_t > fgkClusterEnergyTypeMap
Relates string to the cluster energy enumeration for YAML configuration.
DCal fiducial acceptance (each eta, phi edge narrowed by jet R)
EMCal fiducial acceptance (each eta, phi edge narrowed by jet R)
static void AddTZERO(AliAnalysisTaskFlowVectorCorrections *task, AliQnCorrectionsManager *QnManager, AliQnCorrectionsVarManagerTask::Variables varForEventMultiplicity)
static const double LHC15oParam_30_50_eta[13]
! 30-50% eta parameters
static void AddSPD(AliAnalysisTaskFlowVectorCorrections *task, AliQnCorrectionsManager *QnManager, AliQnCorrectionsVarManagerTask::Variables varForEventMultiplicity)
static const std::map< std::string, ELeadingHadronBiasType_t > fgkLeadingHadronBiasMap
! Map from name to leading hadron bias used with the YAML config
void SetClusHadCorrEnergyCut(Double_t cut)