|
| 1 | +// Copyright 2019-2020 CERN and copyright holders of ALICE O2. |
| 2 | +// See https://alice-o2.web.cern.ch/copyright for details of the copyright holders. |
| 3 | +// All rights not expressly granted are reserved. |
| 4 | +// |
| 5 | +// This software is distributed under the terms of the GNU General Public |
| 6 | +// License v3 (GPL Version 3), copied verbatim in the file "COPYING". |
| 7 | +// |
| 8 | +// In applying this license CERN does not waive the privileges and immunities |
| 9 | +// granted to it by virtue of its status as an Intergovernmental Organization |
| 10 | +// or submit itself to any jurisdiction. |
| 11 | +/// |
| 12 | +/// \file neutronProtonCorrZdc.cxx |
| 13 | +/// \brief Correlations between protons and neutrons in the ZDC |
| 14 | +/// \author Olaf Massen <olaf.massen@cern.ch> |
| 15 | + |
| 16 | +#include "Framework/runDataProcessing.h" |
| 17 | +#include "Framework/AnalysisTask.h" |
| 18 | +#include "Framework/ASoAHelpers.h" |
| 19 | + |
| 20 | +#include "Common/DataModel/TrackSelectionTables.h" |
| 21 | +#include "Common/DataModel/EventSelection.h" |
| 22 | +#include "Common/DataModel/PIDResponse.h" |
| 23 | +#include "Common/DataModel/Centrality.h" |
| 24 | +#include "Common/DataModel/Multiplicity.h" |
| 25 | + |
| 26 | +using namespace o2; |
| 27 | +using namespace o2::framework; |
| 28 | +using namespace o2::framework::expressions; |
| 29 | + |
| 30 | +struct NeutronProtonCorrZdc { |
| 31 | + // Histogram registry: an object to hold your histograms |
| 32 | + HistogramRegistry histos{"histos", {}, OutputObjHandlingPolicy::AnalysisObject}; |
| 33 | + |
| 34 | + Configurable<int> cfgNBinsZN{"cfgNBinsZN", 100, "N bins for ZNA and ZNC"}; |
| 35 | + Configurable<int> cfgNBinsZP{"cfgNBinsZP", 100, "N bins for ZPA and ZPC"}; |
| 36 | + Configurable<double> cfgZNmin{"cfgZNmin", -10, "Minimum value for ZN signal"}; |
| 37 | + Configurable<double> cfgZNmax{"cfgZNmax", 350, "Maximum value for ZN signal"}; |
| 38 | + Configurable<double> cfgZPmin{"cfgZPmin", -10, "Minimum value for ZP signal"}; |
| 39 | + Configurable<double> cfgZPmax{"cfgZPmax", 200, "Maximum value for ZP signal"}; |
| 40 | + Configurable<double> cfgDiffZmin{"cfgDiffZmin", -50, "Minimum value for the diffZ signal"}; |
| 41 | + Configurable<double> cfgDiffZmax{"cfgDiffZmax", 50, "Maximum value for the diffZ signal"}; |
| 42 | + Configurable<int> cfgNBinsAlpha{"cfgNBinsAlpha", 100, "Number of bins for ZDC asymmetry"}; |
| 43 | + Configurable<double> cfgAlphaZmin{"cfgAlphaZmin", -1, "Minimum value for ZDC asymmetry"}; |
| 44 | + Configurable<double> cfgAlphaZmax{"cfgAlphaZmax", 1, "Maximum value for ZDC asymmetry"}; |
| 45 | + Configurable<bool> cfgProcessRun2{"cfgProcessRun2", false, "Analyse Run 2 converted data"}; |
| 46 | + // Configurable<int> cfgCentralityEstimator{"cfgCentralityEstimator", 0, "Choice of centrality estimator"};//0 for FTOC, 1 for FTOA, 2 for FTOM, 3 for FVOA. //To be included at a later stage |
| 47 | + |
| 48 | + ConfigurableAxis cfgAxisCent{"cfgAxisCent", {VARIABLE_WIDTH, 0.0f, 0.1f, 0.2f, 0.3f, 0.4f, 0.5f, 0.6f, 0.7f, 0.8f, 0.9f, 1.0f, 1.1f, 1.2f, 1.3f, 1.4f, 1.5f, 1.6f, 1.7f, 1.8f, 1.9f, 2.0f, 2.2f, 2.4f, 2.6f, 2.8f, 3.0f, 3.2f, 3.4f, 3.6f, 3.8f, 4.0f, 4.2f, 4.4f, 4.6f, 4.8f, 5.0f, 5.5f, 6.0f, 6.5f, 7.0f, 7.5f, 8.0f, 8.5f, 9.0f, 9.5f, 10.0f, 11.0f, 12.0f, 13.0f, 14.0f, 15.0f, 16.0f, 17.0f, 18.0f, 19.0f, 20.0f, 21.0f, 22.0f, 23.0f, 24.0f, 25.0f, 26.0f, 27.0f, 28.0f, 29.0f, 30.0f, 31.0f, 32.0f, 33.0f, 34.0f, 35.0f, 36.0f, 37.0f, 38.0f, 39.0f, 40.0f, 41.0f, 42.0f, 43.0f, 44.0f, 45.0f, 46.0f, 47.0f, 48.0f, 49.0f, 50.0f, 51.0f, 52.0f, 53.0f, 54.0f, 55.0f, 56.0f, 57.0f, 58.0f, 59.0f, 60.0f, 61.0f, 62.0f, 63.0f, 64.0f, 65.0f, 66.0f, 67.0f, 68.0f, 69.0f, 70.0f, 71.0f, 72.0f, 73.0f, 74.0f, 75.0f, 76.0f, 77.0f, 78.0f, 79.0f, 80.0f, 81.0f, 82.0f, 83.0f, 84.0f, 85.0f, 86.0f, 87.0f, 88.0f, 89.0f, 90.0f, 91.0f, 92.0f, 93.0f, 94.0f, 95.0f, 96.0f, 97.0f, 98.0f, 99.0f, 100.0f}, "Centrality [%]"}; |
| 49 | + |
| 50 | + Filter collisionVtxZ = nabs(aod::collision::posZ) < 10.f; |
| 51 | + |
| 52 | + using CentralitiesRun3 = aod::CentFT0Cs; |
| 53 | + using CentralitiesRun2 = aod::CentRun2V0Ms; |
| 54 | + using BCsRun3 = soa::Join<aod::BCs, aod::Timestamps, aod::BcSels, aod::Run3MatchedToBCSparse>; |
| 55 | + |
| 56 | + void init(InitContext const&) |
| 57 | + { |
| 58 | + // define axes you want to use |
| 59 | + const AxisSpec axisCounter{4, 0, +2, ""}; |
| 60 | + const AxisSpec axisZNSectorSignal{cfgNBinsZN, cfgZNmin, cfgZNmax / 3.}; |
| 61 | + const AxisSpec axisZPSectorSignal{cfgNBinsZP, cfgZPmin, cfgZPmax / 3.}; |
| 62 | + const AxisSpec axisZNASignal{cfgNBinsZN, cfgZNmin, cfgZNmax, "ZNA (a.u.)"}; |
| 63 | + const AxisSpec axisZNCSignal{cfgNBinsZN, cfgZNmin, cfgZNmax, "ZNC (a.u.)"}; |
| 64 | + const AxisSpec axisZPASignal{cfgNBinsZP, cfgZPmin, cfgZPmax, "ZPA (a.u.)"}; |
| 65 | + const AxisSpec axisZPCSignal{cfgNBinsZP, cfgZPmin, cfgZPmax, "ZPC (a.u.)"}; |
| 66 | + const AxisSpec axisZNSignal{2 * cfgNBinsZN, cfgZNmin, 1.5 * cfgZNmax, "ZN (a.u.)"}; |
| 67 | + const AxisSpec axisZPSignal{2 * cfgNBinsZP, cfgZPmin, 1.5 * cfgZPmax, "ZP (a.u.)"}; |
| 68 | + const AxisSpec axisAlphaZ{cfgNBinsAlpha, cfgAlphaZmin, cfgAlphaZmax, "#alpha_{spec}"}; |
| 69 | + const AxisSpec axisZDiffSignal{cfgNBinsZN, cfgDiffZmin, cfgDiffZmax, "#Delta E"}; |
| 70 | + |
| 71 | + // create histograms |
| 72 | + histos.add("eventCounter", "eventCounter", kTH1F, {axisCounter}); |
| 73 | + |
| 74 | + histos.add("ZNASector0Signal", "ZNASector0Signal", kTH1F, {axisZNSectorSignal}); |
| 75 | + histos.add("ZNASector1Signal", "ZNASector1Signal", kTH1F, {axisZNSectorSignal}); |
| 76 | + histos.add("ZNASector2Signal", "ZNASector2Signal", kTH1F, {axisZNSectorSignal}); |
| 77 | + histos.add("ZNASector3Signal", "ZNASector3Signal", kTH1F, {axisZNSectorSignal}); |
| 78 | + |
| 79 | + histos.add("ZNCSector0Signal", "ZNCSector0Signal", kTH1F, {axisZNSectorSignal}); |
| 80 | + histos.add("ZNCSector1Signal", "ZNCSector1Signal", kTH1F, {axisZNSectorSignal}); |
| 81 | + histos.add("ZNCSector2Signal", "ZNCSector2Signal", kTH1F, {axisZNSectorSignal}); |
| 82 | + histos.add("ZNCSector3Signal", "ZNCSector3Signal", kTH1F, {axisZNSectorSignal}); |
| 83 | + |
| 84 | + histos.add("ZPASector0Signal", "ZPASector0Signal", kTH1F, {axisZPSectorSignal}); |
| 85 | + histos.add("ZPASector1Signal", "ZPASector1Signal", kTH1F, {axisZPSectorSignal}); |
| 86 | + histos.add("ZPASector2Signal", "ZPASector2Signal", kTH1F, {axisZPSectorSignal}); |
| 87 | + histos.add("ZPASector3Signal", "ZPASector3Signal", kTH1F, {axisZPSectorSignal}); |
| 88 | + |
| 89 | + histos.add("ZPCSector0Signal", "ZPCSector0Signal", kTH1F, {axisZPSectorSignal}); |
| 90 | + histos.add("ZPCSector1Signal", "ZPCSector1Signal", kTH1F, {axisZPSectorSignal}); |
| 91 | + histos.add("ZPCSector2Signal", "ZPCSector2Signal", kTH1F, {axisZPSectorSignal}); |
| 92 | + histos.add("ZPCSector3Signal", "ZPCSector3Signal", kTH1F, {axisZPSectorSignal}); |
| 93 | + |
| 94 | + histos.add("ZNASignal", "ZNASignal", kTH1F, {axisZNASignal}); |
| 95 | + histos.add("ZNCSignal", "ZNCSignal", kTH1F, {axisZNCSignal}); |
| 96 | + histos.add("ZNSignal", "ZNSignal", kTH1F, {axisZNSignal}); |
| 97 | + histos.add("ZPASignal", "ZPASignal", kTH1F, {axisZPASignal}); |
| 98 | + histos.add("ZPCSignal", "ZPCSignal", kTH1F, {axisZPCSignal}); |
| 99 | + histos.add("ZPSignal", "ZPSignal", kTH1F, {axisZPSignal}); |
| 100 | + |
| 101 | + histos.add("alphaZN", "alphaZN", kTH1F, {axisAlphaZ}); |
| 102 | + histos.add("alphaZP", "alphaZP", kTH1F, {axisAlphaZ}); |
| 103 | + |
| 104 | + histos.add("diffZNASignal", "diffZNASignal", kTH1F, {axisZDiffSignal}); |
| 105 | + histos.add("diffZNCSignal", "diffZNCSignal", kTH1F, {axisZDiffSignal}); |
| 106 | + histos.add("diffZPASignal", "diffZPASignal", kTH1F, {axisZDiffSignal}); |
| 107 | + histos.add("diffZPCSignal", "diffZPCSignal", kTH1F, {axisZDiffSignal}); |
| 108 | + histos.add("diffZNSignal", "diffZNSignal", kTH1F, {axisZDiffSignal}); |
| 109 | + histos.add("diffZPSignal", "diffZPSignal", kTH1F, {axisZDiffSignal}); |
| 110 | + |
| 111 | + histos.add("CentralityPercentile", "CentralityPercentile", kTH1F, {cfgAxisCent}); |
| 112 | + |
| 113 | + histos.add("CentvsZNASignal", "FT0CvsZNASignal", kTH2F, {cfgAxisCent, axisZNASignal}); |
| 114 | + histos.add("CentvsZNCSignal", "FT0CvsZNCSignal", kTH2F, {cfgAxisCent, axisZNCSignal}); |
| 115 | + histos.add("CentvsZPASignal", "FT0CvsZPASignal", kTH2F, {cfgAxisCent, axisZPASignal}); |
| 116 | + histos.add("CentvsZPCSignal", "FT0CvsZPCSignal", kTH2F, {cfgAxisCent, axisZPCSignal}); |
| 117 | + histos.add("CentvsZNSignal", "FT0CvsZNSignal", kTH2F, {cfgAxisCent, axisZNSignal}); |
| 118 | + histos.add("CentvsZPSignal", "FT0CvsZPSignal", kTH2F, {cfgAxisCent, axisZPSignal}); |
| 119 | + } |
| 120 | + |
| 121 | + void processRun3(soa::Filtered<soa::Join<aod::Collisions, aod::EvSels, CentralitiesRun3>>::iterator const& collision, BCsRun3 const&, aod::Zdcs const&) |
| 122 | + { |
| 123 | + if (!collision.sel8()) { |
| 124 | + histos.fill(HIST("eventCounter"), 0.25); |
| 125 | + return; |
| 126 | + } |
| 127 | + const auto& foundBC = collision.foundBC_as<BCsRun3>(); |
| 128 | + if (foundBC.has_zdc()) { |
| 129 | + const auto& zdcread = foundBC.zdc(); |
| 130 | + const auto cent = collision.centFT0C(); |
| 131 | + |
| 132 | + histos.fill(HIST("eventCounter"), 1.25); |
| 133 | + histos.fill(HIST("ZNASignal"), zdcread.energyCommonZNA()); |
| 134 | + histos.fill(HIST("ZNCSignal"), zdcread.energyCommonZNC()); |
| 135 | + histos.fill(HIST("ZPASignal"), zdcread.energyCommonZPA()); |
| 136 | + histos.fill(HIST("ZPCSignal"), zdcread.energyCommonZPC()); |
| 137 | + histos.fill(HIST("ZNASector0Signal"), (zdcread.energySectorZNA())[0]); |
| 138 | + histos.fill(HIST("ZNASector1Signal"), (zdcread.energySectorZNA())[1]); |
| 139 | + histos.fill(HIST("ZNASector2Signal"), (zdcread.energySectorZNA())[2]); |
| 140 | + histos.fill(HIST("ZNASector3Signal"), (zdcread.energySectorZNA())[3]); |
| 141 | + histos.fill(HIST("ZNCSector0Signal"), (zdcread.energySectorZNC())[0]); |
| 142 | + histos.fill(HIST("ZNCSector1Signal"), (zdcread.energySectorZNC())[1]); |
| 143 | + histos.fill(HIST("ZNCSector2Signal"), (zdcread.energySectorZNC())[2]); |
| 144 | + histos.fill(HIST("ZNCSector3Signal"), (zdcread.energySectorZNC())[3]); |
| 145 | + histos.fill(HIST("ZPASector0Signal"), (zdcread.energySectorZPA())[0]); |
| 146 | + histos.fill(HIST("ZPASector1Signal"), (zdcread.energySectorZPA())[1]); |
| 147 | + histos.fill(HIST("ZPASector2Signal"), (zdcread.energySectorZPA())[2]); |
| 148 | + histos.fill(HIST("ZPASector3Signal"), (zdcread.energySectorZPA())[3]); |
| 149 | + histos.fill(HIST("ZPCSector0Signal"), (zdcread.energySectorZPC())[0]); |
| 150 | + histos.fill(HIST("ZPCSector1Signal"), (zdcread.energySectorZPC())[1]); |
| 151 | + histos.fill(HIST("ZPCSector2Signal"), (zdcread.energySectorZPC())[2]); |
| 152 | + histos.fill(HIST("ZPCSector3Signal"), (zdcread.energySectorZPC())[3]); |
| 153 | + |
| 154 | + float sumZNC = (zdcread.energySectorZNC())[0] + (zdcread.energySectorZNC())[1] + (zdcread.energySectorZNC())[2] + (zdcread.energySectorZNC())[3]; |
| 155 | + float sumZNA = (zdcread.energySectorZNA())[0] + (zdcread.energySectorZNA())[1] + (zdcread.energySectorZNA())[2] + (zdcread.energySectorZNA())[3]; |
| 156 | + float sumZPC = (zdcread.energySectorZPC())[0] + (zdcread.energySectorZPC())[1] + (zdcread.energySectorZPC())[2] + (zdcread.energySectorZPC())[3]; |
| 157 | + float sumZPA = (zdcread.energySectorZPA())[0] + (zdcread.energySectorZPA())[1] + (zdcread.energySectorZPA())[2] + (zdcread.energySectorZPA())[3]; |
| 158 | + float alphaZN = (sumZNA - sumZNC) / (sumZNA + sumZNC); |
| 159 | + float alphaZP = (sumZPA - sumZPC) / (sumZPA + sumZPC); |
| 160 | + |
| 161 | + histos.fill(HIST("alphaZN"), alphaZN); |
| 162 | + histos.fill(HIST("alphaZP"), alphaZP); |
| 163 | + |
| 164 | + histos.fill(HIST("diffZNASignal"), sumZNA - zdcread.energyCommonZNA()); |
| 165 | + histos.fill(HIST("diffZNCSignal"), sumZNC - zdcread.energyCommonZNC()); |
| 166 | + histos.fill(HIST("diffZPASignal"), sumZPA - zdcread.energyCommonZPA()); |
| 167 | + histos.fill(HIST("diffZPCSignal"), sumZPC - zdcread.energyCommonZPC()); |
| 168 | + histos.fill(HIST("ZNSignal"), sumZNA + sumZNC); |
| 169 | + histos.fill(HIST("ZPSignal"), sumZPA + sumZPC); |
| 170 | + histos.fill(HIST("diffZNSignal"), (sumZNA + sumZNC) - (zdcread.energyCommonZNA() + zdcread.energyCommonZNC())); |
| 171 | + histos.fill(HIST("diffZPSignal"), (sumZPA + sumZPC) - (zdcread.energyCommonZPA() + zdcread.energyCommonZPC())); |
| 172 | + histos.fill(HIST("CentralityPercentile"), cent); |
| 173 | + histos.fill(HIST("CentvsZNASignal"), cent, sumZNA); |
| 174 | + histos.fill(HIST("CentvsZNCSignal"), cent, sumZNC); |
| 175 | + histos.fill(HIST("CentvsZPASignal"), cent, sumZPA); |
| 176 | + histos.fill(HIST("CentvsZPCSignal"), cent, sumZPC); |
| 177 | + histos.fill(HIST("CentvsZNSignal"), cent, sumZNA + sumZNC); |
| 178 | + histos.fill(HIST("CentvsZPSignal"), cent, sumZPA + sumZPC); |
| 179 | + } |
| 180 | + } |
| 181 | + PROCESS_SWITCH(NeutronProtonCorrZdc, processRun3, "Process analysis for Run 3 data", true); |
| 182 | + |
| 183 | + void processRun2(soa::Filtered<soa::Join<aod::Collisions, aod::EvSels, aod::Run2MatchedSparse, CentralitiesRun2>>::iterator const& collision, aod::BCsWithTimestamps const&, aod::Zdcs const&) |
| 184 | + { |
| 185 | + if (!collision.alias_bit(kINT7)) { |
| 186 | + histos.fill(HIST("eventCounter"), 0.25); |
| 187 | + return; |
| 188 | + } |
| 189 | + |
| 190 | + if (collision.has_zdc()) { |
| 191 | + const auto& zdcread = collision.zdc(); |
| 192 | + const auto cent = collision.centRun2V0M(); |
| 193 | + histos.fill(HIST("eventCounter"), 1.25); |
| 194 | + histos.fill(HIST("ZNASignal"), zdcread.energyCommonZNA()); |
| 195 | + histos.fill(HIST("ZNCSignal"), zdcread.energyCommonZNC()); |
| 196 | + histos.fill(HIST("ZPASignal"), zdcread.energyCommonZPA()); |
| 197 | + histos.fill(HIST("ZPCSignal"), zdcread.energyCommonZPC()); |
| 198 | + histos.fill(HIST("ZNASector0Signal"), (zdcread.energySectorZNA())[0]); |
| 199 | + histos.fill(HIST("ZNASector1Signal"), (zdcread.energySectorZNA())[1]); |
| 200 | + histos.fill(HIST("ZNASector2Signal"), (zdcread.energySectorZNA())[2]); |
| 201 | + histos.fill(HIST("ZNASector3Signal"), (zdcread.energySectorZNA())[3]); |
| 202 | + histos.fill(HIST("ZNCSector0Signal"), (zdcread.energySectorZNC())[0]); |
| 203 | + histos.fill(HIST("ZNCSector1Signal"), (zdcread.energySectorZNC())[1]); |
| 204 | + histos.fill(HIST("ZNCSector2Signal"), (zdcread.energySectorZNC())[2]); |
| 205 | + histos.fill(HIST("ZNCSector3Signal"), (zdcread.energySectorZNC())[3]); |
| 206 | + histos.fill(HIST("ZPASector0Signal"), (zdcread.energySectorZPA())[0]); |
| 207 | + histos.fill(HIST("ZPASector1Signal"), (zdcread.energySectorZPA())[1]); |
| 208 | + histos.fill(HIST("ZPASector2Signal"), (zdcread.energySectorZPA())[2]); |
| 209 | + histos.fill(HIST("ZPASector3Signal"), (zdcread.energySectorZPA())[3]); |
| 210 | + histos.fill(HIST("ZPCSector0Signal"), (zdcread.energySectorZPC())[0]); |
| 211 | + histos.fill(HIST("ZPCSector1Signal"), (zdcread.energySectorZPC())[1]); |
| 212 | + histos.fill(HIST("ZPCSector2Signal"), (zdcread.energySectorZPC())[2]); |
| 213 | + histos.fill(HIST("ZPCSector3Signal"), (zdcread.energySectorZPC())[3]); |
| 214 | + float sumZNC = (zdcread.energySectorZNC())[0] + (zdcread.energySectorZNC())[1] + (zdcread.energySectorZNC())[2] + (zdcread.energySectorZNC())[3]; |
| 215 | + float sumZNA = (zdcread.energySectorZNA())[0] + (zdcread.energySectorZNA())[1] + (zdcread.energySectorZNA())[2] + (zdcread.energySectorZNA())[3]; |
| 216 | + float sumZPC = (zdcread.energySectorZPC())[0] + (zdcread.energySectorZPC())[1] + (zdcread.energySectorZPC())[2] + (zdcread.energySectorZPC())[3]; |
| 217 | + float sumZPA = (zdcread.energySectorZPA())[0] + (zdcread.energySectorZPA())[1] + (zdcread.energySectorZPA())[2] + (zdcread.energySectorZPA())[3]; |
| 218 | + float alphaZN = (sumZNA - sumZNC) / (sumZNA + sumZNC); |
| 219 | + float alphaZP = (sumZPA - sumZPC) / (sumZPA + sumZPC); |
| 220 | + histos.fill(HIST("alphaZN"), alphaZN); |
| 221 | + histos.fill(HIST("alphaZP"), alphaZP); |
| 222 | + |
| 223 | + histos.fill(HIST("diffZNASignal"), sumZNA - zdcread.energyCommonZNA()); |
| 224 | + histos.fill(HIST("diffZNCSignal"), sumZNC - zdcread.energyCommonZNC()); |
| 225 | + histos.fill(HIST("diffZPASignal"), sumZPA - zdcread.energyCommonZPA()); |
| 226 | + histos.fill(HIST("diffZPCSignal"), sumZPC - zdcread.energyCommonZPC()); |
| 227 | + histos.fill(HIST("ZNSignal"), sumZNA + sumZNC); |
| 228 | + histos.fill(HIST("ZPSignal"), sumZPA + sumZPC); |
| 229 | + histos.fill(HIST("diffZNSignal"), (sumZNA + sumZNC) - (zdcread.energyCommonZNA() + zdcread.energyCommonZNC())); |
| 230 | + histos.fill(HIST("diffZPSignal"), (sumZPA + sumZPC) - (zdcread.energyCommonZPA() + zdcread.energyCommonZPC())); |
| 231 | + histos.fill(HIST("CentralityPercentile"), cent); |
| 232 | + histos.fill(HIST("CentvsZNASignal"), cent, sumZNA); |
| 233 | + histos.fill(HIST("CentvsZNCSignal"), cent, sumZNC); |
| 234 | + histos.fill(HIST("CentvsZPASignal"), cent, sumZPA); |
| 235 | + histos.fill(HIST("CentvsZPCSignal"), cent, sumZPC); |
| 236 | + histos.fill(HIST("CentvsZNSignal"), cent, sumZNA + sumZNC); |
| 237 | + histos.fill(HIST("CentvsZPSignal"), cent, sumZPA + sumZPC); |
| 238 | + } |
| 239 | + } |
| 240 | + PROCESS_SWITCH(NeutronProtonCorrZdc, processRun2, "Process analysis for Run 2 converted data", false); |
| 241 | +}; |
| 242 | + |
| 243 | +WorkflowSpec defineDataProcessing(ConfigContext const& cfgc) |
| 244 | +{ |
| 245 | + return WorkflowSpec{ |
| 246 | + adaptAnalysisTask<NeutronProtonCorrZdc>(cfgc)}; |
| 247 | +} |
0 commit comments