diff --git a/analysis/PWGDIL/dielectron/papaframework/PairAnalysis.cxx b/analysis/PWGDIL/dielectron/papaframework/PairAnalysis.cxx index 66508153186cb65a5d25a995ee677924b8ed8b69..3098ae5deed364324eb8abaefb10e24bb08db35e 100644 --- a/analysis/PWGDIL/dielectron/papaframework/PairAnalysis.cxx +++ b/analysis/PWGDIL/dielectron/papaframework/PairAnalysis.cxx @@ -290,7 +290,9 @@ Bool_t PairAnalysis::Process(PairAnalysisEvent* ev1) { if (!fNoPairing) { for (Int_t itrackArr1 = 0; itrackArr1 < 2; ++itrackArr1) { for (Int_t itrackArr2 = itrackArr1; itrackArr2 < 2; ++itrackArr2) { - if (!fProcessLS && GetPairIndex(itrackArr1, itrackArr2) != kSEPM) + if (!fProcessLS + && GetPairIndex(itrackArr1, itrackArr2) + != static_cast<Int_t>(EPairType::kSEPM)) continue; FillPairArrays(itrackArr1, itrackArr2); } @@ -307,7 +309,8 @@ Bool_t PairAnalysis::Process(PairAnalysisEvent* ev1) { // fill candidate variables Double_t ntracks = fTracks[0].GetEntriesFast() + fTracks[1].GetEntriesFast(); - Double_t npairs = PairArray(PairAnalysis::kSEPM)->GetEntriesFast(); + Double_t npairs = + PairArray(static_cast<Int_t>(EPairType::kSEPM))->GetEntriesFast(); PairAnalysisVarManager::SetValue(PairAnalysisVarManager::kTracks, ntracks); PairAnalysisVarManager::SetValue(PairAnalysisVarManager::kPairs, npairs); @@ -647,7 +650,7 @@ void PairAnalysis::FillHistograms(const PairAnalysisEvent* ev, isig, fHistoArray && fHistoArray->HasHistClass(sigName)); } // loop over both track arrays - for (Int_t i = 0; i < kLegTypes; ++i) { + for (Int_t i = 0; i < fLegTypes; ++i) { className.Form("Track.%s", fgkTrackClassNames[i]); Bool_t trkClass = fHistos->HasHistClass(className); Bool_t trkClass2 = (fHistoArray && fHistoArray->HasHistClass(className)); @@ -702,7 +705,7 @@ void PairAnalysis::FillHistograms(const PairAnalysisEvent* ev, TBits pairClassMC(nsig); TBits pairClassMChf(nsig); TObjArray arrLegs(100); - for (Int_t i = 0; i < (kPairTypes - 1); ++i) { + for (Int_t i = 0; i < (fNTypes - 1); ++i) { className.Form("Pair.%s", fgkPairClassNames[i]); className2.Form("Track.Legs.%s", fgkPairClassNames[i]); Bool_t pairClass = fHistos->HasHistClass(className); @@ -713,7 +716,7 @@ void PairAnalysis::FillHistograms(const PairAnalysisEvent* ev, Bool_t legClassHits = kFALSE; // check leg hits and mc signal filling - if (i == kSEPM) { + if (i == static_cast<Int_t>(EPairType::kSEPM)) { // loop over all detectors and check for hit histos for (ECbmModuleId idet = ECbmModuleId::kRef; @@ -788,7 +791,7 @@ void PairAnalysis::FillHistograms(const PairAnalysisEvent* ev, // check mc filling fillMC.ResetAllBits(); - if (i == kSEPM) { + if (i == static_cast<Int_t>(EPairType::kSEPM)) { for (Int_t isig = 0; isig < nsig; isig++) { // next if nothing needs to be filled if (!pairClassMC.TestBitNumber(isig) @@ -823,7 +826,7 @@ void PairAnalysis::FillHistograms(const PairAnalysisEvent* ev, if (legClass) fHistos->FillClass(className2, values); if (legClass2) fHistoArray->FillClass(className2, values); // mc signal filling - if (i == kSEPM) { + if (i == static_cast<Int_t>(EPairType::kSEPM)) { for (Int_t isig = 0; isig < nsig; isig++) { if (!fillMC.TestBitNumber(isig)) continue; sigMC = (PairAnalysisSignalMC*) fSignalsMC->At(isig); @@ -845,7 +848,7 @@ void PairAnalysis::FillHistograms(const PairAnalysisEvent* ev, if (legClass) fHistos->FillClass(className2, values); if (legClass2) fHistoArray->FillClass(className2, values); // mc signal filling - if (i == kSEPM) { + if (i == static_cast<Int_t>(EPairType::kSEPM)) { for (Int_t isig = 0; isig < nsig; isig++) { if (!fillMC.TestBitNumber(isig)) continue; sigMC = (PairAnalysisSignalMC*) fSignalsMC->At(isig); @@ -1147,11 +1150,16 @@ void PairAnalysis::PairPreFilter(Int_t arr1, if (!track1) continue; /// pair prefilter leg cuts + // pre-pairing filter for the first track candidate in the pairing step + // kBothLegs demands that both track candidates fullfill the cuts + // kAnyLeg demands that at least one candidate fullfills the cuts + // kOneLeg demands exactly one candidate to fullfill the cuts if (selectedMaskLeg) { - isLeg1selected = (fPairPreFilterLegs.IsSelected( - static_cast<PairAnalysisTrack*>(track1)) - == selectedMaskLeg); - if (fCutType == kBothLegs && !isLeg1selected) continue; + isLeg1selected = + (fPairPreFilterLegs.IsSelected( + static_cast<PairAnalysisTrack*>(track1)) + == selectedMaskLeg); // check cuts for the first track candidate + if (fCutType == ECutType::kBothLegs && !isLeg1selected) continue; } @@ -1160,23 +1168,20 @@ void PairAnalysis::PairPreFilter(Int_t arr1, if (!track2) continue; /// pair prefilter leg cuts - /// TODO: check rejection of pairleg only, when non prepair cut is applied! - /// NOTE: in mode kAnyLeg do the next check only if track1 was not selected - if ((selectedMaskLeg && fCutType != kAnyLeg) - || (selectedMaskLeg && fCutType == kAnyLeg && !isLeg1selected)) { - isLeg2selected = (fPairPreFilterLegs.IsSelected( - static_cast<PairAnalysisTrack*>(track2)) - == selectedMaskLeg); // apply selection - switch (fCutType) { - case kBothLegs: - if (!isLeg2selected) continue; - break; - case kAnyLeg: - if (!isLeg2selected) continue; - break; - case kOneLeg: - if (isLeg1selected == isLeg2selected) continue; - break; + if (selectedMaskLeg) { + if (fCutType != ECutType::kAnyLeg + || (fCutType == ECutType::kAnyLeg && !isLeg1selected)) { + isLeg2selected = + (fPairPreFilterLegs.IsSelected( + static_cast<PairAnalysisTrack*>(track2)) + == selectedMaskLeg); // check cuts for the second track candidate + if (fCutType == ECutType::kBothLegs && !isLeg2selected) + continue; // the second track did not fullfill cuts + if (fCutType == ECutType::kAnyLeg && !isLeg2selected) + continue; // the first and second track did not fullfill cuts + if (fCutType == ECutType::kOneLeg + && isLeg1selected == isLeg2selected) + continue; // both tracks have the same value } } @@ -1374,7 +1379,7 @@ void PairAnalysis::FillPairArrays(Int_t arr1, Int_t arr2) { /// otherwise this will crash in the refiting done in PairAnalysisPairKF /// track rotation is not done here! PairAnalysisPair* candidate; - if (fUseKF && pairIndex <= kSEMM) + if (fUseKF && pairIndex <= static_cast<Int_t>(EPairType::kSEMM)) candidate = new PairAnalysisPairKF(); else candidate = new PairAnalysisPairLV(); @@ -1406,7 +1411,7 @@ void PairAnalysis::FillPairArrays(Int_t arr1, Int_t arr2) { UInt_t cutMask = fPairFilter.IsSelected(candidate); // cut qa - if (pairIndex == kSEPM && fCutQA) { + if (pairIndex == static_cast<Int_t>(EPairType::kSEPM) && fCutQA) { fQAmonitor->FillAll(candidate); fQAmonitor->Fill(cutMask, candidate); } @@ -1423,7 +1428,7 @@ void PairAnalysis::FillPairArrays(Int_t arr1, Int_t arr2) { //add the candidate to the candidate array PairArray(pairIndex)->Add(candidate); //get a new candidate - if (fUseKF && pairIndex <= kSEMM) + if (fUseKF && pairIndex <= static_cast<Int_t>(EPairType::kSEMM)) candidate = new PairAnalysisPairKF(); else candidate = new PairAnalysisPairLV(); @@ -1450,7 +1455,7 @@ void PairAnalysis::FillPairArrayTR() { else candidate = new PairAnalysisPairLV(); candidate->SetKFUsage(fUseKF); - candidate->SetType(kSEPMRot); + candidate->SetType(static_cast<Int_t>(EPairType::kSEPMRot)); UInt_t selectedMask = (1 << fPairFilter.GetCuts()->GetEntries()) - 1; // loop over track arrays @@ -1475,16 +1480,17 @@ void PairAnalysis::FillPairArrayTR() { if (cutMask != selectedMask) continue; //histogram array for the pair - if (fHistoArray) fHistoArray->Fill((Int_t) kSEPMRot, candidate); + if (fHistoArray) + fHistoArray->Fill(static_cast<Int_t>(EPairType::kSEPMRot), candidate); if (fHistos) FillHistogramsPair(candidate); if (fStoreRotatedPairs) { if (fUseKF) - PairArray(kSEPMRot)->Add( - static_cast<PairAnalysisPairKF*>(candidate->Clone())); + PairArray(static_cast<Int_t>(EPairType::kSEPMRot)) + ->Add(static_cast<PairAnalysisPairKF*>(candidate->Clone())); else - PairArray(kSEPMRot)->Add( - static_cast<PairAnalysisPairLV*>(candidate->Clone())); + PairArray(static_cast<Int_t>(EPairType::kSEPMRot)) + ->Add(static_cast<PairAnalysisPairLV*>(candidate->Clone())); // if(fUseKF) PairArray(kSEPMRot)->Add(new PairAnalysisPairKF(*candidate); // else PairArray(kSEPMRot)->Add(new PairAnalysisPairLV(*candidate); } @@ -1547,10 +1553,12 @@ PairAnalysis::FillMCHistograms(Int_t label1, Int_t label2, Int_t nSignal) { // printf("leg/mother labels: %d/%d %d/%d \t part %p,%p \n",label1,mLabel1,label2,mLabel2,part1,part2); // check the same mother option - if (sigMC->GetMothersRelation() == PairAnalysisSignalMC::kSame + if (sigMC->GetMothersRelation() + == PairAnalysisSignalMC::EBranchRelation::kSame && mLabel1 != mLabel2) return kFALSE; - if (sigMC->GetMothersRelation() == PairAnalysisSignalMC::kDifferent + if (sigMC->GetMothersRelation() + == PairAnalysisSignalMC::EBranchRelation::kDifferent && mLabel1 == mLabel2) return kFALSE; @@ -1655,7 +1663,7 @@ void PairAnalysis::FillHistogramsFromPairArray( //Fill Pair information, separately for all pair candidate arrays and the legs TObjArray arrLegs(100); - for (Int_t i = 0; i < (kPairTypes - 1); ++i) { + for (Int_t i = 0; i < (fNTypes - 1); ++i) { Int_t npairs = PairArray(i)->GetEntriesFast(); if (npairs < 1) continue; @@ -1673,7 +1681,7 @@ void PairAnalysis::FillHistogramsFromPairArray( UInt_t cutMask = fPairFilter.IsSelected(pair); // cut qa - if (i == kSEPM && fCutQA) { + if (i == static_cast<Int_t>(EPairType::kSEPM) && fCutQA) { fQAmonitor->FillAll(pair); fQAmonitor->Fill(cutMask, pair); } @@ -1773,7 +1781,7 @@ void PairAnalysis::FillCutStepHistograms(AnalysisFilter* filter, /// fill track histos only once if (!isig) { histo.FillClass(classNamePM, values); - for (Int_t i = 0; i < kLegTypes; ++i) { + for (Int_t i = 0; i < fLegTypes; ++i) { className.Form("Track.%s", fgkTrackClassNames[i]); histo.FillClass(className, values); } diff --git a/analysis/PWGDIL/dielectron/papaframework/PairAnalysis.h b/analysis/PWGDIL/dielectron/papaframework/PairAnalysis.h index 4357cee9c9de25cca4b13c4484e2a32e8fdcc868..2fb5e830406dcaaec35c4370f8554f80632bf541 100644 --- a/analysis/PWGDIL/dielectron/papaframework/PairAnalysis.h +++ b/analysis/PWGDIL/dielectron/papaframework/PairAnalysis.h @@ -23,7 +23,7 @@ class PairAnalysis : public TNamed { friend class PairAnalysisMixingHandler; //mixing as friend class public: - enum EPairType { + enum class EPairType { kSEPP = 0, kSEPM, kSEMM, @@ -34,8 +34,10 @@ public: kSEPMRot, kPairTypes }; - enum ELegType { kSEP, kSEM, kLegTypes }; - enum CutType { + static constexpr Int_t fNTypes = static_cast<Int_t>(EPairType::kPairTypes); + enum class ELegType { kSEP, kSEM, kLegTypes }; + static constexpr Int_t fLegTypes = static_cast<Int_t>(ELegType::kLegTypes); + enum class ECutType { kBothLegs = 0, kAnyLeg, kOneLeg @@ -67,7 +69,7 @@ public: AnalysisFilter& GetTrackFilterMC() { return fTrackFilterMC; } AnalysisFilter& GetPairFilterMC() { return fPairFilterMC; } - void SetPairPreFilterLegCutType(CutType type) { fCutType = type; } + void SetPairPreFilterLegCutType(ECutType type) { fCutType = type; } void SetCutQA(Bool_t qa = kTRUE) { fCutQA = qa; } void SetNoPairing(Bool_t noPairing = kTRUE) { fNoPairing = noPairing; } Bool_t IsNoPairing() { return fNoPairing; } @@ -79,7 +81,7 @@ public: return (i >= 0 && i < 4) ? &fTracks[i] : 0; } const TObjArray* GetPairArray(Int_t i) const { - return (i >= 0 && i < kPairTypes) + return (i >= 0 && i < fNTypes) ? static_cast<TObjArray*>(fPairCandidates->UncheckedAt(i)) : 0; } @@ -196,7 +198,8 @@ private: TObjArray* fSignalsMC = NULL; // array of PairAnalysisSignalMC - CutType fCutType = kBothLegs; // type of pairprefilterleg cut logic + ECutType fCutType = + ECutType::kBothLegs; // type of pairprefilterleg cut logic Bool_t fNoPairing = kFALSE; // if to skip pairing, can be used for track QA only Bool_t fProcessLS = kTRUE; // do the like-sign pairing @@ -285,14 +288,14 @@ inline Int_t PairAnalysis::GetPairIndex(Int_t arr1, Int_t arr2) const { // // get pair index // - if (arr1 == 0 && arr2 == arr1) return kSEPP; - if (arr1 == 0 && arr2 == 1) return kSEPM; - if (arr1 == 1 && arr2 == arr1) return kSEMM; - if (arr1 == 0 && arr2 == 2) return kMEPP; - if (arr1 == 1 && arr2 == 2) return kMEMP; - if (arr1 == 0 && arr2 == 3) return kMEPM; - if (arr1 == 1 && arr2 == 3) return kMEMM; - return kSEPMRot; + if (arr1 == 0 && arr2 == arr1) return static_cast<Int_t>(EPairType::kSEPP); + if (arr1 == 0 && arr2 == 1) return static_cast<Int_t>(EPairType::kSEPM); + if (arr1 == 1 && arr2 == arr1) return static_cast<Int_t>(EPairType::kSEMM); + if (arr1 == 0 && arr2 == 2) return static_cast<Int_t>(EPairType::kMEPP); + if (arr1 == 1 && arr2 == 2) return static_cast<Int_t>(EPairType::kMEMP); + if (arr1 == 0 && arr2 == 3) return static_cast<Int_t>(EPairType::kMEPM); + if (arr1 == 1 && arr2 == 3) return static_cast<Int_t>(EPairType::kMEMM); + return static_cast<Int_t>(EPairType::kSEPMRot); } diff --git a/analysis/PWGDIL/dielectron/papaframework/PairAnalysisCutCombi.cxx b/analysis/PWGDIL/dielectron/papaframework/PairAnalysisCutCombi.cxx index 9f416b4276827a1b7e822dc8286142abb6785ee7..a9edb341924444a7e267cbc432eaa77213ded448 100644 --- a/analysis/PWGDIL/dielectron/papaframework/PairAnalysisCutCombi.cxx +++ b/analysis/PWGDIL/dielectron/papaframework/PairAnalysisCutCombi.cxx @@ -39,7 +39,7 @@ ClassImp(PairAnalysisCutCombi) , fNActiveCuts(0) , fActiveCutsMask(0) , fSelectedCutsMask(0) - , fCutType(kAll) { + , fCutType(ECutType::kAll) { // // Default Constructor // @@ -55,7 +55,7 @@ PairAnalysisCutCombi::PairAnalysisCutCombi(const char* name, const char* title) , fNActiveCuts(0) , fActiveCutsMask(0) , fSelectedCutsMask(0) - , fCutType(kAll) { + , fCutType(ECutType::kAll) { // // Named Constructor // @@ -132,12 +132,13 @@ Bool_t PairAnalysisCutCombi::IsSelected(Double_t* const values) { if (!fCuts[iCut]->IsSelected(values)) CLRBIT(fSelectedCutsMask, iCut); // cut type and intermediate decision - if (fCutType == kAll && !TESTBIT(fSelectedCutsMask, iCut)) return kFALSE; + if (fCutType == ECutType::kAll && !TESTBIT(fSelectedCutsMask, iCut)) + return kFALSE; } // cut type and final decision Bool_t isSelected = (fSelectedCutsMask == fActiveCutsMask); - if (fCutType == kAny) isSelected = (fSelectedCutsMask > 0); + if (fCutType == ECutType::kAny) isSelected = (fSelectedCutsMask > 0); SetSelected(isSelected); return isSelected; } @@ -149,7 +150,7 @@ void PairAnalysisCutCombi::Print(const Option_t* /*option*/) const { // printf("-----------------------------------------------------------------\n"); printf("cut ranges for '%s'\n", GetTitle()); - if (fCutType == kAll) { + if (fCutType == ECutType::kAll) { printf("All Cuts have to be fulfilled\n"); } else { printf("Any Cut has to be fulfilled\n"); diff --git a/analysis/PWGDIL/dielectron/papaframework/PairAnalysisCutCombi.h b/analysis/PWGDIL/dielectron/papaframework/PairAnalysisCutCombi.h index de128f37643817fc8e7441bc7a175d3f485adc94..15552f00d76b77e0119a6a6b4932e2921765a306 100644 --- a/analysis/PWGDIL/dielectron/papaframework/PairAnalysisCutCombi.h +++ b/analysis/PWGDIL/dielectron/papaframework/PairAnalysisCutCombi.h @@ -20,7 +20,7 @@ class PairAnalysisVarManager; class PairAnalysisCutCombi : public AnalysisCuts { public: // Whether all cut criteria have to be fulfilled of just any - enum CutType { kAll = 0, kAny }; + enum class ECutType { kAll = 0, kAny }; PairAnalysisCutCombi(); PairAnalysisCutCombi(const char* name, const char* title); @@ -29,10 +29,10 @@ public: void AddCut(AnalysisCuts* cuts, AnalysisCuts* range); // setters - void SetCutType(CutType type) { fCutType = type; } + void SetCutType(ECutType type) { fCutType = type; } // getters - CutType GetCutType() const { return fCutType; } + ECutType GetCutType() const { return fCutType; } Int_t GetNCuts() { return fNActiveCuts; } // @@ -50,14 +50,14 @@ public: private: - enum { kNmaxCuts = 30 }; + static const Int_t kNmaxCuts = 30; UShort_t fNActiveCuts; // number of acive cuts UInt_t fActiveCutsMask; // mask of active cuts UInt_t fSelectedCutsMask; // Maks of selected cuts, is available after calling IsSelected - CutType fCutType; // type of the cut: any, all + ECutType fCutType; // type of the cut: any, all AnalysisCuts* fRangeCuts[kNmaxCuts]; // cuts to select a range AnalysisCuts* fCuts[kNmaxCuts]; // where these cuts are applied diff --git a/analysis/PWGDIL/dielectron/papaframework/PairAnalysisCutGroup.cxx b/analysis/PWGDIL/dielectron/papaframework/PairAnalysisCutGroup.cxx index 93175f1dfd039126cbbfd00a9808193672739fec..07af6ee5580771ab3d464b9539a1b2e3819731a4 100644 --- a/analysis/PWGDIL/dielectron/papaframework/PairAnalysisCutGroup.cxx +++ b/analysis/PWGDIL/dielectron/papaframework/PairAnalysisCutGroup.cxx @@ -59,7 +59,7 @@ Bool_t PairAnalysisCutGroup::IsSelected(Double_t* const values) { TIter listIterator(&fCutGroupList); while (AnalysisCuts* thisCut = (AnalysisCuts*) listIterator()) { - if (fCompOperator == kCompOR) { + if (fCompOperator == static_cast<Bool_t>(ETruthValues::kCompOR)) { selectionResult = (selectionResult || thisCut->IsSelected(values)); } else { //kCompAND selectionResult = (selectionResult && thisCut->IsSelected(values)); @@ -113,7 +113,7 @@ void PairAnalysisCutGroup::Print(const Option_t* /*option*/) const { printf("*****************************************************************\n"); printf("cut group '%s'\n", GetTitle()); - if (fCompOperator == kCompAND) { + if (fCompOperator == static_cast<Bool_t>(ETruthValues::kCompAND)) { printf("Cut are compared with AND \n"); } else { printf("Cut are compared with OR \n"); diff --git a/analysis/PWGDIL/dielectron/papaframework/PairAnalysisCutGroup.h b/analysis/PWGDIL/dielectron/papaframework/PairAnalysisCutGroup.h index 1e928d16f638dad3da1ff9c26c6f60d438647af9..35c56374d661c2b74326a836ea210c500fb5b2a7 100644 --- a/analysis/PWGDIL/dielectron/papaframework/PairAnalysisCutGroup.h +++ b/analysis/PWGDIL/dielectron/papaframework/PairAnalysisCutGroup.h @@ -23,12 +23,14 @@ class TCollection; class PairAnalysisCutGroup : public AnalysisCuts { public: - enum TruthValues { kCompAND = kTRUE, kCompOR = kFALSE }; - - PairAnalysisCutGroup(Bool_t compOperator = kCompOR); - PairAnalysisCutGroup(const char* name, - const char* title, - Bool_t compOperator = kCompOR); + enum class ETruthValues { kCompAND = kTRUE, kCompOR = kFALSE }; + + PairAnalysisCutGroup( + Bool_t compOperator = static_cast<Bool_t>(ETruthValues::kCompOR)); + PairAnalysisCutGroup( + const char* name, + const char* title, + Bool_t compOperator = static_cast<Bool_t>(ETruthValues::kCompOR)); virtual ~PairAnalysisCutGroup(); diff --git a/analysis/PWGDIL/dielectron/papaframework/PairAnalysisCutQA.cxx b/analysis/PWGDIL/dielectron/papaframework/PairAnalysisCutQA.cxx index 125db4345d5677748bb29d5a8113531d6597b3ec..10f37de15882e8ac7c53d42e5da7de539a717dd4 100644 --- a/analysis/PWGDIL/dielectron/papaframework/PairAnalysisCutQA.cxx +++ b/analysis/PWGDIL/dielectron/papaframework/PairAnalysisCutQA.cxx @@ -53,18 +53,18 @@ PairAnalysisCutQA::PairAnalysisCutQA(const char* name, const char* title) // // Named Constructor // - for (Int_t itype = 0; itype < kNtypes; itype++) { + for (Int_t itype = 0; itype < fNtypes; itype++) { fNCuts[itype] = 1; for (Int_t i = 0; i < 20; i++) { fCutNames[i][itype] = ""; } } - fTypeKeys[kTrack] = "Track"; - fTypeKeys[kTrack2] = "FinalTrack"; - fTypeKeys[kTrackMC] = "MCTrack"; - fTypeKeys[kPair] = "Pair"; - fTypeKeys[kPrePair] = "PrePair"; - fTypeKeys[kEvent] = "Event"; + fTypeKeys[static_cast<Int_t>(ETypes::kTrack)] = "Track"; + fTypeKeys[static_cast<Int_t>(ETypes::kTrack2)] = "FinalTrack"; + fTypeKeys[static_cast<Int_t>(ETypes::kTrackMC)] = "MCTrack"; + fTypeKeys[static_cast<Int_t>(ETypes::kPair)] = "Pair"; + fTypeKeys[static_cast<Int_t>(ETypes::kPrePair)] = "PrePair"; + fTypeKeys[static_cast<Int_t>(ETypes::kEvent)] = "Event"; fQAHistList.SetOwner(kFALSE); } @@ -104,10 +104,10 @@ void PairAnalysisCutQA::Init() { const TVectorD* binsPdg = PairAnalysisHelper::MakeLinBinning(5, 0, 5); const TVectorD* binsDet = PairAnalysisHelper::MakeLinBinning(6, 0, 6); // loop over all types - for (Int_t itype = 0; itype < kNtypes; itype++) { + for (Int_t itype = 0; itype < fNtypes; itype++) { // printf("\n type: %d\n",itype); TString logic = "passed"; - if (itype == kPrePair) logic = "rejected"; + if (itype == static_cast<Int_t>(ETypes::kPrePair)) logic = "rejected"; const TVectorD* binsX = PairAnalysisHelper::MakeLinBinning(fNCuts[itype], 0, fNCuts[itype]); @@ -119,7 +119,8 @@ void PairAnalysisCutQA::Init() { fNCuts[itype], binsX->GetMatrixArray()); - if (itype == kTrack || itype == kTrack2) { + if (itype == static_cast<Int_t>(ETypes::kTrack) + || itype == static_cast<Int_t>(ETypes::kTrack2)) { fPdgCutQA = new TH2I(Form("%sPDG", fTypeKeys[itype]), Form("%sPDG;cuts;PDG code;# %s %ss", fTypeKeys[itype], @@ -148,10 +149,10 @@ void PairAnalysisCutQA::Init() { // Set labels to histograms fCutNames[0][itype] = "no cuts"; - if (fNCuts[kPrePair] > 1) - fCutNames[0][kTrack2] = "pair prefilter"; + if (fNCuts[static_cast<Int_t>(ETypes::kPrePair)] > 1) + fCutNames[0][static_cast<Int_t>(ETypes::kTrack2)] = "pair prefilter"; else - fCutNames[0][kTrack2] = "1st track filter"; + fCutNames[0][static_cast<Int_t>(ETypes::kTrack2)] = "1st track filter"; // loop over all cuts for (Int_t i = 0; i < fNCuts[itype]; i++) { fCutQA->GetXaxis()->SetBinLabel(i + 1, fCutNames[i][itype]); @@ -207,13 +208,13 @@ void PairAnalysisCutQA::Init() { // add to output list switch (itype) { - case kEvent: + case static_cast<Int_t>(ETypes::kEvent): static_cast<THashList*>(fQAHistList.FindObject("Event")) ->AddLast(fCutQA); break; - case kTrack: - case kTrack2: - case kTrackMC: + case static_cast<Int_t>(ETypes::kTrack): + case static_cast<Int_t>(ETypes::kTrack2): + case static_cast<Int_t>(ETypes::kTrackMC): static_cast<THashList*>(fQAHistList.FindObject("Track")) ->AddLast(fCutQA); if (fPdgCutQA) @@ -223,8 +224,8 @@ void PairAnalysisCutQA::Init() { static_cast<THashList*>(fQAHistList.FindObject("Track")) ->AddLast(fEffCutQA); break; - case kPair: - case kPrePair: + case static_cast<Int_t>(ETypes::kPair): + case static_cast<Int_t>(ETypes::kPrePair): static_cast<THashList*>(fQAHistList.FindObject("Pair")) ->AddLast(fCutQA); break; @@ -249,9 +250,10 @@ void PairAnalysisCutQA::AddTrackFilter(AnalysisFilter* filter) { // add new cut class to the list if (addCut) { - fCutNames[fNCuts[kTrack]][kTrack] = thisCut->GetTitle(); + fCutNames[fNCuts[static_cast<Int_t>(ETypes::kTrack)]] + [static_cast<Int_t>(ETypes::kTrack)] = thisCut->GetTitle(); // printf("add cut %s to %d \n",thisCut->GetTitle(),fNCuts[kTrack]); - fNCuts[kTrack]++; + fNCuts[static_cast<Int_t>(ETypes::kTrack)]++; } } // pair filter loop @@ -270,9 +272,10 @@ void PairAnalysisCutQA::AddTrackFilterMC(AnalysisFilter* filter) { // add new cut class to the list if (addCut) { - fCutNames[fNCuts[kTrackMC]][kTrackMC] = thisCut->GetTitle(); + fCutNames[fNCuts[static_cast<Int_t>(ETypes::kTrackMC)]] + [static_cast<Int_t>(ETypes::kTrackMC)] = thisCut->GetTitle(); // printf("add cut %s to %d \n",thisCut->GetTitle(),fNCuts[kTrack]); - fNCuts[kTrackMC]++; + fNCuts[static_cast<Int_t>(ETypes::kTrackMC)]++; } } // pair filter loop @@ -291,9 +294,10 @@ void PairAnalysisCutQA::AddTrackFilter2(AnalysisFilter* filter) { // add new cut class to the list if (addCut) { - fCutNames[fNCuts[kTrack2]][kTrack2] = thisCut->GetTitle(); + fCutNames[fNCuts[static_cast<Int_t>(ETypes::kTrack2)]] + [static_cast<Int_t>(ETypes::kTrack2)] = thisCut->GetTitle(); // printf("add cut %s to %d \n",thisCut->GetTitle(),fNCuts[kTrack]); - fNCuts[kTrack2]++; + fNCuts[static_cast<Int_t>(ETypes::kTrack2)]++; } } // pair filter loop @@ -312,9 +316,10 @@ void PairAnalysisCutQA::AddPairFilter(AnalysisFilter* pairFilter) { // add new cut class to the list if (addCut) { - fCutNames[fNCuts[kPair]][kPair] = thisCut->GetTitle(); + fCutNames[fNCuts[static_cast<Int_t>(ETypes::kPair)]] + [static_cast<Int_t>(ETypes::kPair)] = thisCut->GetTitle(); // printf("add cut %s to %d \n",thisCut->GetTitle(),fNCuts[kPair]); - fNCuts[kPair]++; + fNCuts[static_cast<Int_t>(ETypes::kPair)]++; } } // trk filter loop @@ -333,9 +338,10 @@ void PairAnalysisCutQA::AddPrePairFilter(AnalysisFilter* pairFilter) { // add new cut class to the list if (addCut) { - fCutNames[fNCuts[kPrePair]][kPrePair] = thisCut->GetTitle(); + fCutNames[fNCuts[static_cast<Int_t>(ETypes::kPrePair)]] + [static_cast<Int_t>(ETypes::kPrePair)] = thisCut->GetTitle(); // printf("add cut %s to %d \n",thisCut->GetTitle(),fNCuts[kPair]); - fNCuts[kPrePair]++; + fNCuts[static_cast<Int_t>(ETypes::kPrePair)]++; } } // trk filter loop @@ -354,9 +360,10 @@ void PairAnalysisCutQA::AddEventFilter(AnalysisFilter* eventFilter) { // add new cut class to the list if (addCut) { - fCutNames[fNCuts[kEvent]][kEvent] = thisCut->GetTitle(); + fCutNames[fNCuts[static_cast<Int_t>(ETypes::kEvent)]] + [static_cast<Int_t>(ETypes::kEvent)] = thisCut->GetTitle(); // printf("add cut %s to %d \n",thisCut->GetTitle(),fNCuts[kEvent]); - fNCuts[kEvent]++; + fNCuts[static_cast<Int_t>(ETypes::kEvent)]++; } } // trk filter loop @@ -373,7 +380,8 @@ void PairAnalysisCutQA::Fill(UInt_t mask, TObject* obj, UInt_t addIdx) { // pdg to pdg label Int_t pdg = 0; TString pdglbl = ""; - if (idx == kTrack || idx == kTrack2) { + if (idx == static_cast<Int_t>(ETypes::kTrack) + || idx == static_cast<Int_t>(ETypes::kTrack2)) { pdg = (Int_t)(static_cast<PairAnalysisTrack*>(obj)->PdgCode()); switch (TMath::Abs(pdg)) { case 11: pdglbl = "electron"; break; // electron @@ -387,16 +395,16 @@ void PairAnalysisCutQA::Fill(UInt_t mask, TObject* obj, UInt_t addIdx) { // find histolist THashList* histos = 0x0; switch (idx) { - case kEvent: + case static_cast<Int_t>(ETypes::kEvent): histos = static_cast<THashList*>(fQAHistList.FindObject("Event")); break; - case kTrack: - case kTrack2: - case kTrackMC: + case static_cast<Int_t>(ETypes::kTrack): + case static_cast<Int_t>(ETypes::kTrack2): + case static_cast<Int_t>(ETypes::kTrackMC): histos = static_cast<THashList*>(fQAHistList.FindObject("Track")); break; - case kPair: - case kPrePair: + case static_cast<Int_t>(ETypes::kPair): + case static_cast<Int_t>(ETypes::kPrePair): histos = static_cast<THashList*>(fQAHistList.FindObject("Pair")); break; } @@ -415,7 +423,8 @@ void PairAnalysisCutQA::Fill(UInt_t mask, TObject* obj, UInt_t addIdx) { ->Fill(cutstep, pdglbl.Data(), 1.); // fill detector dependent - if (idx == kTrack || idx == kTrack2) { + if (idx == static_cast<Int_t>(ETypes::kTrack) + || idx == static_cast<Int_t>(ETypes::kTrack2)) { TProfile2D* detQA = static_cast<TProfile2D*>( histos->FindObject(Form("%sMatchEff", fTypeKeys[idx]))); PairAnalysisTrack* t = static_cast<PairAnalysisTrack*>(obj); @@ -455,7 +464,8 @@ void PairAnalysisCutQA::FillAll(TObject* obj, UInt_t addIdx) { // pdg to pdg label Int_t pdg = 0; TString pdglbl = ""; - if (idx == kTrack || idx == kTrack2) { + if (idx == static_cast<Int_t>(ETypes::kTrack) + || idx == static_cast<Int_t>(ETypes::kTrack2)) { pdg = (Int_t)(static_cast<PairAnalysisTrack*>(obj)->PdgCode()); switch (TMath::Abs(pdg)) { case 11: pdglbl = "electron"; break; // electron @@ -469,16 +479,16 @@ void PairAnalysisCutQA::FillAll(TObject* obj, UInt_t addIdx) { // find histolist THashList* histos = 0x0; switch (idx) { - case kEvent: + case static_cast<Int_t>(ETypes::kEvent): histos = static_cast<THashList*>(fQAHistList.FindObject("Event")); break; - case kTrack: - case kTrack2: - case kTrackMC: + case static_cast<Int_t>(ETypes::kTrack): + case static_cast<Int_t>(ETypes::kTrack2): + case static_cast<Int_t>(ETypes::kTrackMC): histos = static_cast<THashList*>(fQAHistList.FindObject("Track")); break; - case kPair: - case kPrePair: + case static_cast<Int_t>(ETypes::kPair): + case static_cast<Int_t>(ETypes::kPrePair): histos = static_cast<THashList*>(fQAHistList.FindObject("Pair")); break; } @@ -490,7 +500,8 @@ void PairAnalysisCutQA::FillAll(TObject* obj, UInt_t addIdx) { ->Fill(0., pdglbl.Data(), 1.); // fill detector dependent - if (idx == kTrack || idx == kTrack2) { + if (idx == static_cast<Int_t>(ETypes::kTrack) + || idx == static_cast<Int_t>(ETypes::kTrack2)) { TProfile2D* detQA = static_cast<TProfile2D*>( histos->FindObject(Form("%sMatchEff", fTypeKeys[idx]))); PairAnalysisTrack* t = static_cast<PairAnalysisTrack*>(obj); @@ -522,15 +533,15 @@ UInt_t PairAnalysisCutQA::GetObjIndex(TObject* obj) { // // printf("INFO: object type is a %s \n", obj->IsA()->GetName()); if (obj->IsA() == CbmMCTrack::Class()) - return kTrackMC; + return static_cast<Int_t>(ETypes::kTrackMC); else if (obj->IsA() == PairAnalysisTrack::Class()) - return kTrack; + return static_cast<Int_t>(ETypes::kTrack); else if (obj->IsA() == PairAnalysisPairLV::Class()) - return kPair; + return static_cast<Int_t>(ETypes::kPair); else if (obj->IsA() == PairAnalysisPairKF::Class()) - return kPair; + return static_cast<Int_t>(ETypes::kPair); else if (obj->IsA() == PairAnalysisEvent::Class()) - return kEvent; + return static_cast<Int_t>(ETypes::kEvent); else fprintf(stderr, "ERROR: object type not supported, please let the author know " diff --git a/analysis/PWGDIL/dielectron/papaframework/PairAnalysisCutQA.h b/analysis/PWGDIL/dielectron/papaframework/PairAnalysisCutQA.h index 4a72d89df792741db8191e1301d27111c8af1b56..ef2ad650c5456e36e48d292b05d7dc8f0b7d42ae 100644 --- a/analysis/PWGDIL/dielectron/papaframework/PairAnalysisCutQA.h +++ b/analysis/PWGDIL/dielectron/papaframework/PairAnalysisCutQA.h @@ -24,7 +24,15 @@ class TCollection; class PairAnalysisCutQA : public TNamed { public: - enum { kEvent = 0, kTrack, kTrack2, kTrackMC, kPair, kPrePair, kNtypes }; + enum class ETypes { + kEvent = 0, + kTrack, + kTrack2, + kTrackMC, + kPair, + kPrePair, + kNtypes + }; PairAnalysisCutQA(); PairAnalysisCutQA(const char* name, const char* title); @@ -46,10 +54,11 @@ public: private: - THashList fQAHistList; //-> list of QA histograms - Int_t fNCuts[kNtypes]; // number of cuts - const char* fCutNames[20][kNtypes]; // cut names - const char* fTypeKeys[kNtypes]; // type names + THashList fQAHistList; //-> list of QA histograms + static constexpr Int_t fNtypes = static_cast<Int_t>(ETypes::kNtypes); + Int_t fNCuts[fNtypes]; // number of cuts + const char* fCutNames[20][fNtypes]; // cut names + const char* fTypeKeys[fNtypes]; // type names UInt_t GetObjIndex(TObject* obj); // return object index diff --git a/analysis/PWGDIL/dielectron/papaframework/PairAnalysisFunction.cxx b/analysis/PWGDIL/dielectron/papaframework/PairAnalysisFunction.cxx index 4fbce1e74f2d4b0535fd5aef6c70ab849b2c0490..90211da835a924782413e23f2f4078f3bc0f3d83 100644 --- a/analysis/PWGDIL/dielectron/papaframework/PairAnalysisFunction.cxx +++ b/analysis/PWGDIL/dielectron/papaframework/PairAnalysisFunction.cxx @@ -242,10 +242,10 @@ void PairAnalysisFunction::SetDefault(EFunction predefinedFunc) { /// use a predefined function, that internally sets the "fFuncSigBack" /// switch (predefinedFunc) { - case kBoltzmann: GetBoltzmann(); break; - case kPtExp: GetPtExp(); break; - case kHagedorn: GetHagedorn(); break; - case kLevi: GetLevi(); break; + case EFunction::kBoltzmann: GetBoltzmann(); break; + case EFunction::kPtExp: GetPtExp(); break; + case EFunction::kHagedorn: GetHagedorn(); break; + case EFunction::kLevi: GetLevi(); break; default: Error("SetDefault", "predefined function not yet implemented"); } } diff --git a/analysis/PWGDIL/dielectron/papaframework/PairAnalysisFunction.h b/analysis/PWGDIL/dielectron/papaframework/PairAnalysisFunction.h index e0b4ecbf18523d57d15390ca4e374249c24ec66e..7d6e70fb0cc02ed9681a20af563edb65527578ad 100644 --- a/analysis/PWGDIL/dielectron/papaframework/PairAnalysisFunction.h +++ b/analysis/PWGDIL/dielectron/papaframework/PairAnalysisFunction.h @@ -22,7 +22,7 @@ class PairAnalysisFunction : public TNamed { public: - enum EFunction { kBoltzmann = 0, kPtExp, kHagedorn, kLevi }; + enum class EFunction { kBoltzmann = 0, kPtExp, kHagedorn, kLevi }; PairAnalysisFunction(); PairAnalysisFunction(const char* name, const char* title); diff --git a/analysis/PWGDIL/dielectron/papaframework/PairAnalysisHF.cxx b/analysis/PWGDIL/dielectron/papaframework/PairAnalysisHF.cxx index 3b95592c45aef0bc02afb02f701c5776c2fcb16d..8af8fb923dd98ba72ce4d7824193f1262f35a644 100644 --- a/analysis/PWGDIL/dielectron/papaframework/PairAnalysisHF.cxx +++ b/analysis/PWGDIL/dielectron/papaframework/PairAnalysisHF.cxx @@ -52,12 +52,12 @@ ClassImp(PairAnalysisHF) , fUsedVars(new TBits(PairAnalysisVarManager::kNMaxValuesMC)) , fArrDielHistos() , fSignalsMC(0x0) - , fVarCutType(new TBits(kMaxCuts)) - , fAxes(kMaxCuts) { + , fVarCutType(new TBits(fMaxCuts)) + , fAxes(fMaxCuts) { // // Default Constructor // - for (Int_t i = 0; i < kMaxCuts; ++i) { + for (Int_t i = 0; i < fMaxCuts; ++i) { fVarCuts[i] = 0; // fVarCutType[i]=0; } @@ -72,12 +72,12 @@ PairAnalysisHF::PairAnalysisHF(const char* name, const char* title) , fUsedVars(new TBits(PairAnalysisVarManager::kNMaxValuesMC)) , fArrDielHistos() , fSignalsMC(0x0) - , fVarCutType(new TBits(kMaxCuts)) - , fAxes(kMaxCuts) { + , fVarCutType(new TBits(fMaxCuts)) + , fAxes(fMaxCuts) { // // Named Constructor // - for (Int_t i = 0; i < kMaxCuts; ++i) { + for (Int_t i = 0; i < fMaxCuts; ++i) { fVarCuts[i] = 0; // fVarCutType[i]=0; } @@ -105,8 +105,8 @@ void PairAnalysisHF::AddCutVariable(PairAnalysisVarManager::ValueTypes type, // the TVectorD is assumed to be surplus after the creation and will be deleted!!! // - // limit number of variables to kMaxCuts - if (fAxes.GetEntriesFast() >= kMaxCuts) return; + // limit number of variables to fMaxCuts + if (fAxes.GetEntriesFast() >= fMaxCuts) return; if (!binLimits) return; diff --git a/analysis/PWGDIL/dielectron/papaframework/PairAnalysisHF.h b/analysis/PWGDIL/dielectron/papaframework/PairAnalysisHF.h index 7fcc5ca2bc61b5bb0de651d994f4dfc97f735565..06a7dabfbd293d4cb5f573c011c576ec57acdced 100644 --- a/analysis/PWGDIL/dielectron/papaframework/PairAnalysisHF.h +++ b/analysis/PWGDIL/dielectron/papaframework/PairAnalysisHF.h @@ -23,7 +23,7 @@ class PairAnalysisHF : public PairAnalysisHistos { public: - enum { kMaxCuts = 20 }; + enum class Max { kMaxCuts = 20 }; PairAnalysisHF(); PairAnalysisHF(const char* name, const char* title); @@ -61,7 +61,8 @@ private: TObjArray fArrDielHistos; //-> array of papahistos TObjArray* fSignalsMC; //! array of MC signals to be stupapad - UShort_t fVarCuts[kMaxCuts]; // cut variables + static const Int_t fMaxCuts = 20; + UShort_t fVarCuts[fMaxCuts]; // cut variables TBits* fVarCutType; // array to store leg booleans // Bool_t fVarCutType[kMaxCuts]; // array to store leg booleans TObjArray fAxes; // Axis descriptions of the cut binning diff --git a/analysis/PWGDIL/dielectron/papaframework/PairAnalysisHistos.cxx b/analysis/PWGDIL/dielectron/papaframework/PairAnalysisHistos.cxx index 55b2aabc22f0532047c131a6c598769ab5409cc2..d6cda82b71b2351349056eefc21e1d81ba49cea9 100644 --- a/analysis/PWGDIL/dielectron/papaframework/PairAnalysisHistos.cxx +++ b/analysis/PWGDIL/dielectron/papaframework/PairAnalysisHistos.cxx @@ -110,7 +110,7 @@ ClassImp(PairAnalysisHistos) , fList(0x0) , fUsedVars(new TBits(PairAnalysisVarManager::kNMaxValues)) , fReservedWords(new TString("Hit;Track;Pair")) - , fPrecision(kFloat) { + , fPrecision(Eprecision::kFloat) { // // Default constructor // @@ -129,7 +129,7 @@ PairAnalysisHistos::PairAnalysisHistos(const char* name, const char* title) , fList(0x0) , fUsedVars(new TBits(PairAnalysisVarManager::kNMaxValues)) , fReservedWords(new TString("Hit;Track;Pair")) - , fPrecision(kFloat) { + , fPrecision(Eprecision::kFloat) { // // TNamed constructor // @@ -437,7 +437,7 @@ TH1* PairAnalysisHistos::GetTHist(const char* histClass, isOk &= (binsX != 0x0); if (!isOk) return 0x0; switch (fPrecision) { - case kFloat: + case Eprecision::kFloat: if (!binsY) return (new TH1F( name, title, binsX->GetNrows() - 1, binsX->GetMatrixArray())); @@ -458,7 +458,7 @@ TH1* PairAnalysisHistos::GetTHist(const char* histClass, binsZ->GetNrows() - 1, binsZ->GetMatrixArray())); break; - case kDouble: + case Eprecision::kDouble: if (!binsY) return (new TH1D( name, title, binsX->GetNrows() - 1, binsX->GetMatrixArray())); @@ -1821,7 +1821,9 @@ TObjArray* PairAnalysisHistos::DrawSame(TString histName, ""); } // change default signal names to titles - for (Int_t isig = 0; isig < PairAnalysisSignalMC::kNSignals; isig++) { + for (Int_t isig = 0; isig < static_cast<Int_t>( + PairAnalysisSignalMC::EDefinedSignal::kNSignals); + isig++) { TString src = PairAnalysisSignalMC::fgkSignals[isig][0]; TString rpl = PairAnalysisSignalMC::fgkSignals[isig][1]; // avoid mc signal in header AND leg-entry @@ -1835,13 +1837,15 @@ TObjArray* PairAnalysisHistos::DrawSame(TString histName, // printf("histClass %s \n",histClass.Data()); // change MCtruth to MC - for (Int_t isig = 0; isig < PairAnalysisSignalMC::kNSignals; isig++) { + for (Int_t isig = 0; isig < static_cast<Int_t>( + PairAnalysisSignalMC::EDefinedSignal::kNSignals); + isig++) { histClass.ReplaceAll("MCtruth", "MC"); ratioName.ReplaceAll("MCtruth", "MC"); divName.ReplaceAll("MCtruth", "MC"); } // remove pairing name if it is a MC - for (Int_t iptype = 0; iptype < PairAnalysis::kPairTypes; iptype++) { + for (Int_t iptype = 0; iptype < PairAnalysis::fNTypes; iptype++) { if (ndel > 0) histClass.ReplaceAll(PairAnalysis::PairClassName(iptype), ""); if (ratioName.CountChar('_') > 0) @@ -2129,8 +2133,10 @@ void PairAnalysisHistos::FillValues(TH1* obj, const Double_t* values) { Bool_t bprf = kFALSE; // UInt_t nValues = (UInt_t) PairAnalysisVarManager::kNMaxValues; UInt_t valueTypes = obj->GetUniqueID(); - if (valueTypes == (UInt_t) PairAnalysisHistos::kNoAutoFill) return; - Bool_t weight = (valueTypes != kNoWeights); + if (valueTypes + == static_cast<UInt_t>(PairAnalysisHistos::Eoption::kNoAutoFill)) + return; + Bool_t weight = (valueTypes != static_cast<UInt_t>(Eoption::kNoWeights)); // check if tprofile if (obj->IsA() == TProfile::Class() || obj->IsA() == TProfile2D::Class() @@ -2261,7 +2267,8 @@ void PairAnalysisHistos::FillValues(THnBase* obj, const Double_t* values) { // skip if manual filling UInt_t value4 = obj->GetUniqueID(); // weighting variable if any - if (value4 == (UInt_t) PairAnalysisHistos::kNoAutoFill) return; + if (value4 == static_cast<UInt_t>(PairAnalysisHistos::Eoption::kNoAutoFill)) + return; // check for formulas and skip the rest if needed TList* list = obj->GetListOfFunctions(); @@ -2270,7 +2277,7 @@ void PairAnalysisHistos::FillValues(THnBase* obj, const Double_t* values) { Bool_t useFormulas = (list && list->Last()); // do weighting - Bool_t weight = (value4 != kNoWeights); + Bool_t weight = (value4 != static_cast<UInt_t>(Eoption::kNoWeights)); // fill array const Int_t dim = obj->GetNdimensions(); @@ -2380,7 +2387,7 @@ void PairAnalysisHistos::AdaptNameTitle(TH1* hist, const char* histClass) { UInt_t vary = hist->GetYaxis()->GetUniqueID(); UInt_t varz = hist->GetZaxis()->GetUniqueID(); UInt_t varp = hist->GetUniqueID(); - Bool_t weight = (varp != kNoWeights); + Bool_t weight = (varp != static_cast<UInt_t>(Eoption::kNoWeights)); if (bprf && dim == 3) weight = kFALSE; // no weighting for profile3D // store titles in the axis diff --git a/analysis/PWGDIL/dielectron/papaframework/PairAnalysisHistos.h b/analysis/PWGDIL/dielectron/papaframework/PairAnalysisHistos.h index 54bef7ba5d2ff6d4697448df9beee4717d85217d..0f0c5d7db7df612057560a94088ae64242ea0d26 100644 --- a/analysis/PWGDIL/dielectron/papaframework/PairAnalysisHistos.h +++ b/analysis/PWGDIL/dielectron/papaframework/PairAnalysisHistos.h @@ -94,13 +94,13 @@ public: PairAnalysisHistos(const char* name, const char* title); virtual ~PairAnalysisHistos(); - enum { + enum class Eoption { kNoAutoFill = 1000000000, kNoProfile = 999, kNoWeights = 998, - kNone = 997 + kNo = 997 }; - enum Eprecision { kFloat = 0, kDouble }; + enum class Eprecision { kFloat = 0, kDouble }; // functions for object creation void SetPrecision(Eprecision precision) { fPrecision = precision; } @@ -114,21 +114,22 @@ public: static void StoreVariables(TH1* obj, UInt_t valType[20]); static void StoreVariables(THnBase* obj, UInt_t valType[20]); - void UserHistogram(const char* histClass, - Int_t ndim, - TObjArray* limits, - UInt_t* vars, - UInt_t valTypeW = kNoWeights); + void + UserHistogram(const char* histClass, + Int_t ndim, + TObjArray* limits, + UInt_t* vars, + UInt_t valTypeW = static_cast<UInt_t>(Eoption::kNoWeights)); void AddSparse(const char* histClass, Int_t ndim, TObjArray* limits, UInt_t* vars, - UInt_t valTypeW = kNoWeights); + UInt_t valTypeW = static_cast<UInt_t>(Eoption::kNoWeights)); void AddSparse(const char* histClass, Int_t ndim, TObjArray* limits, TFormula** vars, - UInt_t valTypeW = kNoWeights); + UInt_t valTypeW = static_cast<UInt_t>(Eoption::kNoWeights)); // templates template<typename valX, @@ -161,10 +162,10 @@ public: binsX, valTypeX, 0x0, - (UInt_t) kNone, + static_cast<UInt_t>(Eoption::kNo), 0x0, - (UInt_t) kNone, - (UInt_t) kNoProfile, + static_cast<UInt_t>(Eoption::kNo), + static_cast<UInt_t>(Eoption::kNoProfile), valTypeW, ""); } @@ -173,7 +174,8 @@ public: TString AddHistogram(const char* histClass, const TVectorD* const binsX, valX valTypeX) { - return AddHistogram(histClass, binsX, valTypeX, (UInt_t) kNoWeights); + return AddHistogram( + histClass, binsX, valTypeX, static_cast<UInt_t>(Eoption::kNoWeights)); } template<typename valX, typename valP, typename valW> @@ -191,7 +193,7 @@ public: 0x0, valTypeP, 0x0, - (UInt_t) kNone, + static_cast<UInt_t>(Eoption::kNo), valTypeP, valTypeW, option); @@ -203,8 +205,12 @@ public: valX valTypeX, valP valTypeP, TString option) { - return AddProfile( - histClass, binsX, valTypeX, valTypeP, option, (UInt_t) kNoWeights); + return AddProfile(histClass, + binsX, + valTypeX, + valTypeP, + option, + static_cast<UInt_t>(Eoption::kNoWeights)); } // 2D @@ -223,8 +229,8 @@ public: binsY, valTypeY, 0x0, - (UInt_t) kNone, - (UInt_t) kNoProfile, + static_cast<UInt_t>(Eoption::kNo), + static_cast<UInt_t>(Eoption::kNoProfile), valTypeW, ""); } @@ -235,8 +241,12 @@ public: valX valTypeX, const TVectorD* const binsY, valY valTypeY) { - return AddHistogram( - histClass, binsX, valTypeX, binsY, valTypeY, (UInt_t) kNoWeights); + return AddHistogram(histClass, + binsX, + valTypeX, + binsY, + valTypeY, + static_cast<UInt_t>(Eoption::kNoWeights)); } template<typename valX, typename valY, typename valP, typename valW> @@ -277,7 +287,7 @@ public: valTypeY, valTypeP, option, - (UInt_t) kNoWeights); + static_cast<UInt_t>(Eoption::kNoWeights)); } // 3D @@ -299,7 +309,7 @@ public: valTypeY, binsZ, valTypeZ, - (UInt_t) kNoProfile, + static_cast<UInt_t>(Eoption::kNoProfile), valTypeW, ""); } @@ -319,7 +329,7 @@ public: valTypeY, binsZ, valTypeZ, - (UInt_t) kNoWeights); + static_cast<UInt_t>(Eoption::kNoWeights)); } //profs @@ -371,7 +381,7 @@ public: valTypeZ, valTypeP, option, - (UInt_t) kNoWeights); + static_cast<UInt_t>(Eoption::kNoWeights)); } // functions to fill objects @@ -486,7 +496,8 @@ TString PairAnalysisHistos::UserObject(const char* histClass, TH1* hist = 0x0; TString err = "err"; //profile or histogram - if (typeid(valTypeP) == typeid(UInt_t) && (uintptr_t) valTypeP == kNoProfile) + if (typeid(valTypeP) == typeid(UInt_t) + && (uintptr_t) valTypeP == static_cast<UInt_t>(Eoption::kNoProfile)) hist = GetTHist(histClass, name, title, binsX, binsY, binsZ); else hist = GetTProf(histClass, name, title, binsX, binsY, binsZ, option); @@ -499,40 +510,55 @@ TString PairAnalysisHistos::UserObject(const char* histClass, // and store variales in uniqueIDs UInt_t valType[20] = {0}; TString func = ""; - func += valTypeX; + func.Form("%d", valTypeX); if (!func.Atoi()) - hist->GetListOfFunctions()->Add(GetFormula("xFormula", func)); + std::cout + << func + << std:: + endl; //hist->GetListOfFunctions()->Add( GetFormula("xFormula",func) ); else valType[0] = func.Atoi(); func = ""; - func += valTypeY; + func.Form("%d", valTypeY); if (!func.Atoi()) - hist->GetListOfFunctions()->Add(GetFormula("yFormula", func)); + std::cout + << func + << std:: + endl; //hist->GetListOfFunctions()->Add( GetFormula("yFormula",func) ); else valType[1] = func.Atoi(); func = ""; - func += valTypeZ; + func.Form("%d", valTypeZ); if (!func.Atoi()) - hist->GetListOfFunctions()->Add(GetFormula("zFormula", func)); + std::cout + << func + << std:: + endl; //hist->GetListOfFunctions()->Add( GetFormula("zFormula",func) ); else valType[2] = func.Atoi(); func = ""; - func += valTypeP; + func.Form("%d", valTypeP); if (!func.Atoi()) - hist->GetListOfFunctions()->Add(GetFormula("pFormula", func)); + std::cout + << func + << std:: + endl; //hist->GetListOfFunctions()->Add( GetFormula("pFormula",func) ); else valType[3] = func.Atoi(); TString func2 = ""; - func2 += valTypeX; + func2.Form("%d", valTypeX); func = ""; - func += valTypeW; + func.Form("%d", valTypeW); //func+=valTypeW; if (!func.Atoi()) - hist->GetListOfFunctions()->Add(GetFormula("wFormula", func)); - else if (func2.Atoi() != kNoWeights) { + std::cout + << func + << std:: + endl; //hist->GetListOfFunctions()->Add( GetFormula("wFormula",func) ); + else if (func2.Atoi() != static_cast<UInt_t>(Eoption::kNoWeights)) { hist->SetUniqueID(func.Atoi()); // store weighting variable fUsedVars->SetBitNumber(func.Atoi(), kTRUE); } @@ -560,7 +586,7 @@ TString PairAnalysisHistos::UserObject(const char* histClass, */ Bool_t isReserved = fReservedWords->Contains(histClass); - if (func2.Atoi() && func2.Atoi() == kNoAutoFill) + if (func2.Atoi() && func2.Atoi() == static_cast<UInt_t>(Eoption::kNoAutoFill)) hist->SetUniqueID(func2.Atoi()); if (isReserved) UserHistogramReservedWords(histClass, hist); diff --git a/analysis/PWGDIL/dielectron/papaframework/PairAnalysisMC.cxx b/analysis/PWGDIL/dielectron/papaframework/PairAnalysisMC.cxx index a0c6012cd71849ff75fc2b74c0fc96f49d38c838..27bd5e3bbcbf0725ad42fddddd13611144d33077 100644 --- a/analysis/PWGDIL/dielectron/papaframework/PairAnalysisMC.cxx +++ b/analysis/PWGDIL/dielectron/papaframework/PairAnalysisMC.cxx @@ -544,19 +544,19 @@ Bool_t PairAnalysisMC::CheckParticleSource( // printf("process: id %d --> %s \n",processID,TMCProcessName[processID]); switch (source) { - case PairAnalysisSignalMC::kDontCare: return kTRUE; break; - case PairAnalysisSignalMC::kPrimary: + case PairAnalysisSignalMC::ESource::kDontCare: return kTRUE; break; + case PairAnalysisSignalMC::ESource::kPrimary: // NOTE: This includes all physics event history (initial state particles, // exchange bosons, quarks, di-quarks, strings, un-stable particles, final state particles) // Only the final state particles make it to the detector!! return (processID == kPPrimary); break; - case PairAnalysisSignalMC::kSecondary: + case PairAnalysisSignalMC::ESource::kSecondary: // particles which are created by the interaction of final state primaries with the detector // or particles from strange weakly decaying particles (e.g. lambda, kaons, etc.) return (!IsPhysicalPrimary(label, processID)); break; - case PairAnalysisSignalMC::kFinalState: + case PairAnalysisSignalMC::ESource::kFinalState: // primary particles created in the collision which reach the detectors // These would be: // 1.) particles produced in the collision @@ -567,7 +567,7 @@ Bool_t PairAnalysisMC::CheckParticleSource( // 6.) includes products of directly produced beauty hadron decays return IsPhysicalPrimary(label, processID); break; - case PairAnalysisSignalMC::kDirect: + case PairAnalysisSignalMC::ESource::kDirect: // Primary particles which do not have any mother // This is the case for: // 1.) Initial state particles (the 2 protons in Pythia pp collisions) @@ -576,12 +576,12 @@ Bool_t PairAnalysisMC::CheckParticleSource( // 3.) Certain particles added via MC generator cocktails (e.g. J/psi added to pythia MB events) return (label >= 0 && GetMothersLabel(label) < 0); break; - case PairAnalysisSignalMC::kSecondaryFromWeakDecay: + case PairAnalysisSignalMC::ESource::kSecondaryFromWeakDecay: // secondary particle from weak decay // or particles from strange weakly decaying particles (e.g. lambda, kaons, etc.) return (IsSecondaryFromWeakDecay(label, processID)); break; - case PairAnalysisSignalMC::kSecondaryFromMaterial: + case PairAnalysisSignalMC::ESource::kSecondaryFromMaterial: // secondary particle from material return (IsSecondaryFromMaterial(label, processID)); break; @@ -621,12 +621,15 @@ Bool_t PairAnalysisMC::CheckDalitzDecision( if (!signalMC) return kFALSE; - if (signalMC->GetDalitz() == PairAnalysisSignalMC::kWhoCares) return kTRUE; + if (signalMC->GetDalitz() == PairAnalysisSignalMC::EDalitz::kWhoCares) + return kTRUE; Bool_t isDalitz = CheckIsDalitz(mLabel, signalMC); - if ((signalMC->GetDalitz() == PairAnalysisSignalMC::kIsDalitz) && !isDalitz) + if ((signalMC->GetDalitz() == PairAnalysisSignalMC::EDalitz::kIsDalitz) + && !isDalitz) return kFALSE; - if ((signalMC->GetDalitz() == PairAnalysisSignalMC::kIsNotDalitz) && isDalitz) + if ((signalMC->GetDalitz() == PairAnalysisSignalMC::EDalitz::kIsNotDalitz) + && isDalitz) return kFALSE; return kTRUE; @@ -675,7 +678,8 @@ Bool_t PairAnalysisMC::IsMCTruth(Int_t label, CbmMCTrack* mcMother = 0x0; Int_t mLabel = -1; if (signalMC->GetMotherPDG(branch) != 0 - || signalMC->GetMotherSource(branch) != PairAnalysisSignalMC::kDontCare) { + || signalMC->GetMotherSource(branch) + != PairAnalysisSignalMC::ESource::kDontCare) { mLabel = GetMothersLabel(label); mcMother = GetMCTrackFromMCEvent(mLabel); @@ -698,7 +702,7 @@ Bool_t PairAnalysisMC::IsMCTruth(Int_t label, Int_t gmLabel = -1; if (signalMC->GetGrandMotherPDG(branch) != 0 || signalMC->GetGrandMotherSource(branch) - != PairAnalysisSignalMC::kDontCare) { + != PairAnalysisSignalMC::ESource::kDontCare) { if (mcMother) { gmLabel = GetMothersLabel(mLabel); mcGrandMother = GetMCTrackFromMCEvent(gmLabel); @@ -719,7 +723,7 @@ Bool_t PairAnalysisMC::IsMCTruth(Int_t label, CbmMCTrack* mcGreatGrandMother = 0x0; Int_t ggmLabel = -1; if(signalMC->GetGreatGrandMotherPDG(branch) !=0/* || - signalMC->GetGreatGrandMotherSource(branch)!=PairAnalysisSignalMC::kDontCare + signalMC->GetGreatGrandMotherSource(branch)!=PairAnalysisSignalMC::ESource::kDontCare */) { if (mcGrandMother) { ggmLabel = GetMothersLabel(gmLabel); @@ -804,7 +808,8 @@ Bool_t PairAnalysisMC::IsMCTruth(const PairAnalysisPair* pair, // mothers Int_t labelM1 = -1; if (signalMC->GetMotherPDG(1) != 0 - || signalMC->GetMotherSource(1) != PairAnalysisSignalMC::kDontCare) { + || signalMC->GetMotherSource(1) + != PairAnalysisSignalMC::ESource::kDontCare) { labelM1 = GetMothersLabel(labelD1); if (labelD1 > -1 && labelM1 > -1) mcM1 = GetMCTrackFromMCEvent(labelM1); directTerm = directTerm && (mcM1 || signalMC->GetMotherPDGexclude(1)) @@ -818,7 +823,8 @@ Bool_t PairAnalysisMC::IsMCTruth(const PairAnalysisPair* pair, Int_t labelM2 = -1; if (signalMC->GetMotherPDG(2) != 0 - || signalMC->GetMotherSource(2) != PairAnalysisSignalMC::kDontCare) { + || signalMC->GetMotherSource(2) + != PairAnalysisSignalMC::ESource::kDontCare) { labelM2 = GetMothersLabel(labelD2); if (labelD2 > -1 && labelM2 > -1) mcM2 = GetMCTrackFromMCEvent(labelM2); directTerm = directTerm && (mcM2 || signalMC->GetMotherPDGexclude(2)) @@ -833,7 +839,8 @@ Bool_t PairAnalysisMC::IsMCTruth(const PairAnalysisPair* pair, // grand-mothers Int_t labelG1 = -1; if (signalMC->GetGrandMotherPDG(1) != 0 - || signalMC->GetGrandMotherSource(1) != PairAnalysisSignalMC::kDontCare) { + || signalMC->GetGrandMotherSource(1) + != PairAnalysisSignalMC::ESource::kDontCare) { labelG1 = GetMothersLabel(labelM1); if (mcM1 && labelG1 > -1) mcG1 = GetMCTrackFromMCEvent(labelG1); directTerm = @@ -847,7 +854,8 @@ Bool_t PairAnalysisMC::IsMCTruth(const PairAnalysisPair* pair, Int_t labelG2 = -1; if (signalMC->GetGrandMotherPDG(2) != 0 - || signalMC->GetGrandMotherSource(2) != PairAnalysisSignalMC::kDontCare) { + || signalMC->GetGrandMotherSource(2) + != PairAnalysisSignalMC::ESource::kDontCare) { labelG2 = GetMothersLabel(labelM2); if (mcM2 && labelG2 > -1) mcG2 = GetMCTrackFromMCEvent(labelG2); directTerm = @@ -863,7 +871,7 @@ Bool_t PairAnalysisMC::IsMCTruth(const PairAnalysisPair* pair, Int_t labelGG1 = -1; if ( signalMC->GetGreatGrandMotherPDG(1) != 0 - /* || signalMC->GetGreatGrandMotherSource(1)!=PairAnalysisSignalMC::kDontCare*/) { + /* || signalMC->GetGreatGrandMotherSource(1)!=PairAnalysisSignalMC::ESource::kDontCare*/) { labelGG1 = GetMothersLabel(labelG1); if (mcG1 && labelGG1 > -1) mcGG1 = GetMCTrackFromMCEvent(labelGG1); directTerm = @@ -878,7 +886,7 @@ Bool_t PairAnalysisMC::IsMCTruth(const PairAnalysisPair* pair, Int_t labelGG2 = -1; if ( signalMC->GetGreatGrandMotherPDG(2) != 0 - /* || signalMC->GetGreatGrandMotherSource(2)!=PairAnalysisSignalMC::kDontCare*/) { + /* || signalMC->GetGreatGrandMotherSource(2)!=PairAnalysisSignalMC::ESource::kDontCare*/) { labelGG2 = GetMothersLabel(labelG2); if (mcG2 && labelGG2 > -1) mcGG2 = GetMCTrackFromMCEvent(labelGG2); directTerm = @@ -909,7 +917,8 @@ Bool_t PairAnalysisMC::IsMCTruth(const PairAnalysisPair* pair, // mothers if (signalMC->GetMotherPDG(1) != 0 - || signalMC->GetMotherSource(1) != PairAnalysisSignalMC::kDontCare) { + || signalMC->GetMotherSource(1) + != PairAnalysisSignalMC::ESource::kDontCare) { if (!mcM2 && labelD2 > -1) { labelM2 = GetMothersLabel(labelD2); if (labelM2 > -1) mcM2 = GetMCTrackFromMCEvent(labelM2); @@ -924,7 +933,8 @@ Bool_t PairAnalysisMC::IsMCTruth(const PairAnalysisPair* pair, } if (signalMC->GetMotherPDG(2) != 0 - || signalMC->GetMotherSource(2) != PairAnalysisSignalMC::kDontCare) { + || signalMC->GetMotherSource(2) + != PairAnalysisSignalMC::ESource::kDontCare) { if (!mcM1 && labelD1 > -1) { labelM1 = GetMothersLabel(labelD1); if (labelM1 > -1) mcM1 = GetMCTrackFromMCEvent(labelM1); @@ -940,7 +950,8 @@ Bool_t PairAnalysisMC::IsMCTruth(const PairAnalysisPair* pair, // grand-mothers if (signalMC->GetGrandMotherPDG(1) != 0 - || signalMC->GetGrandMotherSource(1) != PairAnalysisSignalMC::kDontCare) { + || signalMC->GetGrandMotherSource(1) + != PairAnalysisSignalMC::ESource::kDontCare) { if (!mcG2 && mcM2) { labelG2 = GetMothersLabel(labelM2); if (labelG2 > -1) mcG2 = GetMCTrackFromMCEvent(labelG2); @@ -955,7 +966,8 @@ Bool_t PairAnalysisMC::IsMCTruth(const PairAnalysisPair* pair, } if (signalMC->GetGrandMotherPDG(2) != 0 - || signalMC->GetGrandMotherSource(2) != PairAnalysisSignalMC::kDontCare) { + || signalMC->GetGrandMotherSource(2) + != PairAnalysisSignalMC::ESource::kDontCare) { if (!mcG1 && mcM1) { labelG1 = GetMothersLabel(labelM1); if (labelG1 > -1) mcG1 = GetMCTrackFromMCEvent(labelG1); @@ -972,7 +984,7 @@ Bool_t PairAnalysisMC::IsMCTruth(const PairAnalysisPair* pair, // great grand-mothers if ( signalMC->GetGreatGrandMotherPDG(1) != 0 - /*|| signalMC->GetGreatGrandMotherSource(1)!=PairAnalysisSignalMC::kDontCare*/) { + /*|| signalMC->GetGreatGrandMotherSource(1)!=PairAnalysisSignalMC::ESource::kDontCare*/) { if (!mcGG2 && mcG2) { labelGG2 = GetMothersLabel(labelG2); if (labelGG2 > -1) mcGG2 = GetMCTrackFromMCEvent(labelGG2); @@ -988,7 +1000,7 @@ Bool_t PairAnalysisMC::IsMCTruth(const PairAnalysisPair* pair, if ( signalMC->GetGreatGrandMotherPDG(2) != 0 - /* || signalMC->GetGreatGrandMotherSource(2)!=PairAnalysisSignalMC::kDontCare*/) { + /* || signalMC->GetGreatGrandMotherSource(2)!=PairAnalysisSignalMC::ESource::kDontCare*/) { if (!mcGG1 && mcG1) { labelGG1 = GetMothersLabel(labelG1); if (labelGG1 > -1) mcGG1 = GetMCTrackFromMCEvent(labelGG1); @@ -1003,10 +1015,12 @@ Bool_t PairAnalysisMC::IsMCTruth(const PairAnalysisPair* pair, } Bool_t motherRelation = kTRUE; - if (signalMC->GetMothersRelation() == PairAnalysisSignalMC::kSame) { + if (signalMC->GetMothersRelation() + == PairAnalysisSignalMC::EBranchRelation::kSame) { motherRelation = motherRelation && HaveSameMother(pair); } - if (signalMC->GetMothersRelation() == PairAnalysisSignalMC::kDifferent) { + if (signalMC->GetMothersRelation() + == PairAnalysisSignalMC::EBranchRelation::kDifferent) { motherRelation = motherRelation && !HaveSameMother(pair); } diff --git a/analysis/PWGDIL/dielectron/papaframework/PairAnalysisMixingHandler.cxx b/analysis/PWGDIL/dielectron/papaframework/PairAnalysisMixingHandler.cxx index 4d7176b2e95dab41f5cec9fc3b823b2632db4207..bd24d15ff495882401f666396c90cb90a8077840 100644 --- a/analysis/PWGDIL/dielectron/papaframework/PairAnalysisMixingHandler.cxx +++ b/analysis/PWGDIL/dielectron/papaframework/PairAnalysisMixingHandler.cxx @@ -43,11 +43,11 @@ ClassImp(PairAnalysisMixingHandler) //______________________________________________ PairAnalysisMixingHandler::PairAnalysisMixingHandler(const char* name, const char* title) - : TNamed(name, title), fArrPools("TClonesArray"), fAxes(kMaxCuts) { + : TNamed(name, title), fArrPools("TClonesArray"), fAxes(fMaxCuts) { // // Named Constructor // - for (Int_t i = 0; i < kMaxCuts; ++i) { + for (Int_t i = 0; i < fMaxCuts; ++i) { fEventCuts[i] = 0; } fAxes.SetOwner(kTRUE); @@ -70,8 +70,8 @@ void PairAnalysisMixingHandler::AddVariable( // Add a variable to the mixing handler with arbitrary binning 'bins' // - // limit number of variables to kMaxCuts - if (fAxes.GetEntriesFast() >= kMaxCuts) return; + // limit number of variables to fMaxCuts + if (fAxes.GetEntriesFast() >= fMaxCuts) return; Int_t size = fAxes.GetEntriesFast(); fEventCuts[size] = (UShort_t) type; @@ -192,7 +192,7 @@ void PairAnalysisMixingHandler::DoMixing(TClonesArray& pool, papa->fTracks[2].Add(o); papa->FillPairArrays(1, 2); - if (fMixType == kAll || fMixType == kOSandLS) { + if (fMixType == EMixType::kAll || fMixType == EMixType::kOSandLS) { // all 4 pair arrays will be filled while ((o = ev1P())) papa->fTracks[0].Add(o); @@ -200,10 +200,10 @@ void PairAnalysisMixingHandler::DoMixing(TClonesArray& pool, papa->fTracks[3].Add(o); papa->FillPairArrays(0, 2); papa->FillPairArrays(1, 3); - if (fMixType == kAll) papa->FillPairArrays(0, 3); + if (fMixType == EMixType::kAll) papa->FillPairArrays(0, 3); } - if (fMixType == kOSonly || fMixType == kOSandLS) { + if (fMixType == EMixType::kOSonly || fMixType == EMixType::kOSandLS) { //use the pair type of ev1- ev1 also for ev1 ev1- papa->fTracks[1].Clear(); papa->fTracks[2].Clear(); diff --git a/analysis/PWGDIL/dielectron/papaframework/PairAnalysisMixingHandler.h b/analysis/PWGDIL/dielectron/papaframework/PairAnalysisMixingHandler.h index 733acc900fb6cdf08024e92b4d45e9c464c902dd..869344ece91f5a6b97025401d2f6094622b30abb 100644 --- a/analysis/PWGDIL/dielectron/papaframework/PairAnalysisMixingHandler.h +++ b/analysis/PWGDIL/dielectron/papaframework/PairAnalysisMixingHandler.h @@ -25,8 +25,7 @@ class PairAnalysisEvent; class PairAnalysisMixingHandler : public TNamed { public: - enum { kMaxCuts = 10 }; - enum EMixType { kOSonly = 0, kOSandLS, kAll }; + enum class EMixType { kOSonly = 0, kOSandLS, kAll }; PairAnalysisMixingHandler(); PairAnalysisMixingHandler(const char* name, const char* title); @@ -49,11 +48,13 @@ public: private: UShort_t fDepth = 10; // Number of events per bin to keep in the ring buffer - TClonesArray fArrPools; // Array of events in bins - UShort_t fEventCuts[kMaxCuts]; // cut variables + TClonesArray fArrPools; // Array of events in bins + static const Int_t fMaxCuts = 10; + UShort_t fEventCuts[fMaxCuts]; // cut variables TObjArray fAxes; // Axis descriptions of the event binning - EMixType fMixType = kOSonly; // which combinations to include in the mixing - TProcessID* fPID = NULL; //! internal PID for references to buffered objects + EMixType fMixType = + EMixType::kOSonly; // which combinations to include in the mixing + TProcessID* fPID = NULL; //! internal PID for references to buffered objects void DoMixing(TClonesArray& pool, PairAnalysis* papa); diff --git a/analysis/PWGDIL/dielectron/papaframework/PairAnalysisObjectCuts.cxx b/analysis/PWGDIL/dielectron/papaframework/PairAnalysisObjectCuts.cxx index 42ce955f50e95d5155d7f427a8da5aa0b57a91e2..398dc62608f24c5108cc4441efaf87e6a014e174 100644 --- a/analysis/PWGDIL/dielectron/papaframework/PairAnalysisObjectCuts.cxx +++ b/analysis/PWGDIL/dielectron/papaframework/PairAnalysisObjectCuts.cxx @@ -43,7 +43,7 @@ PairAnalysisObjectCuts::PairAnalysisObjectCuts(const char* name, // // Named contructor // - for (Int_t i = 0; i < PairAnalysisObjectCuts::kNMaxCuts; ++i) { + for (Int_t i = 0; i < fMaxCuts; ++i) { fActiveCuts[i] = 0; fCutExclude[i] = kFALSE; fCutMin[i] = 0x0; @@ -59,7 +59,7 @@ PairAnalysisObjectCuts::~PairAnalysisObjectCuts() { // Destructor // if (fUsedVars) delete fUsedVars; - for (Int_t i = 0; i < PairAnalysisObjectCuts::kNMaxCuts; ++i) { + for (Int_t i = 0; i < fMaxCuts; ++i) { fActiveCuts[i] = 0; if (fCutMin[i]) delete fCutMin[i]; if (fCutMax[i]) delete fCutMax[i]; @@ -191,12 +191,12 @@ Bool_t PairAnalysisObjectCuts::IsSelected(Double_t* const values) { CLRBIT(fSelectedCutsMask, iCut); // cut type and decision - if (fCutType == kAll && !TESTBIT(fSelectedCutsMask, iCut)) + if (fCutType == ECutType::kAll && !TESTBIT(fSelectedCutsMask, iCut)) return kFALSE; // option to (minor) speed improvement } Bool_t isSelected = (fSelectedCutsMask == fActiveCutsMask); - if (fCutType == kAny) isSelected = (fSelectedCutsMask > 0); + if (fCutType == ECutType::kAny) isSelected = (fSelectedCutsMask > 0); SetSelected(isSelected); return isSelected; } @@ -348,7 +348,7 @@ void PairAnalysisObjectCuts::Print(const Option_t* /*option*/) const { // Print cuts and the range // printf("cut ranges for '%s'\n", GetTitle()); - if (fCutType == kAll) { + if (fCutType == ECutType::kAll) { printf("All Cuts have to be fulfilled\n"); } else { printf("Any Cut has to be fulfilled\n"); diff --git a/analysis/PWGDIL/dielectron/papaframework/PairAnalysisObjectCuts.h b/analysis/PWGDIL/dielectron/papaframework/PairAnalysisObjectCuts.h index 946e51f08215241d2604f317c8c3e4738a15d9ae..7a0b24a1e8260ad79689f5d63bb15b5374a9753c 100644 --- a/analysis/PWGDIL/dielectron/papaframework/PairAnalysisObjectCuts.h +++ b/analysis/PWGDIL/dielectron/papaframework/PairAnalysisObjectCuts.h @@ -22,8 +22,8 @@ class THnBase; class PairAnalysisObjectCuts : public AnalysisCuts { public: // Whether all cut criteria have to be fulfilled of just any - enum CutType { kAll = 0, kAny }; - enum { kNMaxCuts = 10 }; + enum class ECutType { kAll = 0, kAny }; + static const Int_t fMaxCuts = 10; PairAnalysisObjectCuts(); PairAnalysisObjectCuts(const char* name, const char* title); @@ -57,10 +57,10 @@ public: Bool_t excludeRange = kFALSE); // setters - void SetCutType(CutType type) { fCutType = type; } + void SetCutType(ECutType type) { fCutType = type; } // getters - CutType GetCutType() const { return fCutType; } + ECutType GetCutType() const { return fCutType; } Int_t GetNCuts() { return fNActiveCuts; } @@ -80,23 +80,19 @@ public: private: - TBits* fUsedVars; // list of used variables - UShort_t - fActiveCuts[PairAnalysisObjectCuts::kNMaxCuts]; // list of activated cuts - UShort_t fNActiveCuts = 0; // number of acive cuts - UInt_t fActiveCutsMask = 0; // mask of active cuts + TBits* fUsedVars; // list of used variables + UShort_t fActiveCuts[fMaxCuts]; // list of activated cuts + UShort_t fNActiveCuts = 0; // number of acive cuts + UInt_t fActiveCutsMask = 0; // mask of active cuts UInt_t fSelectedCutsMask = 0; // Maks of selected cuts, is available after calling IsSelected - CutType fCutType = kAll; // type of the cut: any, all - - Bool_t fCutExclude[PairAnalysisObjectCuts::kNMaxCuts]; // inverse cut logic? - TObject* - fCutMin[PairAnalysisObjectCuts::kNMaxCuts]; // use object as lower cut - TObject* - fCutMax[PairAnalysisObjectCuts::kNMaxCuts]; // use object as upper cut - TFormula* fVarFormula - [PairAnalysisObjectCuts::kNMaxCuts]; // use a formula for the variable + ECutType fCutType = ECutType::kAll; // type of the cut: any, all + + Bool_t fCutExclude[fMaxCuts]; // inverse cut logic? + TObject* fCutMin[fMaxCuts]; // use object as lower cut + TObject* fCutMax[fMaxCuts]; // use object as upper cut + TFormula* fVarFormula[fMaxCuts]; // use a formula for the variable PairAnalysisObjectCuts(const PairAnalysisObjectCuts& c); PairAnalysisObjectCuts& operator=(const PairAnalysisObjectCuts& c); diff --git a/analysis/PWGDIL/dielectron/papaframework/PairAnalysisPairLV.cxx b/analysis/PWGDIL/dielectron/papaframework/PairAnalysisPairLV.cxx index b41845e62e3211d91fb58664a572cc79ba91821f..e43be4161b54699c899a441dbb9fab2c18a6fdf9 100644 --- a/analysis/PWGDIL/dielectron/papaframework/PairAnalysisPairLV.cxx +++ b/analysis/PWGDIL/dielectron/papaframework/PairAnalysisPairLV.cxx @@ -339,8 +339,10 @@ void PairAnalysisPairLV::RotateTrack(PairAnalysisTrackRotator* rot) { //fD1.Print(""); //fD2.Print(""); - if (rot->GetRotationType() == PairAnalysisTrackRotator::kRotatePositive - || (rot->GetRotationType() == PairAnalysisTrackRotator::kRotateBothRandom + if (rot->GetRotationType() + == PairAnalysisTrackRotator::ERotationType::kRotatePositive + || (rot->GetRotationType() + == PairAnalysisTrackRotator::ERotationType::kRotateBothRandom && rotCharge == 0)) { if (first->Charge() > 0) fD1.RotateZ(rotAngle); @@ -348,8 +350,10 @@ void PairAnalysisPairLV::RotateTrack(PairAnalysisTrackRotator* rot) { fD2.RotateZ(rotAngle); } - if (rot->GetRotationType() == PairAnalysisTrackRotator::kRotateNegative - || (rot->GetRotationType() == PairAnalysisTrackRotator::kRotateBothRandom + if (rot->GetRotationType() + == PairAnalysisTrackRotator::ERotationType::kRotateNegative + || (rot->GetRotationType() + == PairAnalysisTrackRotator::ERotationType::kRotateBothRandom && rotCharge == 1)) { if (first->Charge() > 0) fD1.RotateZ(rotAngle); diff --git a/analysis/PWGDIL/dielectron/papaframework/PairAnalysisPairLegCuts.h b/analysis/PWGDIL/dielectron/papaframework/PairAnalysisPairLegCuts.h index 795002839f06f116a8899a2da6d81186c30a6f45..d385b34046a36b63f8fd5ec8008a3c47c59d566a 100644 --- a/analysis/PWGDIL/dielectron/papaframework/PairAnalysisPairLegCuts.h +++ b/analysis/PWGDIL/dielectron/papaframework/PairAnalysisPairLegCuts.h @@ -19,7 +19,7 @@ class PairAnalysisPairLegCuts : public AnalysisCuts { public: - enum CutType { kBothLegs = 0, kAnyLeg, kMixLegs, kOneLeg }; + enum ECutType { kBothLegs = 0, kAnyLeg, kMixLegs, kOneLeg }; PairAnalysisPairLegCuts(); PairAnalysisPairLegCuts(const char* name, const char* title); @@ -37,14 +37,14 @@ public: AnalysisFilter& GetLeg1Filter() { return fFilterLeg1; } AnalysisFilter& GetLeg2Filter() { return fFilterLeg2; } - void SetCutType(CutType type) { fCutType = type; } + void SetCutType(ECutType type) { fCutType = type; } virtual void Print(const Option_t* option = "") const; private: AnalysisFilter fFilterLeg1; // Analysis Filter for leg1 AnalysisFilter fFilterLeg2; // Analysis Filter for leg2 - CutType fCutType = kBothLegs; // Type of the cut + ECutType fCutType = kBothLegs; // Type of the cut PairAnalysisPairLegCuts(const PairAnalysisPairLegCuts& c); PairAnalysisPairLegCuts& operator=(const PairAnalysisPairLegCuts& c); diff --git a/analysis/PWGDIL/dielectron/papaframework/PairAnalysisSignalExt.cxx b/analysis/PWGDIL/dielectron/papaframework/PairAnalysisSignalExt.cxx index b267900475ec4b0afc5c0bb6cb9a23c6c726505c..af1ad1507b619a6f0e89d13a185bc28025c8a2e9 100644 --- a/analysis/PWGDIL/dielectron/papaframework/PairAnalysisSignalExt.cxx +++ b/analysis/PWGDIL/dielectron/papaframework/PairAnalysisSignalExt.cxx @@ -603,7 +603,7 @@ void PairAnalysisSignalExt::Process(TObjArray* const arrhist) { // calculate optimal binning if configured if (fRebinStat < 1. && fBinLimits == 0x0) { fBinLimits = PairAnalysisHelper::MakeStatBinLimits( - (TH1*) FindObject(arrhist, PairAnalysis::kSEPM), fRebinStat); + (TH1*) FindObject(arrhist, PairAnalysis::EPairType::kSEPM), fRebinStat); } @@ -677,7 +677,7 @@ void PairAnalysisSignalExt::Process(TObjArray* const arrhist) { //// get histograms and rebin // SE ++ - fHistDataPP = (TH1*) FindObject(arrhist, PairAnalysis::kSEPP); + fHistDataPP = (TH1*) FindObject(arrhist, PairAnalysis::EPairType::kSEPP); if (fHistDataPP) { if (fBinLimits) { fHistDataPP = fHistDataPP->Rebin( @@ -690,7 +690,7 @@ void PairAnalysisSignalExt::Process(TObjArray* const arrhist) { if (fRebin > 1) fHistDataPP->Rebin(fRebin); } // SE +- - fHistDataPM = (TH1*) FindObject(arrhist, PairAnalysis::kSEPM); + fHistDataPM = (TH1*) FindObject(arrhist, PairAnalysis::EPairType::kSEPM); if (fHistDataPM) { if (fBinLimits) { fHistDataPM = fHistDataPM->Rebin( @@ -704,7 +704,7 @@ void PairAnalysisSignalExt::Process(TObjArray* const arrhist) { fHistDataPM->SetYTitle((fBinLimits ? "dN/dm" : "Counts")); } // SE -- - fHistDataMM = (TH1*) FindObject(arrhist, PairAnalysis::kSEMM); + fHistDataMM = (TH1*) FindObject(arrhist, PairAnalysis::EPairType::kSEMM); if (fHistDataMM) { if (fBinLimits) { fHistDataMM = fHistDataMM->Rebin( @@ -717,7 +717,7 @@ void PairAnalysisSignalExt::Process(TObjArray* const arrhist) { if (fRebin > 1) fHistDataMM->Rebin(fRebin); } // ME ++ - fHistMixPP = (TH1*) FindObject(arrhist, PairAnalysis::kMEPP); + fHistMixPP = (TH1*) FindObject(arrhist, PairAnalysis::EPairType::kMEPP); if (fHistMixPP) { if (fBinLimits) { fHistMixPP = fHistMixPP->Rebin( @@ -730,7 +730,7 @@ void PairAnalysisSignalExt::Process(TObjArray* const arrhist) { if (fRebin > 1) fHistMixPP->Rebin(fRebin); } // ME +- - fHistMixPM = (TH1*) FindObject(arrhist, PairAnalysis::kMEPM); + fHistMixPM = (TH1*) FindObject(arrhist, PairAnalysis::EPairType::kMEPM); if (fHistMixPM) { if (fBinLimits) { fHistMixPM = fHistMixPM->Rebin( @@ -743,7 +743,7 @@ void PairAnalysisSignalExt::Process(TObjArray* const arrhist) { if (fRebin > 1) fHistMixPM->Rebin(fRebin); } // ME -+ - fHistMixMP = (TH1*) FindObject(arrhist, PairAnalysis::kMEMP); + fHistMixMP = (TH1*) FindObject(arrhist, PairAnalysis::EPairType::kMEMP); if (fHistMixMP) { if (fBinLimits) { fHistMixMP = fHistMixMP->Rebin( @@ -758,7 +758,7 @@ void PairAnalysisSignalExt::Process(TObjArray* const arrhist) { if (fHistMixPM) fHistMixMP->Add(fHistMixPM); // merge ME +- and -+ } // ME -- - fHistMixMM = (TH1*) FindObject(arrhist, PairAnalysis::kMEMM); + fHistMixMM = (TH1*) FindObject(arrhist, PairAnalysis::EPairType::kMEMM); if (fHistMixMM) { if (fBinLimits) { fHistMixMM = fHistMixMM->Rebin( @@ -771,7 +771,7 @@ void PairAnalysisSignalExt::Process(TObjArray* const arrhist) { if (fRebin > 1) fHistMixMM->Rebin(fRebin); } // TR +- - fHistDataTR = (TH1*) FindObject(arrhist, PairAnalysis::kSEPMRot); + fHistDataTR = (TH1*) FindObject(arrhist, PairAnalysis::EPairType::kSEPMRot); if (fHistDataTR) { if (fBinLimits) { fHistDataTR = fHistDataTR->Rebin( @@ -1289,23 +1289,27 @@ void PairAnalysisSignalExt::Draw(const Option_t* option) { // styling fHistDataPM->SetNameTitle(Form("unlike-sign%s", GetName()), "unlike-sign"); fHistDataPM->UseCurrentStyle(); - PairAnalysisStyler::Style(fHistDataPM, PairAnalysisStyler::kRaw); + PairAnalysisStyler::Style(fHistDataPM, + static_cast<Int_t>(PairAnalysisStyler::Eidx::kRaw)); if (fPlotMin != fPlotMax) fHistDataPM->SetAxisRange(fPlotMin, fPlotMax, "X"); fHistBackground->SetNameTitle(fgkBackgroundMethodNames[fMethod], fgkBackgroundMethodNames[fMethod]); fHistBackground->UseCurrentStyle(); - PairAnalysisStyler::Style(fHistBackground, PairAnalysisStyler::kBgrd); + PairAnalysisStyler::Style( + fHistBackground, static_cast<Int_t>(PairAnalysisStyler::Eidx::kBgrd)); fHistSignal->SetNameTitle(Form("signal%s", GetName()), "signal"); fHistSignal->UseCurrentStyle(); - PairAnalysisStyler::Style(fHistSignal, PairAnalysisStyler::kSig); + PairAnalysisStyler::Style(fHistSignal, + static_cast<Int_t>(PairAnalysisStyler::Eidx::kSig)); if (fPlotMin != fPlotMax) fHistSignal->SetAxisRange(fPlotMin, fPlotMax, "X"); if (fHistCocktail) { fHistCocktail->SetNameTitle(Form("cocktail%s", GetName()), "cocktail"); fHistCocktail->UseCurrentStyle(); - PairAnalysisStyler::Style(fHistCocktail, PairAnalysisStyler::kCocktail); + PairAnalysisStyler::Style( + fHistCocktail, static_cast<Int_t>(PairAnalysisStyler::Eidx::kCocktail)); if (fPlotMin != fPlotMax) fHistCocktail->SetAxisRange(fPlotMin, fPlotMax, "X"); } @@ -1313,12 +1317,14 @@ void PairAnalysisSignalExt::Draw(const Option_t* option) { if (optSB) { fHistSB->SetNameTitle(Form("s2b%s", GetName()), "signal"); fHistSB->UseCurrentStyle(); - PairAnalysisStyler::Style(fHistSB, PairAnalysisStyler::kSig); + PairAnalysisStyler::Style( + fHistSB, static_cast<Int_t>(PairAnalysisStyler::Eidx::kSig)); if (fPlotMin != fPlotMax) fHistSB->SetAxisRange(fPlotMin, fPlotMax, "X"); } else if (optSgn) { fHistSgn->SetNameTitle(Form("sgn%s", GetName()), "signal"); fHistSgn->UseCurrentStyle(); - PairAnalysisStyler::Style(fHistSgn, PairAnalysisStyler::kSig); + PairAnalysisStyler::Style( + fHistSgn, static_cast<Int_t>(PairAnalysisStyler::Eidx::kSig)); if (fPlotMin != fPlotMax) fHistSgn->SetAxisRange(fPlotMin, fPlotMax, "X"); } @@ -1328,7 +1334,8 @@ void PairAnalysisSignalExt::Draw(const Option_t* option) { fgPeakShape->UseCurrentStyle(); // fgPeakShape->SetTitle(""); - PairAnalysisStyler::Style(fgPeakShape, PairAnalysisStyler::kFit); + PairAnalysisStyler::Style(fgPeakShape, + static_cast<Int_t>(PairAnalysisStyler::Eidx::kFit)); // draw stuff if (c) c->cd(1); @@ -1494,7 +1501,9 @@ void PairAnalysisSignalExt::Draw(const Option_t* option) { histClass.ReplaceAll("Pair.", ""); histClass.ReplaceAll("Pair_", ""); // change default signal names to titles - for (Int_t isig = 0; isig < PairAnalysisSignalMC::kNSignals; isig++) { + for (Int_t isig = 0; isig < static_cast<Int_t>( + PairAnalysisSignalMC::EDefinedSignal::kNSignals); + isig++) { histClass.ReplaceAll(PairAnalysisSignalMC::fgkSignals[isig][0], PairAnalysisSignalMC::fgkSignals[isig][1]); } diff --git a/analysis/PWGDIL/dielectron/papaframework/PairAnalysisSignalExt.h b/analysis/PWGDIL/dielectron/papaframework/PairAnalysisSignalExt.h index e793b6c00f3ea378b35d218d80fa3e5db17d7d73..7c5707eaaf7bd0a84e385c3b47f972f3b8f0d772 100644 --- a/analysis/PWGDIL/dielectron/papaframework/PairAnalysisSignalExt.h +++ b/analysis/PWGDIL/dielectron/papaframework/PairAnalysisSignalExt.h @@ -287,7 +287,8 @@ PairAnalysisSignalExt::FindObject(TObjArray* arrhist, // // return ( arrhist->FindObject(Form("Pair.%s",PairAnalysis::PairClassName(type))) ); - TString ref = Form("Pair.%s", PairAnalysis::PairClassName(type)); + TString ref = + Form("Pair.%s", PairAnalysis::PairClassName(static_cast<Int_t>(type))); for (Int_t i = 0; i < arrhist->GetEntriesFast(); i++) { if (!ref.CompareTo(arrhist->UncheckedAt(i)->GetTitle())) return arrhist->UncheckedAt(i); diff --git a/analysis/PWGDIL/dielectron/papaframework/PairAnalysisSignalMC.cxx b/analysis/PWGDIL/dielectron/papaframework/PairAnalysisSignalMC.cxx index b54d3114cac1ce112724b93164d8f9f5d33d116e..14b6cdb9ba978e526bcf664a807c985d667dd4c9 100644 --- a/analysis/PWGDIL/dielectron/papaframework/PairAnalysisSignalMC.cxx +++ b/analysis/PWGDIL/dielectron/papaframework/PairAnalysisSignalMC.cxx @@ -66,35 +66,35 @@ ClassImp(PairAnalysisSignalMC) - const char* PairAnalysisSignalMC::fgkSignals[kNSignals][2] = - { //default signal names+titles - {"InclJpsi", "J/#psi (incl.)"}, - {"NonRadJpsi", "J/#psi"}, - {"RadJpsi", "J/#psi (rad.)"}, - {"Psi2S", "#psi(2S)"}, - {"Conversion", "#gamma#rightarrow e^{+}e^{-}"}, - {"Rho0", "#rho^{0}"}, - {"OmegaDalitz", "#omega_{Dalitz}"}, - {"Omega", "#omega"}, - {"Phi", "#phi"}, - {"EtaDalitz", "#eta_{Dalitz}"}, - {"Eta", "#eta"}, - {"Pi0Dalitz", "#pi^{0}_{Dalitz}"}, - {"Pi0Gamma", "#pi^{0}"}, - {"Pi0", "#pi^{0}"}, - {"K0Short", "K^{0}_{S}"}, - {"Lambda", "#Lambda"}, - {"InclElePM", "e^{+}e^{-} (incl.)"}, - {"DeltaElectron", "#delta rays"}, - {"PrimElectron", "e (prim.)"}, - {"PrimMuon", "#mu (prim.)"}, - {"PrimPion", "#pi (prim.)"}, - {"PrimKaon", "K (prim.)"}, - {"PrimProton", "p (prim.)"}, - {"Deuteron", "d"}, - {"Triton", "t"}, - {"Helion", "^{3}He"}, - {"Alpha", "^{4}He"}}; + const char* PairAnalysisSignalMC::fgkSignals[static_cast<int>( + EDefinedSignal::kNSignals)][2] = { //default signal names+titles + {"InclJpsi", "J/#psi (incl.)"}, + {"NonRadJpsi", "J/#psi"}, + {"RadJpsi", "J/#psi (rad.)"}, + {"Psi2S", "#psi(2S)"}, + {"Conversion", "#gamma#rightarrow e^{+}e^{-}"}, + {"Rho0", "#rho^{0}"}, + {"OmegaDalitz", "#omega_{Dalitz}"}, + {"Omega", "#omega"}, + {"Phi", "#phi"}, + {"EtaDalitz", "#eta_{Dalitz}"}, + {"Eta", "#eta"}, + {"Pi0Dalitz", "#pi^{0}_{Dalitz}"}, + {"Pi0Gamma", "#pi^{0}"}, + {"Pi0", "#pi^{0}"}, + {"K0Short", "K^{0}_{S}"}, + {"Lambda", "#Lambda"}, + {"InclElePM", "e^{+}e^{-} (incl.)"}, + {"DeltaElectron", "#delta rays"}, + {"PrimElectron", "e (prim.)"}, + {"PrimMuon", "#mu (prim.)"}, + {"PrimPion", "#pi (prim.)"}, + {"PrimKaon", "K (prim.)"}, + {"PrimProton", "p (prim.)"}, + {"Deuteron", "d"}, + {"Triton", "t"}, + {"Helion", "^{3}He"}, + {"Alpha", "^{4}He"}}; //_________________________________________________________________________ PairAnalysisSignalMC::PairAnalysisSignalMC() @@ -125,160 +125,176 @@ PairAnalysisSignalMC::PairAnalysisSignalMC(EDefinedSignal defaultSignal) // TString title = ""; switch (defaultSignal) { - case kInclJpsi: - SetNameTitle(fgkSignals[defaultSignal][0], fgkSignals[defaultSignal][1]); + case EDefinedSignal::kInclJpsi: + SetNameTitle(fgkSignals[static_cast<UInt_t>(defaultSignal)][0], + fgkSignals[static_cast<UInt_t>(defaultSignal)][1]); fLeg1 = 11; fLeg2 = -11; fMother1 = 443; fMother2 = 443; - fMothersRelation = kSame; + fMothersRelation = EBranchRelation::kSame; break; - case kRadJpsi: - SetNameTitle(fgkSignals[defaultSignal][0], fgkSignals[defaultSignal][1]); + case EDefinedSignal::kRadJpsi: + SetNameTitle(fgkSignals[static_cast<UInt_t>(defaultSignal)][0], + fgkSignals[static_cast<UInt_t>(defaultSignal)][1]); fLeg1 = 11; fLeg2 = -11; fMother1 = 443; fMother2 = 443; - fMothersRelation = kSame; - fDalitz = kIsDalitz; + fMothersRelation = EBranchRelation::kSame; + fDalitz = EDalitz::kIsDalitz; fDalitzPdg = 22; break; - case kNonRadJpsi: - SetNameTitle(fgkSignals[defaultSignal][0], fgkSignals[defaultSignal][1]); + case EDefinedSignal::kNonRadJpsi: + SetNameTitle(fgkSignals[static_cast<UInt_t>(defaultSignal)][0], + fgkSignals[static_cast<UInt_t>(defaultSignal)][1]); fLeg1 = 11; fLeg2 = -11; fMother1 = 443; fMother2 = 443; - fMothersRelation = kSame; - fDalitz = kIsNotDalitz; + fMothersRelation = EBranchRelation::kSame; + fDalitz = EDalitz::kIsNotDalitz; fDalitzPdg = 22; break; - case kPsi2S: - SetNameTitle(fgkSignals[defaultSignal][0], fgkSignals[defaultSignal][1]); + case EDefinedSignal::kPsi2S: + SetNameTitle(fgkSignals[static_cast<UInt_t>(defaultSignal)][0], + fgkSignals[static_cast<UInt_t>(defaultSignal)][1]); fLeg1 = 11; fLeg2 = -11; fMother1 = 100443; fMother2 = 100443; - fMothersRelation = kSame; + fMothersRelation = EBranchRelation::kSame; break; - case kConversion: - SetNameTitle(fgkSignals[defaultSignal][0], fgkSignals[defaultSignal][1]); + case EDefinedSignal::kConversion: + SetNameTitle(fgkSignals[static_cast<UInt_t>(defaultSignal)][0], + fgkSignals[static_cast<UInt_t>(defaultSignal)][1]); fLeg1 = 11; fLeg2 = -11; fMother1 = 22; fMother2 = 22; - fMother1Source = kSecondary; - fMother2Source = kSecondary; - fMothersRelation = kSame; + fMother1Source = ESource::kSecondary; + fMother2Source = ESource::kSecondary; + fMothersRelation = EBranchRelation::kSame; // fGrandMother1=111; fGrandMother2=111; // fGrandMother1Exclude=kTRUE; fGrandMother1Exclude=111; SetGEANTProcess(kPPair); break; - case kRho0: - SetNameTitle(fgkSignals[defaultSignal][0], fgkSignals[defaultSignal][1]); + case EDefinedSignal::kRho0: + SetNameTitle(fgkSignals[static_cast<UInt_t>(defaultSignal)][0], + fgkSignals[static_cast<UInt_t>(defaultSignal)][1]); fLeg1 = 11; fLeg2 = -11; fMother1 = 113; fMother2 = 113; - fMothersRelation = kSame; + fMothersRelation = EBranchRelation::kSame; SetGEANTProcess(kPPrimary); //pluto break; - case kOmega: - SetNameTitle(fgkSignals[defaultSignal][0], fgkSignals[defaultSignal][1]); + case EDefinedSignal::kOmega: + SetNameTitle(fgkSignals[static_cast<UInt_t>(defaultSignal)][0], + fgkSignals[static_cast<UInt_t>(defaultSignal)][1]); fLeg1 = 11; fLeg2 = -11; fMother1 = 223; fMother2 = 223; - fMothersRelation = kSame; - fDalitz = kIsNotDalitz; + fMothersRelation = EBranchRelation::kSame; + fDalitz = EDalitz::kIsNotDalitz; fDalitzPdg = 111; SetGEANTProcess(kPPrimary); //pluto break; - case kOmegaDalitz: - SetNameTitle(fgkSignals[defaultSignal][0], fgkSignals[defaultSignal][1]); + case EDefinedSignal::kOmegaDalitz: + SetNameTitle(fgkSignals[static_cast<UInt_t>(defaultSignal)][0], + fgkSignals[static_cast<UInt_t>(defaultSignal)][1]); fLeg1 = 11; fLeg2 = -11; fMother1 = 223; fMother2 = 223; - fMothersRelation = kSame; - fDalitz = kIsDalitz; + fMothersRelation = EBranchRelation::kSame; + fDalitz = EDalitz::kIsDalitz; fDalitzPdg = 111; SetGEANTProcess(kPPrimary); //pluto break; - case kPhi: - SetNameTitle(fgkSignals[defaultSignal][0], fgkSignals[defaultSignal][1]); + case EDefinedSignal::kPhi: + SetNameTitle(fgkSignals[static_cast<UInt_t>(defaultSignal)][0], + fgkSignals[static_cast<UInt_t>(defaultSignal)][1]); fLeg1 = 11; fLeg2 = -11; fMother1 = 333; fMother2 = 333; - fMothersRelation = kSame; + fMothersRelation = EBranchRelation::kSame; SetGEANTProcess(kPPrimary); //pluto break; - case kEtaDalitz: - SetNameTitle(fgkSignals[defaultSignal][0], fgkSignals[defaultSignal][1]); + case EDefinedSignal::kEtaDalitz: + SetNameTitle(fgkSignals[static_cast<UInt_t>(defaultSignal)][0], + fgkSignals[static_cast<UInt_t>(defaultSignal)][1]); fLeg1 = 11; fLeg2 = -11; fCheckBothChargesLeg1 = kTRUE; fCheckBothChargesLeg2 = kTRUE; fMother1 = 221; fMother2 = 221; - fMothersRelation = kSame; - fDalitz = kIsDalitz; + fMothersRelation = EBranchRelation::kSame; + fDalitz = EDalitz::kIsDalitz; fDalitzPdg = 22; // SetGEANTProcess(kPPrimary); //pluto break; - case kEta: - SetNameTitle(fgkSignals[defaultSignal][0], fgkSignals[defaultSignal][1]); + case EDefinedSignal::kEta: + SetNameTitle(fgkSignals[static_cast<UInt_t>(defaultSignal)][0], + fgkSignals[static_cast<UInt_t>(defaultSignal)][1]); fLeg1 = 11; fLeg2 = -11; fMother1 = 221; fMother2 = 221; - fMothersRelation = kSame; + fMothersRelation = EBranchRelation::kSame; // SetGEANTProcess(kPUserDefined); break; - case kPi0: - SetNameTitle(fgkSignals[defaultSignal][0], fgkSignals[defaultSignal][1]); + case EDefinedSignal::kPi0: + SetNameTitle(fgkSignals[static_cast<UInt_t>(defaultSignal)][0], + fgkSignals[static_cast<UInt_t>(defaultSignal)][1]); fLeg1 = 11; fLeg2 = -11; fMother1 = 111; fMother2 = 111; - fMothersRelation = kSame; + fMothersRelation = EBranchRelation::kSame; // SetGEANTProcess(kPUserDefined); break; - case kPi0Gamma: - SetNameTitle(fgkSignals[defaultSignal][0], fgkSignals[defaultSignal][1]); + case EDefinedSignal::kPi0Gamma: + SetNameTitle(fgkSignals[static_cast<UInt_t>(defaultSignal)][0], + fgkSignals[static_cast<UInt_t>(defaultSignal)][1]); fLeg1 = 11; fLeg2 = -11; fMother1 = 22; fMother2 = 22; - fMothersRelation = kSame; + fMothersRelation = EBranchRelation::kSame; fGrandMother1 = 111; fGrandMother2 = 111; // SetGEANTProcess(kPUserDefined); break; - case kPi0Dalitz: - SetNameTitle(fgkSignals[defaultSignal][0], fgkSignals[defaultSignal][1]); + case EDefinedSignal::kPi0Dalitz: + SetNameTitle(fgkSignals[static_cast<UInt_t>(defaultSignal)][0], + fgkSignals[static_cast<UInt_t>(defaultSignal)][1]); fLeg1 = 11; fLeg2 = -11; fMother1 = 111; fMother2 = 111; - fMothersRelation = kSame; - fDalitz = kIsDalitz; + fMothersRelation = EBranchRelation::kSame; + fDalitz = EDalitz::kIsDalitz; fDalitzPdg = 22; // SetGEANTProcess(kPPrimary); //pluto break; - case kK0Short: - SetNameTitle(fgkSignals[defaultSignal][0], fgkSignals[defaultSignal][1]); + case EDefinedSignal::kK0Short: + SetNameTitle(fgkSignals[static_cast<UInt_t>(defaultSignal)][0], + fgkSignals[static_cast<UInt_t>(defaultSignal)][1]); fLeg1 = 211; fLeg2 = -211; fMother1 = 310; fMother2 = 310; fCheckBothChargesMother1 = kTRUE; fCheckBothChargesMother2 = kTRUE; - fMothersRelation = kSame; + fMothersRelation = EBranchRelation::kSame; break; - case kLambda: - SetNameTitle(fgkSignals[defaultSignal][0], fgkSignals[defaultSignal][1]); + case EDefinedSignal::kLambda: + SetNameTitle(fgkSignals[static_cast<UInt_t>(defaultSignal)][0], + fgkSignals[static_cast<UInt_t>(defaultSignal)][1]); fLeg1 = 211; fLeg2 = 2212; fCheckBothChargesLeg1 = kTRUE; @@ -287,109 +303,120 @@ PairAnalysisSignalMC::PairAnalysisSignalMC(EDefinedSignal defaultSignal) fMother2 = 3122; fCheckBothChargesMother1 = kTRUE; fCheckBothChargesMother2 = kTRUE; - fMothersRelation = kSame; + fMothersRelation = EBranchRelation::kSame; break; - case kInclElePM: - SetNameTitle(fgkSignals[defaultSignal][0], fgkSignals[defaultSignal][1]); + case EDefinedSignal::kInclElePM: + SetNameTitle(fgkSignals[static_cast<UInt_t>(defaultSignal)][0], + fgkSignals[static_cast<UInt_t>(defaultSignal)][1]); fLeg1 = 11; fLeg2 = -11; fCheckBothChargesLeg1 = kTRUE; fCheckBothChargesLeg2 = kTRUE; - fMother1Source = kPrimary; - fMother2Source = kPrimary; - // fMothersRelation=kSame; + fMother1Source = ESource::kPrimary; + fMother2Source = ESource::kPrimary; + // fMothersRelation=EBranchRelation::kSame; break; - case kDeltaElectron: //single delta ray electrons - SetNameTitle(fgkSignals[defaultSignal][0], fgkSignals[defaultSignal][1]); + case EDefinedSignal::kDeltaElectron: //single delta ray electrons + SetNameTitle(fgkSignals[static_cast<UInt_t>(defaultSignal)][0], + fgkSignals[static_cast<UInt_t>(defaultSignal)][1]); fLeg1 = 11; fLeg2 = 1; fCheckBothChargesLeg1 = kTRUE; SetGEANTProcess(kPDeltaRay); fIsSingleParticle = kTRUE; - // fMother1Source=kPrimary; fMother2Source=kDontCare; + // fMother1Source=ESource::kPrimary; fMother2Source=kDontCare; break; - case kPrimElectron: //single electrons - SetNameTitle(fgkSignals[defaultSignal][0], fgkSignals[defaultSignal][1]); + case EDefinedSignal::kPrimElectron: //single electrons + SetNameTitle(fgkSignals[static_cast<UInt_t>(defaultSignal)][0], + fgkSignals[static_cast<UInt_t>(defaultSignal)][1]); fLeg1 = 11; fLeg2 = 1; fCheckBothChargesLeg1 = kTRUE; - //fMother1Source=kPrimary; + //fMother1Source=ESource::kPrimary; SetGEANTProcess(kPPrimary); fIsSingleParticle = kTRUE; break; - case kPrimMuon: //single muoons - SetNameTitle(fgkSignals[defaultSignal][0], fgkSignals[defaultSignal][1]); + case EDefinedSignal::kPrimMuon: //single muoons + SetNameTitle(fgkSignals[static_cast<UInt_t>(defaultSignal)][0], + fgkSignals[static_cast<UInt_t>(defaultSignal)][1]); fLeg1 = 13; fLeg2 = 1; fCheckBothChargesLeg1 = kTRUE; - //fMother1Source=kPrimary; + //fMother1Source=ESource::kPrimary; SetGEANTProcess(kPPrimary); fIsSingleParticle = kTRUE; break; - case kPrimPion: //single pions - SetNameTitle(fgkSignals[defaultSignal][0], fgkSignals[defaultSignal][1]); + case EDefinedSignal::kPrimPion: //single pions + SetNameTitle(fgkSignals[static_cast<UInt_t>(defaultSignal)][0], + fgkSignals[static_cast<UInt_t>(defaultSignal)][1]); fLeg1 = 211; fLeg2 = 1; fCheckBothChargesLeg1 = kTRUE; - //fMother1Source=kPrimary; + //fMother1Source=ESource::kPrimary; SetGEANTProcess(kPPrimary); fIsSingleParticle = kTRUE; break; - case kPrimKaon: //single kaons - SetNameTitle(fgkSignals[defaultSignal][0], fgkSignals[defaultSignal][1]); + case EDefinedSignal::kPrimKaon: //single kaons + SetNameTitle(fgkSignals[static_cast<UInt_t>(defaultSignal)][0], + fgkSignals[static_cast<UInt_t>(defaultSignal)][1]); fLeg1 = 321; fLeg2 = 1; fCheckBothChargesLeg1 = kTRUE; - //fMother1Source=kPrimary; + //fMother1Source=ESource::kPrimary; SetGEANTProcess(kPPrimary); fIsSingleParticle = kTRUE; break; - case kPrimProton: //single protons - SetNameTitle(fgkSignals[defaultSignal][0], fgkSignals[defaultSignal][1]); + case EDefinedSignal::kPrimProton: //single protons + SetNameTitle(fgkSignals[static_cast<UInt_t>(defaultSignal)][0], + fgkSignals[static_cast<UInt_t>(defaultSignal)][1]); fLeg1 = 2212; fLeg2 = 1; fCheckBothChargesLeg1 = kTRUE; - //fMother1Source=kPrimary; + //fMother1Source=ESource::kPrimary; SetGEANTProcess(kPPrimary); fIsSingleParticle = kTRUE; break; - case kDeuteron: - SetNameTitle(fgkSignals[defaultSignal][0], fgkSignals[defaultSignal][1]); + case EDefinedSignal::kDeuteron: + SetNameTitle(fgkSignals[static_cast<UInt_t>(defaultSignal)][0], + fgkSignals[static_cast<UInt_t>(defaultSignal)][1]); fLeg1 = 1000010020; ; fLeg2 = 1; fCheckBothChargesLeg1 = kTRUE; - //fMother1Source=kPrimary; + //fMother1Source=ESource::kPrimary; //SetGEANTProcess(kPPrimary); fIsSingleParticle = kTRUE; break; - case kTriton: - SetNameTitle(fgkSignals[defaultSignal][0], fgkSignals[defaultSignal][1]); + case EDefinedSignal::kTriton: + SetNameTitle(fgkSignals[static_cast<UInt_t>(defaultSignal)][0], + fgkSignals[static_cast<UInt_t>(defaultSignal)][1]); fLeg1 = 1000010030; ; fLeg2 = 1; fCheckBothChargesLeg1 = kTRUE; - //fMother1Source=kPrimary; + //fMother1Source=ESource::kPrimary; //SetGEANTProcess(kPPrimary); fIsSingleParticle = kTRUE; break; - case kHe3: - SetNameTitle(fgkSignals[defaultSignal][0], fgkSignals[defaultSignal][1]); + case EDefinedSignal::kHe3: + SetNameTitle(fgkSignals[static_cast<UInt_t>(defaultSignal)][0], + fgkSignals[static_cast<UInt_t>(defaultSignal)][1]); fLeg1 = 1000020030; ; fLeg2 = 1; fCheckBothChargesLeg1 = kTRUE; - //fMother1Source=kPrimary; + //fMother1Source=ESource::kPrimary; //SetGEANTProcess(kPPrimary); fIsSingleParticle = kTRUE; break; - case kAlpha: - SetNameTitle(fgkSignals[defaultSignal][0], fgkSignals[defaultSignal][1]); + case EDefinedSignal::kAlpha: + SetNameTitle(fgkSignals[static_cast<UInt_t>(defaultSignal)][0], + fgkSignals[static_cast<UInt_t>(defaultSignal)][1]); fLeg1 = 1000020040; ; fLeg2 = 1; fCheckBothChargesLeg1 = kTRUE; - //fMother1Source=kPrimary; + //fMother1Source=ESource::kPrimary; //SetGEANTProcess(kPPrimary); fIsSingleParticle = kTRUE; break; diff --git a/analysis/PWGDIL/dielectron/papaframework/PairAnalysisSignalMC.h b/analysis/PWGDIL/dielectron/papaframework/PairAnalysisSignalMC.h index 30d2666dbeef47f4cf990f84f4607f5f26ecd032..7320f20ff9e255ef52006456165505768ea719e4 100644 --- a/analysis/PWGDIL/dielectron/papaframework/PairAnalysisSignalMC.h +++ b/analysis/PWGDIL/dielectron/papaframework/PairAnalysisSignalMC.h @@ -15,8 +15,8 @@ class PairAnalysisSignalMC : public TNamed { public: - enum EBranchRelation { kUndefined = 0, kSame, kDifferent }; - enum ESource { + enum class EBranchRelation { kUndefined = 0, kSame, kDifferent }; + enum class ESource { kDontCare = 0, kPrimary, kSecondary, @@ -25,8 +25,8 @@ public: kSecondaryFromWeakDecay, kSecondaryFromMaterial }; - enum EDalitz { kWhoCares = 0, kIsDalitz, kIsNotDalitz }; - enum EDefinedSignal { + enum class EDalitz { kWhoCares = 0, kIsDalitz, kIsNotDalitz }; + enum class EDefinedSignal { kInclJpsi = 0, kNonRadJpsi, kRadJpsi, @@ -204,7 +204,8 @@ public: EDalitz GetDalitz() const { return fDalitz; } Int_t GetDalitzPdg() const { return fDalitzPdg; } - static const char* fgkSignals[kNSignals][2]; //default signal names+titles + static const char* fgkSignals[static_cast<int>(EDefinedSignal::kNSignals)] + [2]; //default signal names+titles void Print(Option_t* option = "") const; @@ -232,12 +233,12 @@ private: Bool_t fGreatGrandMother2Exclude = kFALSE; // great grandmother 2 // Particle sources - ESource fLeg1Source = kDontCare; // leg 1 source - ESource fLeg2Source = kDontCare; // leg 2 source - ESource fMother1Source = kDontCare; // mother 1 source - ESource fMother2Source = kDontCare; // mother 2 source - ESource fGrandMother1Source = kDontCare; // grandmother 1 source - ESource fGrandMother2Source = kDontCare; // grandmother 2 source + ESource fLeg1Source = ESource::kDontCare; // leg 1 source + ESource fLeg2Source = ESource::kDontCare; // leg 2 source + ESource fMother1Source = ESource::kDontCare; // mother 1 source + ESource fMother2Source = ESource::kDontCare; // mother 2 source + ESource fGrandMother1Source = ESource::kDontCare; // grandmother 1 source + ESource fGrandMother2Source = ESource::kDontCare; // grandmother 2 source // Flaggs whether to check both charges of a given PDG code Bool_t fCheckBothChargesLeg1 = kFALSE; // check both charges of the legs pdg @@ -252,7 +253,7 @@ private: kFALSE; // great grand mother 2 Bool_t fCheckGEANTProcess = kFALSE; // GEANT process - EBranchRelation fMothersRelation = + EBranchRelation fMothersRelation = EBranchRelation:: kUndefined; // mother 1&2 relation (same, different or whatever) TMCProcess fGEANTProcess = kPPrimary; // GEANT process ID (see roots TMCProcess) @@ -261,8 +262,8 @@ private: UInt_t fType = 0; // lookup variable for weighting factors // dalitz decays - EDalitz fDalitz = kWhoCares; // check for dalitz decay - Int_t fDalitzPdg = 0; // dalitz PDG + EDalitz fDalitz = EDalitz::kWhoCares; // check for dalitz decay + Int_t fDalitzPdg = 0; // dalitz PDG Bool_t fFillPureMCStep = kFALSE; // check and fill the pure MC step Bool_t fIsSingleParticle = diff --git a/analysis/PWGDIL/dielectron/papaframework/PairAnalysisSpectrum.cxx b/analysis/PWGDIL/dielectron/papaframework/PairAnalysisSpectrum.cxx index ca8cfaa53986c38eeeed33ffdf105011810050ea..fa25438d1afce3e88041d2a4c22b35a6bf2995a8 100644 --- a/analysis/PWGDIL/dielectron/papaframework/PairAnalysisSpectrum.cxx +++ b/analysis/PWGDIL/dielectron/papaframework/PairAnalysisSpectrum.cxx @@ -266,7 +266,8 @@ void PairAnalysisSpectrum::Process() { if (!histArr && h) histArr = h->DrawSame(Form("pM_%s", fVar.Data()), "nomc goff"); - TH2* histPM = (TH2*) sig->FindObject(histArr, PairAnalysis::kSEPM); + TH2* histPM = + (TH2*) sig->FindObject(histArr, PairAnalysis::EPairType::kSEPM); if (!histPM) return; TObjArray tmpArr; @@ -637,7 +638,7 @@ void PairAnalysisSpectrum::DrawSpectrum(const char* varexp, // if(gx[j]!=xLo) break; // check should not be needed Double_t uce = 0.; switch (fSystMthd) { - case kBarlow: + case ESystMethod::kBarlow: // I. calc uncorr. stat. error from sub/superset w.r.t. first measurement uce = TMath::Sqrt( TMath::Abs(gye[j] * gye[j] - gye[first] * gye[first])); @@ -645,19 +646,19 @@ void PairAnalysisSpectrum::DrawSpectrum(const char* varexp, // NOTE: 0.9 can be change to a max value of 1->1sigma, 0.9 is more consevative esys = TMath::Max(esys, TMath::Abs(ysys - gy[j]) - 0.9 * uce); break; - case kSystMax: + case ESystMethod::kSystMax: esys = TMath::Max(esys, TMath::Abs(ysys - gy[j])); break; - case kSystRMS: esys += gy[j] * gy[j]; break; + case ESystMethod::kSystRMS: esys += gy[j] * gy[j]; break; } // printf("bin error %f \t syst %f from abs %f \n",gye[j],esys, TMath::Abs( gy[j] )); } // normalisation switch (fSystMthd) { - case kBarlow: /* nothing to be done */ break; - case kSystMax: /* nothing to be done */ break; - case kSystRMS: + case ESystMethod::kBarlow: /* nothing to be done */ break; + case ESystMethod::kSystMax: /* nothing to be done */ break; + case ESystMethod::kSystRMS: esys = TMath::Sqrt(TMath::Abs(esys / (nsys ? nsys : 1) - ysys * ysys)); break; @@ -865,7 +866,8 @@ void PairAnalysisSpectrum::Fit(TString drawoption) { return; } - PairAnalysisStyler::Style(fFuncSigBack, PairAnalysisStyler::kFit); + PairAnalysisStyler::Style(fFuncSigBack, + static_cast<Int_t>(PairAnalysisStyler::Eidx::kFit)); fFuncSigBack->SetLineColor(fSignal->GetLineColor()); // fFuncSigBack->SetLineStyle(kDashed); diff --git a/analysis/PWGDIL/dielectron/papaframework/PairAnalysisSpectrum.h b/analysis/PWGDIL/dielectron/papaframework/PairAnalysisSpectrum.h index 3bd0ef3bc1041a6222cfe491f73ccd51013d74a0..b1020e4b05f9f16d46000d5b903f9894b3891464 100644 --- a/analysis/PWGDIL/dielectron/papaframework/PairAnalysisSpectrum.h +++ b/analysis/PWGDIL/dielectron/papaframework/PairAnalysisSpectrum.h @@ -59,7 +59,7 @@ ClassImp(Extraction) class PairAnalysisSpectrum : public PairAnalysisFunction { public: - enum ESystMethod { kBarlow = 0, kSystMax, kSystRMS }; + enum class ESystMethod { kBarlow = 0, kSystMax, kSystRMS }; PairAnalysisSpectrum(); PairAnalysisSpectrum(const char* name, const char* title); @@ -108,7 +108,7 @@ private: // calculation ESystMethod fSystMthd = - kSystMax; // method for systematic uncertainty calculation + ESystMethod::kSystMax; // method for systematic uncertainty calculation // input TString fInputKeys[100]; // keys to identify the extraction diff --git a/analysis/PWGDIL/dielectron/papaframework/PairAnalysisStyleDefs.h b/analysis/PWGDIL/dielectron/papaframework/PairAnalysisStyleDefs.h index 5a1c7ec8c739ede4e4255eca68ec7ff7c878bec0..cf5bde5ddf7909927e214f6c67a8cbbcda24d968 100644 --- a/analysis/PWGDIL/dielectron/papaframework/PairAnalysisStyleDefs.h +++ b/analysis/PWGDIL/dielectron/papaframework/PairAnalysisStyleDefs.h @@ -21,25 +21,29 @@ namespace PairAnalysisStyler { - // enum Eidx : Int_t { kRaw=100, kBgrd, kSig, kFit, kCocktail, kNidx }; - // enum EfillMark : Int_t { kOpenMarker=1, kFullMarker, kDontCare }; - // enum Estyle : Int_t { kNMaxMarker=13, kNMaxLine=4, kNMaxColor=17 }; - // enum Epalette : Int_t { kDefault=0, kGoodBad }; + /* enum class Eidx { kRaw=100, kBgrd, kSig, kFit, kCocktail, kNidx }; */ + /* enum class EfillMark { kOpenMarker=1, kFullMarker, kDontCare }; */ + /* enum class Estyle { kNMaxMarker=13, kNMaxLine=4, kNMaxColor=17 }; */ + /* enum class Epalette { kDefault=0, kGoodBad }; */ - static Int_t fCol[kNidx - kRaw] = {kBlack, - kTeal - 8, - kBlack, - kTeal - 7, - kTeal - 7}; - static Int_t fMrk[kNidx - kRaw] = {kFullCircle, - kOpenCircle, - kOpenCircle, - kDot, - kDot}; - static Double_t fSze[kNidx - kRaw] = {1., 1., 1., 1., 1.}; - static Int_t fLne[kNidx - kRaw] = {kSolid, kSolid, kSolid, kSolid, kSolid}; - static Double_t fWdt[kNidx - kRaw] = {2., 2., 2., 2., 2.}; - static Int_t fFll[kNidx - kRaw] = {0, 0, 0, 0, 0}; //kFEmpty + static Int_t fCol[static_cast<Int_t>(PairAnalysisStyler::Eidx::kNidx) + - static_cast<Int_t>(PairAnalysisStyler::Eidx::kRaw)] = + {kBlack, kTeal - 8, kBlack, kTeal - 7, kTeal - 7}; + static Int_t fMrk[static_cast<Int_t>(PairAnalysisStyler::Eidx::kNidx) + - static_cast<Int_t>(PairAnalysisStyler::Eidx::kRaw)] = + {kFullCircle, kOpenCircle, kOpenCircle, kDot, kDot}; + static Double_t fSze[static_cast<Int_t>(PairAnalysisStyler::Eidx::kNidx) + - static_cast<Int_t>(PairAnalysisStyler::Eidx::kRaw)] = + {1., 1., 1., 1., 1.}; + static Int_t fLne[static_cast<Int_t>(PairAnalysisStyler::Eidx::kNidx) + - static_cast<Int_t>(PairAnalysisStyler::Eidx::kRaw)] = + {kSolid, kSolid, kSolid, kSolid, kSolid}; + static Double_t fWdt[static_cast<Int_t>(PairAnalysisStyler::Eidx::kNidx) + - static_cast<Int_t>(PairAnalysisStyler::Eidx::kRaw)] = + {2., 2., 2., 2., 2.}; + static Int_t fFll[static_cast<Int_t>(PairAnalysisStyler::Eidx::kNidx) + - static_cast<Int_t>(PairAnalysisStyler::Eidx::kRaw)] = + {0, 0, 0, 0, 0}; //kFEmpty static Int_t Marker[] = {kFullCircle, kFullDiamond, diff --git a/analysis/PWGDIL/dielectron/papaframework/PairAnalysisStyler.cxx b/analysis/PWGDIL/dielectron/papaframework/PairAnalysisStyler.cxx index 71b46a15311a927ad2c8996589a928d01dafef66..ea545b2501c7be5e453ec5c901a418216a5f27ee 100644 --- a/analysis/PWGDIL/dielectron/papaframework/PairAnalysisStyler.cxx +++ b/analysis/PWGDIL/dielectron/papaframework/PairAnalysisStyler.cxx @@ -289,19 +289,25 @@ void PairAnalysisStyler::Style(TObject* obj, Int_t idx) { // marker attributes if (obj->InheritsFrom(TAttMarker::Class())) { if (idx >= 100) { // predefined styles - dynamic_cast<TAttMarker*>(obj)->SetMarkerSize(fSze[idx - kRaw]); - dynamic_cast<TAttMarker*>(obj)->SetMarkerStyle(fMrk[idx - kRaw]); - dynamic_cast<TAttMarker*>(obj)->SetMarkerColor(fCol[idx - kRaw]); + dynamic_cast<TAttMarker*>(obj)->SetMarkerSize( + fSze[idx - static_cast<Int_t>(Eidx::kRaw)]); + dynamic_cast<TAttMarker*>(obj)->SetMarkerStyle( + fMrk[idx - static_cast<Int_t>(Eidx::kRaw)]); + dynamic_cast<TAttMarker*>(obj)->SetMarkerColor( + fCol[idx - static_cast<Int_t>(Eidx::kRaw)]); } else { dynamic_cast<TAttMarker*>(obj)->SetMarkerSize(1.5); - dynamic_cast<TAttMarker*>(obj)->SetMarkerStyle(Marker[idx % kNMaxMarker]); - dynamic_cast<TAttMarker*>(obj)->SetMarkerColor(Color[idx % kNMaxColor]); - if (idx >= kNMaxColor && idx < kNMaxColor * 2) { - idx = idx % kNMaxColor; + dynamic_cast<TAttMarker*>(obj)->SetMarkerStyle( + Marker[idx % static_cast<Int_t>(Estyle::kNMaxMarker)]); + dynamic_cast<TAttMarker*>(obj)->SetMarkerColor( + Color[idx % static_cast<Int_t>(Estyle::kNMaxColor)]); + if (idx >= static_cast<Int_t>(Estyle::kNMaxColor) + && idx < static_cast<Int_t>(Estyle::kNMaxColor) * 2) { + idx = idx % static_cast<Int_t>(Estyle::kNMaxColor); dynamic_cast<TAttMarker*>(obj)->SetMarkerColor( TColor::GetColorDark(Color[idx])); - } else if (idx >= kNMaxColor * 2) { - idx = idx % (2 * kNMaxColor); + } else if (idx >= static_cast<Int_t>(Estyle::kNMaxColor) * 2) { + idx = idx % (2 * static_cast<Int_t>(Estyle::kNMaxColor)); dynamic_cast<TAttMarker*>(obj)->SetMarkerColor( TColor::GetColorBright(Color[idx])); } @@ -312,19 +318,25 @@ void PairAnalysisStyler::Style(TObject* obj, Int_t idx) { if (obj->InheritsFrom(TAttLine::Class())) { // printf("index %d for %s \n",idx,obj->GetName()); if (idx >= 100) { // predefined styles - dynamic_cast<TAttLine*>(obj)->SetLineWidth(fWdt[idx - kRaw]); - dynamic_cast<TAttLine*>(obj)->SetLineStyle(fLne[idx - kRaw]); - dynamic_cast<TAttLine*>(obj)->SetLineColor(fCol[idx - kRaw]); + dynamic_cast<TAttLine*>(obj)->SetLineWidth( + fWdt[idx - static_cast<Int_t>(Eidx::kRaw)]); + dynamic_cast<TAttLine*>(obj)->SetLineStyle( + fLne[idx - static_cast<Int_t>(Eidx::kRaw)]); + dynamic_cast<TAttLine*>(obj)->SetLineColor( + fCol[idx - static_cast<Int_t>(Eidx::kRaw)]); } else { dynamic_cast<TAttLine*>(obj)->SetLineWidth(2); - dynamic_cast<TAttLine*>(obj)->SetLineStyle(Line[idx % kNMaxLine]); - dynamic_cast<TAttLine*>(obj)->SetLineColor(Color[idx % kNMaxColor]); - if (idx >= kNMaxColor && idx < kNMaxColor * 2) { - idx = idx % kNMaxColor; + dynamic_cast<TAttLine*>(obj)->SetLineStyle( + Line[idx % static_cast<Int_t>(Estyle::kNMaxLine)]); + dynamic_cast<TAttLine*>(obj)->SetLineColor( + Color[idx % static_cast<Int_t>(Estyle::kNMaxColor)]); + if (idx >= static_cast<Int_t>(Estyle::kNMaxColor) + && idx < static_cast<Int_t>(Estyle::kNMaxColor) * 2) { + idx = idx % static_cast<Int_t>(Estyle::kNMaxColor); dynamic_cast<TAttLine*>(obj)->SetLineColor( TColor::GetColorDark(Color[idx])); - } else if (idx >= kNMaxColor * 2) { - idx = idx % (2 * kNMaxColor); + } else if (idx >= static_cast<Int_t>(Estyle::kNMaxColor) * 2) { + idx = idx % (2 * static_cast<Int_t>(Estyle::kNMaxColor)); dynamic_cast<TAttLine*>(obj)->SetLineColor( TColor::GetColorBright(Color[idx])); } @@ -334,17 +346,23 @@ void PairAnalysisStyler::Style(TObject* obj, Int_t idx) { // fill attributes, only used if fill style is set (default: not) if (obj->InheritsFrom(TAttFill::Class())) { // printf("fill style %d for index: %d \n",Fill[0],idx); - if (idx >= 100 && fFll[idx - kRaw] >= 0) { // predefined styles - dynamic_cast<TAttFill*>(obj)->SetFillColor(fCol[idx - kRaw]); - dynamic_cast<TAttFill*>(obj)->SetFillStyle(fFll[idx - kRaw]); + if (idx >= 100 + && fFll[idx - static_cast<Int_t>(Eidx::kRaw)] + >= 0) { // predefined styles + dynamic_cast<TAttFill*>(obj)->SetFillColor( + fCol[idx - static_cast<Int_t>(Eidx::kRaw)]); + dynamic_cast<TAttFill*>(obj)->SetFillStyle( + fFll[idx - static_cast<Int_t>(Eidx::kRaw)]); } else if (Fill[0] >= 0) { - dynamic_cast<TAttFill*>(obj)->SetFillColor(Color[idx % kNMaxColor]); - if (idx >= kNMaxColor && idx < kNMaxColor * 2) { - idx = idx % kNMaxColor; + dynamic_cast<TAttFill*>(obj)->SetFillColor( + Color[idx % static_cast<Int_t>(Estyle::kNMaxColor)]); + if (idx >= static_cast<Int_t>(Estyle::kNMaxColor) + && idx < static_cast<Int_t>(Estyle::kNMaxColor) * 2) { + idx = idx % static_cast<Int_t>(Estyle::kNMaxColor); dynamic_cast<TAttFill*>(obj)->SetFillColor( TColor::GetColorDark(Color[idx])); - } else if (idx >= kNMaxColor * 2) { - idx = idx % (2 * kNMaxColor); + } else if (idx >= static_cast<Int_t>(Estyle::kNMaxColor) * 2) { + idx = idx % (2 * static_cast<Int_t>(Estyle::kNMaxColor)); dynamic_cast<TAttFill*>(obj)->SetFillColor( TColor::GetColorBright(Color[idx])); } @@ -358,7 +376,7 @@ void PairAnalysisStyler::SetForceLineStyle(Int_t line) { // // force a certain line style // - for (Int_t i = 0; i < kNMaxLine; i++) { + for (Int_t i = 0; i < static_cast<Int_t>(Estyle::kNMaxLine); i++) { Line[i] = line; } } @@ -368,7 +386,7 @@ void PairAnalysisStyler::SetForceColor(Int_t color) { // // force a certain color // - for (Int_t i = 0; i < kNMaxColor; i++) { + for (Int_t i = 0; i < static_cast<Int_t>(Estyle::kNMaxColor); i++) { Color[i] = color; } } @@ -378,7 +396,9 @@ void PairAnalysisStyler::SetForceFillStyle(Int_t fill) { // // force a certain color // - for (Int_t i = 0; i < (kNidx - kRaw); i++) { + for (Int_t i = 0; + i < (static_cast<Int_t>(Eidx::kNidx) - static_cast<Int_t>(Eidx::kRaw)); + i++) { fFll[i] = fill; } Fill[0] = fill; @@ -389,50 +409,50 @@ void PairAnalysisStyler::SetForceMarkerFillStyle(EfillMark fill) { // // force a certain marker fill style // - for (Int_t i = 0; i < kNMaxMarker; i++) { + for (Int_t i = 0; i < static_cast<Int_t>(Estyle::kNMaxMarker); i++) { switch (Marker[i]) { case kOpenCircle: - if (fill == kFullMarker) Marker[i] = kFullCircle; + if (fill == EfillMark::kFullMarker) Marker[i] = kFullCircle; break; case kOpenSquare: - if (fill == kFullMarker) Marker[i] = kFullSquare; + if (fill == EfillMark::kFullMarker) Marker[i] = kFullSquare; break; case kOpenTriangleUp: - if (fill == kFullMarker) Marker[i] = kFullTriangleUp; + if (fill == EfillMark::kFullMarker) Marker[i] = kFullTriangleUp; break; case kOpenTriangleDown: - if (fill == kFullMarker) Marker[i] = kFullTriangleDown; + if (fill == EfillMark::kFullMarker) Marker[i] = kFullTriangleDown; break; case kOpenStar: - if (fill == kFullMarker) Marker[i] = kFullStar; + if (fill == EfillMark::kFullMarker) Marker[i] = kFullStar; break; case kOpenDiamond: - if (fill == kFullMarker) Marker[i] = kFullDiamond; + if (fill == EfillMark::kFullMarker) Marker[i] = kFullDiamond; break; case kOpenCross: - if (fill == kFullMarker) Marker[i] = kFullCross; + if (fill == EfillMark::kFullMarker) Marker[i] = kFullCross; break; case kFullCircle: - if (fill == kOpenMarker) Marker[i] = kOpenCircle; + if (fill == EfillMark::kOpenMarker) Marker[i] = kOpenCircle; break; case kFullSquare: - if (fill == kOpenMarker) Marker[i] = kOpenSquare; + if (fill == EfillMark::kOpenMarker) Marker[i] = kOpenSquare; break; case kFullTriangleUp: - if (fill == kOpenMarker) Marker[i] = kOpenTriangleUp; + if (fill == EfillMark::kOpenMarker) Marker[i] = kOpenTriangleUp; break; case kFullTriangleDown: - if (fill == kOpenMarker) Marker[i] = kOpenTriangleDown; + if (fill == EfillMark::kOpenMarker) Marker[i] = kOpenTriangleDown; break; case kFullStar: - if (fill == kOpenMarker) Marker[i] = kOpenStar; + if (fill == EfillMark::kOpenMarker) Marker[i] = kOpenStar; break; case kFullDiamond: - if (fill == kOpenMarker) Marker[i] = kOpenDiamond; + if (fill == EfillMark::kOpenMarker) Marker[i] = kOpenDiamond; break; case kFullCross: - if (fill == kOpenMarker) Marker[i] = kOpenCross; + if (fill == EfillMark::kOpenMarker) Marker[i] = kOpenCross; break; } } @@ -450,12 +470,12 @@ void PairAnalysisStyler::SetStyle(Eidx idx, // // change predefined style "idx" according to arguments // - fCol[idx - kRaw] = col; - fMrk[idx - kRaw] = marker; - fSze[idx - kRaw] = size; - fLne[idx - kRaw] = line; - fWdt[idx - kRaw] = width; - fFll[idx - kRaw] = fill; + fCol[static_cast<Int_t>(idx) - static_cast<Int_t>(Eidx::kRaw)] = col; + fMrk[static_cast<Int_t>(idx) - static_cast<Int_t>(Eidx::kRaw)] = marker; + fSze[static_cast<Int_t>(idx) - static_cast<Int_t>(Eidx::kRaw)] = size; + fLne[static_cast<Int_t>(idx) - static_cast<Int_t>(Eidx::kRaw)] = line; + fWdt[static_cast<Int_t>(idx) - static_cast<Int_t>(Eidx::kRaw)] = width; + fFll[static_cast<Int_t>(idx) - static_cast<Int_t>(Eidx::kRaw)] = fill; } @@ -575,7 +595,7 @@ void PairAnalysisStyler::SetPalette(Epalette colors, Bool_t reverse) { Double_t stops[NRGBs] = {0.00, 0.34, 0.61, 0.84, 1.00}; switch (colors) { - case kDefault: { + case Epalette::kDefault: { Double_t red[NRGBs] = {0.00, 0.00, 0.87, 1.00, 0.51}; Double_t green[NRGBs] = {0.00, 0.81, 1.00, 0.20, 0.00}; Double_t blue[NRGBs] = {0.51, 1.00, 0.12, 0.00, 0.00}; @@ -585,7 +605,7 @@ void PairAnalysisStyler::SetPalette(Epalette colors, Bool_t reverse) { TColor::CreateGradientColorTable(NRGBs, stops, red, green, blue, NCont); break; } - case kGoodBad: { + case Epalette::kGoodBad: { Double_t red[NRGBs] = {0.00, 0.00, 0.87, 1.00, 0.36}; Double_t green[NRGBs] = {0.20, 0.81, 1.00, 0.20, 0.00}; Double_t blue[NRGBs] = {0.00, 0.00, 0.00, 0.00, 0.00}; diff --git a/analysis/PWGDIL/dielectron/papaframework/PairAnalysisStyler.h b/analysis/PWGDIL/dielectron/papaframework/PairAnalysisStyler.h index 0ae123cd072fc2511b051a60c4c152b3f37812bb..b106e9ea36978b18854b43d083e907cb3cbccd65 100644 --- a/analysis/PWGDIL/dielectron/papaframework/PairAnalysisStyler.h +++ b/analysis/PWGDIL/dielectron/papaframework/PairAnalysisStyler.h @@ -22,10 +22,10 @@ namespace PairAnalysisStyler { - enum Eidx { kRaw = 100, kBgrd, kSig, kFit, kCocktail, kNidx }; - enum Epalette { kDefault = 0, kGoodBad }; - enum EfillMark { kOpenMarker = 1, kFullMarker, kDontCare }; - enum Estyle { kNMaxMarker = 13, kNMaxLine = 4, kNMaxColor = 17 }; + enum class Eidx { kRaw = 100, kBgrd, kSig, kFit, kCocktail, kNidx }; + enum class Epalette { kDefault = 0, kGoodBad }; + enum class EfillMark { kOpenMarker = 1, kFullMarker, kDontCare }; + enum class Estyle { kNMaxMarker = 13, kNMaxLine = 4, kNMaxColor = 17 }; void SetStyle(TStyle* userStyle); @@ -45,7 +45,8 @@ namespace PairAnalysisStyler { void SetForceMarkerFillStyle(EfillMark fill); - void SetPalette(Epalette colors = kDefault, Bool_t reverse = kFALSE); + void SetPalette(Epalette colors = Epalette::kDefault, + Bool_t reverse = kFALSE); void SetLegendAlign(UInt_t align); void SetLegendAttributes(TLegend* leg, Bool_t fill = kFALSE); diff --git a/analysis/PWGDIL/dielectron/papaframework/PairAnalysisTrackRotator.h b/analysis/PWGDIL/dielectron/papaframework/PairAnalysisTrackRotator.h index b41ba7d7d0acdf8005796b2bad15825bc0603c2c..e620f2f4b57ea8478f14621e051941d672c9fb07 100644 --- a/analysis/PWGDIL/dielectron/papaframework/PairAnalysisTrackRotator.h +++ b/analysis/PWGDIL/dielectron/papaframework/PairAnalysisTrackRotator.h @@ -16,7 +16,11 @@ class PairAnalysisTrackRotator : public TNamed { public: - enum ERotationType { kRotatePositive, kRotateNegative, kRotateBothRandom }; + enum class ERotationType { + kRotatePositive, + kRotateNegative, + kRotateBothRandom + }; PairAnalysisTrackRotator(); PairAnalysisTrackRotator(const char* name, const char* title); @@ -41,9 +45,10 @@ public: Double_t GetCharge() const { return TMath::Nint(gRandom->Rndm()); } private: - UInt_t fIterations = 1; // number of iterations - ERotationType fRotationType = kRotateBothRandom; // which track to rotate - Double_t fStartAnglePhi = TMath::Pi(); // starting angle for rotation + UInt_t fIterations = 1; // number of iterations + ERotationType fRotationType = + ERotationType::kRotateBothRandom; // which track to rotate + Double_t fStartAnglePhi = TMath::Pi(); // starting angle for rotation Double_t fConeAnglePhi = TMath::Pi(); // opening angle in phi for multiple rotation diff --git a/analysis/PWGDIL/dielectron/papaframework/PairAnalysisVarCuts.cxx b/analysis/PWGDIL/dielectron/papaframework/PairAnalysisVarCuts.cxx index a35096dccd4ca07d168b27c45fba7316e2a94438..866dfcf366050a744a8f03dc4748542d05f1c120 100644 --- a/analysis/PWGDIL/dielectron/papaframework/PairAnalysisVarCuts.cxx +++ b/analysis/PWGDIL/dielectron/papaframework/PairAnalysisVarCuts.cxx @@ -38,7 +38,7 @@ ClassImp(PairAnalysisVarCuts) , fNActiveCuts(0) , fActiveCutsMask(0) , fSelectedCutsMask(0) - , fCutType(kAll) { + , fCutType(ECutType::kAll) { // // Default costructor // @@ -60,7 +60,7 @@ PairAnalysisVarCuts::PairAnalysisVarCuts(const char* name, const char* title) , fNActiveCuts(0) , fActiveCutsMask(0) , fSelectedCutsMask(0) - , fCutType(kAll) { + , fCutType(ECutType::kAll) { // // Named contructor // @@ -122,12 +122,12 @@ Bool_t PairAnalysisVarCuts::IsSelected(Double_t* const values) { } } // cut type and decision - if (fCutType == kAll && !TESTBIT(fSelectedCutsMask, iCut)) + if (fCutType == ECutType::kAll && !TESTBIT(fSelectedCutsMask, iCut)) return kFALSE; // option to (minor) speed improvement } Bool_t isSelected = (fSelectedCutsMask == fActiveCutsMask); - if (fCutType == kAny) isSelected = (fSelectedCutsMask > 0); + if (fCutType == ECutType::kAny) isSelected = (fSelectedCutsMask > 0); SetSelected(isSelected); return isSelected; } @@ -232,7 +232,7 @@ void PairAnalysisVarCuts::Print(const Option_t* /*option*/) const { // printf("------------------------------------------\n"); printf("cut ranges for '%s'\n", GetTitle()); - if (fCutType == kAll) { + if (fCutType == ECutType::kAll) { printf("All Cuts have to be fulfilled\n"); } else { printf("Any Cut has to be fulfilled\n"); diff --git a/analysis/PWGDIL/dielectron/papaframework/PairAnalysisVarCuts.h b/analysis/PWGDIL/dielectron/papaframework/PairAnalysisVarCuts.h index 9b463a5b9cfcbe40e3cc2644f01a90f0a56738af..1832583a6e841182ec7c7dae39dc915de122d785 100644 --- a/analysis/PWGDIL/dielectron/papaframework/PairAnalysisVarCuts.h +++ b/analysis/PWGDIL/dielectron/papaframework/PairAnalysisVarCuts.h @@ -23,7 +23,7 @@ class PairAnalysisVarCuts : public AnalysisCuts { public: // Whether all cut criteria have to be fulfilled of just any - enum CutType { kAll = 0, kAny }; + enum class ECutType { kAll = 0, kAny }; PairAnalysisVarCuts(); PairAnalysisVarCuts(const char* name, const char* title); @@ -46,10 +46,10 @@ public: Bool_t excludeRange = kFALSE); // setters - void SetCutType(CutType type) { fCutType = type; } + void SetCutType(ECutType type) { fCutType = type; } // getters - CutType GetCutType() const { return fCutType; } + ECutType GetCutType() const { return fCutType; } Int_t GetNCuts() { return fNActiveCuts; } @@ -80,7 +80,7 @@ private: UInt_t fSelectedCutsMask; // Maks of selected cuts, is available after calling IsSelected - CutType fCutType; // type of the cut: any, all + ECutType fCutType; // type of the cut: any, all Double_t fCutMin [PairAnalysisVarManager::kNMaxValuesMC]; // minimum values for the cuts diff --git a/analysis/PWGDIL/dielectron/papaframework/PairAnalysisVarManager.cxx b/analysis/PWGDIL/dielectron/papaframework/PairAnalysisVarManager.cxx index a7b40c6c7ebbff9935ddd9e4b81ee2edb4761ca1..38821e230c8a3eed1fb343c602b166495695635f 100644 --- a/analysis/PWGDIL/dielectron/papaframework/PairAnalysisVarManager.cxx +++ b/analysis/PWGDIL/dielectron/papaframework/PairAnalysisVarManager.cxx @@ -129,6 +129,7 @@ ClassImp(PairAnalysisVarManager) {"MVDFirstExtY", "y_{first station}^{MVD}", "(cm)"}, // {"ImpactParZ", "#it{dca}_{z}/#Delta#it{dca}_{z}", "#sigma"}, {"STSHits", "N_{hit}^{STS}", ""}, + {"STSMVDHits", "N_{hit}^{STS}+MVD", ""}, {"STSChi2NDF", "#chi^{2}/^{}N_{df}^{STS}", ""}, {"STSPin", "#it{p}^{STSin}", "(GeV/#it{c})"}, {"STSPtin", "#it{p}_{T}^{STSin}", "(GeV/#it{c})"}, @@ -182,6 +183,8 @@ ClassImp(PairAnalysisVarManager) {"Cos2PhiCS", "cos(2#phi_{CS})", ""}, {"CosTilPhiCS", "cos(#phi_{CS})", ""}, {"PsiPair", "#Psi^{pair}", "(rad.)"}, + {"StsMvdFirstDaughter", "", ""}, + {"StsMvdSecondDaughter", "", ""}, {"PhivPair", "#Phi_{v}^{pair}", "(rad.)"}, {"LegDistance", "d^{legs}", "(cm)"}, @@ -238,6 +241,7 @@ ClassImp(PairAnalysisVarManager) {"PMC", "#it{p}^{MC}", "(GeV/#it{c})"}, {"XvMC", "x_{vtx}^{MC}", "(cm)"}, {"YvMC", "y_{vtx}^{MC}", "(cm)"}, + {"RvMC", "Sqrt(x_{vtx}^{2}_{MC}+y_{vtx}^{2}_{MC})", "(cm)"}, {"ZvMC", "z_{vtx}^{MC}", "(cm)"}, {"PhivMC", "#phi_{vtx}^{MC}", "(rad.)"}, {"ThetavMC", @@ -265,6 +269,7 @@ ClassImp(PairAnalysisVarManager) {"TRDHitsMC", "N_{hit}^{TRD} (MC)", ""}, {"MVDHitsMC", "N_{hit}^{MVD} (MC)", ""}, {"STSHitsMC", "N_{hit}^{STS} (MC)", ""}, + {"STSMVDHitsMC", "N_{hit}^{STS} (MC)", ""}, {"TOFHitsMC", "N_{hit}^{TOF} (MC)", ""}, {"MUCHHitsMC", "N_{hit}^{MUCH} (MC)", ""}, {"RICHHitsMC", "N_{hit}^{RICH} (MC)", ""}, @@ -287,6 +292,8 @@ ClassImp(PairAnalysisVarManager) // Pair specific MC variables {"OpeningAngleMC", "#varphi^{MC}", "(rad.)"}, {"CosPointingAngleMC", "cos(#theta)^{MC}", "(rad.)"}, + {"StsMvdFirstDaughterMC", "", ""}, + {"StsMvdSecondDaughterMC", "", ""}, // {"PhivPairMC", "#Phi_{v}^{MC}", "(rad.)"}, // Event specific MCvariables diff --git a/analysis/PWGDIL/dielectron/papaframework/PairAnalysisVarManager.h b/analysis/PWGDIL/dielectron/papaframework/PairAnalysisVarManager.h index 29ce174e988eb5d1d0694e27e6a7e37670b72183..3079ba5db110f34a8fadd84dda6bf0b33e76c13f 100644 --- a/analysis/PWGDIL/dielectron/papaframework/PairAnalysisVarManager.h +++ b/analysis/PWGDIL/dielectron/papaframework/PairAnalysisVarManager.h @@ -163,6 +163,7 @@ public: kMvdFirstExtY, // y-position of the extrapolated track at the first MVD station (cm) // kImpactParZ, // Impact parameter of track at target z, in units of its error kStsHits, // number of STS hits + kStsMvdHits, // number of STS hits kStsChi2NDF, // chi2/ndf STS kStsPin, // first point STS momentum (GeV/c) kStsPtin, // first point STS transverse momentum (GeV/c) @@ -219,6 +220,8 @@ public: kCos2PhiCS, // Cosine of 2*phi in mother's rest frame in the Collins-Soper picture kCosTilPhiCS, // Shifted phi depending on kThetaCS kPsiPair, // phi in mother's rest frame in Collins-Soper picture + kStsMvdFirstDaughter, // number of STS and MVD hits + kStsMvdSecondDaughter, // number of STS and MVD hits kPhivPair, // angle between ee plane and the magnetic field (can be useful for conversion rejection) kLegDist, // distance of the legs @@ -278,6 +281,7 @@ public: kPMC, // momentum kXvMC, // vertex position in x kYvMC, // vertex position in y + kRvMC, // vertex position as (x^2 + y^2) kZvMC, // vertex position in z kPhivMC, // vertex position in phi kThetavMC, // vertex position in theta @@ -303,6 +307,7 @@ public: kTrdHitsMC = kParticleMaxMC, // number of TRD hits kMvdHitsMC, // number of MVD hits kStsHitsMC, // number of STS hits + kStsMvdHitsMC, // number of STS hits kTofHitsMC, // number of TOF hits kMuchHitsMC, // number of MUCH hits kRichHitsMC, // number of RICH hits @@ -326,6 +331,8 @@ public: // Pair specific MC variables kOpeningAngleMC = kTrackMaxMC, // opening angle kCosPointingAngleMC, // cosine of the pointing angle + kStsMvdFirstDaughterMC, // number of STS and MVD hits + kStsMvdSecondDaughterMC, // number of STS and MVD hits // kPhivPairMC, // angle between d1d2 plane and the magnetic field kPairMaxMC, @@ -801,7 +808,7 @@ PairAnalysisVarManager::FillVarPairAnalysisTrack(const PairAnalysisTrack* track, values[kM] = track->M(); values[kCharge] = track->Charge(); values[kMt] = TMath::Sqrt(values[kMPair] * values[kMPair] + values[kPtSq]); - // values[kPdgCode] = track->PdgCode(); + values[kPdgCode] = track->PdgCode(); values[kChi2NDFtoVtx] = track->ChiToVertex(); values[kImpactParXY] = TMath::Sqrt(TMath::Power(TMath::Abs(values[kXv] - values[kXvPrim]), 2) @@ -973,7 +980,8 @@ inline void PairAnalysisVarManager::FillVarStsTrack(const CbmStsTrack* track, // values[kImpactParZ] = track->GetB(); //Impact parameter of track at target z, in units of its error // printf(" mom %f impactparz %f \n",values[kPout],values[kImpactParZ]); // accessors via CbmTrack - values[kStsHits] = track->GetNofStsHits(); + values[kStsHits] = track->GetNofStsHits(); + values[kStsMvdHits] = track->GetNofStsHits() + track->GetNofMvdHits(); values[kStsChi2NDF] = (track->GetNDF() > 0. ? track->GetChiSq() / track->GetNDF() : -999.); // accessors via first FairTrackParam @@ -1038,16 +1046,24 @@ inline void PairAnalysisVarManager::FillVarMCParticle(const CbmMCTrack* p1, // Set CbmMCTrack* mother = 0x0; - Int_t mLabel1 = p1->GetMotherId(); - Int_t mLabel2 = p2->GetMotherId(); + // CbmMCTrack* smother = 0x0; + Int_t mLabel1 = p1->GetMotherId(); + Int_t mLabel2 = p2->GetMotherId(); if (mLabel1 == mLabel2) mother = mc->GetMCTrackFromMCEvent(mLabel1); + /* mother = mc->GetMCTrackFromMCEvent(mLabel1); */ + /* smother = mc->GetMCTrackFromMCEvent(mLabel2); */ PairAnalysisPair* pair = new PairAnalysisPairLV(); pair->SetMCTracks(p1, p2); - if (mother) + if (mother) { FillVarMCTrack(mother, values); - else { + values[kStsMvdFirstDaughterMC] = + p1->GetNPoints(ECbmModuleId::kSts) + p1->GetNPoints(ECbmModuleId::kMvd); + values[kStsMvdSecondDaughterMC] = + p2->GetNPoints(ECbmModuleId::kSts) + p2->GetNPoints(ECbmModuleId::kMvd); + // FillVarMCTrack(smother, values); + } else { values[kPxMC] = pair->Px(); values[kPyMC] = pair->Py(); values[kPzMC] = pair->Pz(); @@ -1057,6 +1073,14 @@ inline void PairAnalysisVarManager::FillVarMCParticle(const CbmMCTrack* p1, values[kXvMC] = pair->Xv(); values[kYvMC] = pair->Yv(); + if (mother) + if (mother->GetPdgCode() == 22) + std::cout << pair->Xv() << " " << pair->Xv() * pair->Xv() << " " + << TMath::Sqrt(pair->Xv() * pair->Xv() + + pair->Yv() * pair->Yv()) + << " " << pair->Zv() << std::endl; + values[kRvMC] = + TMath::Sqrt(pair->Xv() * pair->Xv() + pair->Yv() * pair->Yv()); values[kZvMC] = pair->Zv(); //TODO values[kTMC] = 0.; @@ -1076,6 +1100,7 @@ inline void PairAnalysisVarManager::FillVarMCParticle(const CbmMCTrack* p1, fgVertexMC ? pair->GetCosPointingAngle(fgVertexMC) : -1; // values[kPhivPairMC] = pair->PhivPair(1.); + // delete the surplus pair delete pair; } @@ -1103,8 +1128,21 @@ inline void PairAnalysisVarManager::FillVarMCTrack(const CbmMCTrack* particle, values[kPdgCode] = particle->GetPdgCode(); values[kPdgCodeMother] = (mother ? mother->GetPdgCode() : -99999.); - values[kEMotherMC] = (mother ? mother->GetEnergy() : -99999.); - CbmMCTrack* granni = 0x0; + + if (mother) { + // if(particle->GetPdgCode() == 11 || particle->GetPdgCode() == -11) std::cout<< particle->GetPdgCode() <<" " << mother->GetPdgCode() <<" "<< particle->GetGeantProcessId() <<std::endl; + if (mother->GetPdgCode() == 22) values[kPdgCodeMother] = 1; + if (mother->GetPdgCode() == 111) values[kPdgCodeMother] = 3; + if (mother->GetPdgCode() == 211 || mother->GetPdgCode() == -211) + values[kPdgCodeMother] = 5; + if (mother->GetPdgCode() == 2212) values[kPdgCodeMother] = 7; + if (mother->GetPdgCode() == 99009011 || mother->GetPdgCode() == 99009911) + values[kPdgCodeMother] = 9; + } + + + values[kEMotherMC] = (mother ? mother->GetEnergy() : -99999.); + CbmMCTrack* granni = 0x0; if (mother) granni = mc->GetMCTrackMother(mother); values[kPdgCodeGrandMother] = (granni ? granni->GetPdgCode() : -99999.); //mc->GetMotherPDG(mother); @@ -1120,6 +1158,10 @@ inline void PairAnalysisVarManager::FillVarMCTrack(const CbmMCTrack* particle, values[kXvMC] = particle->GetStartX(); values[kYvMC] = particle->GetStartY(); values[kZvMC] = particle->GetStartZ(); + // if(mother) if(mother->GetPdgCode() == 22) std::cout<<particle->GetStartX()<<" "<<particle->GetStartX()*particle->GetStartX()<<" "<< TMath::Sqrt( particle->GetStartX()*particle->GetStartX() + particle->GetStartY()*particle->GetStartY() ) <<" " << particle->GetStartZ()<<std::endl; + values[kRvMC] = TMath::Sqrt(particle->GetStartX() * particle->GetStartX() + + particle->GetStartY() * particle->GetStartY()); + TVector3 vtx; particle->GetStartVertex(vtx); values[kPhivMC] = vtx.Phi(); @@ -1146,10 +1188,12 @@ inline void PairAnalysisVarManager::FillVarMCTrack(const CbmMCTrack* particle, values[kChargeMC] = particle->GetCharge(); // detector info - values[kRichHitsMC] = particle->GetNPoints(ECbmModuleId::kRich); - values[kTrdHitsMC] = particle->GetNPoints(ECbmModuleId::kTrd); - values[kMvdHitsMC] = particle->GetNPoints(ECbmModuleId::kMvd); - values[kStsHitsMC] = particle->GetNPoints(ECbmModuleId::kSts); + values[kRichHitsMC] = particle->GetNPoints(ECbmModuleId::kRich); + values[kTrdHitsMC] = particle->GetNPoints(ECbmModuleId::kTrd); + values[kMvdHitsMC] = particle->GetNPoints(ECbmModuleId::kMvd); + values[kStsHitsMC] = particle->GetNPoints(ECbmModuleId::kSts); + values[kStsMvdHitsMC] = particle->GetNPoints(ECbmModuleId::kSts) + + particle->GetNPoints(ECbmModuleId::kMvd); values[kTofHitsMC] = particle->GetNPoints(ECbmModuleId::kTof); values[kMuchHitsMC] = particle->GetNPoints(ECbmModuleId::kMuch); } @@ -1209,6 +1253,166 @@ PairAnalysisVarManager::FillVarPairAnalysisPair(const PairAnalysisPair* pair, /* values[kPdgCodeGrandMother]=-1; */ values[kWeight] = pair->GetWeight(); + + if (pair->GetFirstDaughter() && pair->GetFirstDaughter()->GetStsTrack()) { + values[kStsMvdFirstDaughter] = + pair->GetFirstDaughter()->GetStsTrack()->GetNofStsHits() + + pair->GetFirstDaughter()->GetStsTrack()->GetNofMvdHits(); + // std::cout<<pair->GetFirstDaughter()->GetStsTrack()->GetNofMvdHits()<<std::endl; + } + if (pair->GetSecondDaughter() && pair->GetSecondDaughter()->GetStsTrack()) + values[kStsMvdSecondDaughter] = + pair->GetSecondDaughter()->GetStsTrack()->GetNofStsHits() + + pair->GetSecondDaughter()->GetStsTrack()->GetNofMvdHits(); + + + if (pair->GetFirstDaughter()->GetMCTrack()) { + + PairAnalysisMC* mc = PairAnalysisMC::Instance(); + if (!mc->HasMC()) return; + + // Set + CbmMCTrack* mother = 0x0; + Int_t mLabel1 = pair->GetFirstDaughter()->GetMCTrack()->GetMotherId(); + mother = mc->GetMCTrackFromMCEvent(mLabel1); + + Int_t motherCode = (mother ? mother->GetPdgCode() : -99999.); + + Int_t secondMother = -99999.; + if (pair->GetSecondDaughter()->GetMCTrack()) { + CbmMCTrack* sm = 0x0; + Int_t mLabel2 = pair->GetSecondDaughter()->GetMCTrack()->GetMotherId(); + sm = mc->GetMCTrackFromMCEvent(mLabel2); + secondMother = (sm ? sm->GetPdgCode() : -99999.); + + + // std::cout<<pair->GetFirstDaughter()->GetMCTrack()->GetNPoints(ECbmModuleId::kSts)<<" " << pair->GetSecondDaughter()->GetMCTrack()->GetNPoints(ECbmModuleId::kSts)<<std::endl; + + /* if(mother){ */ + /* if( (pair->GetFirstDaughter()->GetMCTrack()->GetPdgCode() == 11 && pair->GetSecondDaughter()->GetMCTrack()->GetPdgCode() == -11) || */ + /* (pair->GetFirstDaughter()->GetMCTrack()->GetPdgCode() == -11 && pair->GetSecondDaughter()->GetMCTrack()->GetPdgCode() == 11) ) std::cout<<motherCode<<" " << secondMother<<" "<< pair->GetFirstDaughter()->GetMCTrack()->GetGeantProcessId()<<" "<< pair->GetSecondDaughter()->GetMCTrack()->GetGeantProcessId()<<std::endl; */ + /* } */ + } + + if (motherCode == 99009011 || secondMother == 99009011 + || motherCode == 99009911 || secondMother == 99009911) { + //if (motherCode == 99009011 || secondMother == 99009011) { + Double_t mass[170] = { + 0.0195, 0.0395, 0.0595, 0.0795, 0.0995, 0.1195, 0.1395, 0.1595, 0.1795, + 0.1995, 0.2195, 0.2395, 0.2595, 0.2795, 0.2995, 0.3195, 0.3395, 0.3595, + 0.3795, 0.3995, 0.4195, 0.4395, 0.4595, 0.4795, 0.4995, 0.5195, 0.5395, + 0.5595, 0.5795, 0.5995, 0.6195, 0.6395, 0.6595, 0.6795, 0.6995, 0.7195, + 0.7395, 0.7595, 0.7795, 0.7995, 0.8195, 0.8395, 0.8595, 0.8795, 0.8995, + 0.9195, 0.9395, 0.9595, 0.9795, 0.9995, 1.0195, 1.0395, 1.0595, 1.0795, + 1.0995, 1.1195, 1.1395, 1.1595, 1.1795, 1.1995, 1.2195, 1.2395, 1.2595, + 1.2795, 1.2995, 1.3195, 1.3395, 1.3595, 1.3795, 1.3995, 1.4195, 1.4395, + 1.4595, 1.4795, 1.4995, 1.5195, 1.5395, 1.5595, 1.5795, 1.5995, 1.6195, + 1.6395, 1.6595, 1.6795, 1.6995, 1.7195, 1.7395, 1.7595, 1.7795, 1.7995, + 1.8195, 1.8395, 1.8595, 1.8795, 1.8995, 1.9195, 1.9395, 1.9595, 1.9795, + 1.9995, 2.0195, 2.0395, 2.0595, 2.0795, 2.0995, 2.1195, 2.1395, 2.1595, + 2.1795, 2.1995, 2.2195, 2.2395, 2.2595, 2.2795, 2.2995, 2.3195, 2.3395, + 2.3595, 2.3795, 2.3995, 2.4195, 2.4395, 2.4595, 2.4795, 2.4995, 2.5195, + 2.5395, 2.5595, 2.5795, 2.5995, 2.6195, 2.6395, 2.6595, 2.6795, 2.6995, + 2.7195, 2.7395, 2.7595, 2.7795, 2.7995, 2.8195, 2.8395, 2.8595, 2.8795, + 2.8995, 2.9195, 2.9395, 2.9595, 2.9795, 2.9995, 3.0195, 3.0395, 3.0595, + 3.0795, 3.0995, 3.1195, 3.1395, 3.1595, 3.1795, 3.1995, 3.2195, 3.2395, + 3.2595, 3.2795, 3.2995, 3.3195, 3.3395, 3.3595, 3.3795, 3.3995}; + Double_t scale[170] = { + 41.706, 18.918, 11.465, 8.4388, 5.9176, 4.9025, + 3.8087, 3.0387, 2.5856, 2.1142, 1.7603, 1.5327, + 1.28, 1.1579, 1.0367, 0.89355, 0.81317, 0.71582, + 0.65863, 0.59678, 0.53702, 0.45378, 0.41238, 0.37502, + 0.33593, 0.28791, 0.26352, 0.23939, 0.21167, 0.19479, + 0.19204, 0.17492, 0.15811, 0.15479, 0.14935, 0.13803, + 0.1354, 0.11993, 0.1046, 0.08226, 0.073183, 0.055433, + 0.043467, 0.033975, 0.028025, 0.021504, 0.016863, 0.014108, + 0.01094, 0.0088095, 0.007324, 0.0057162, 0.0046817, 0.0037459, + 0.0030017, 0.0024459, 0.0020671, 0.0016089, 0.0013754, 0.0011223, + 0.00096256, 0.00081647, 0.00072656, 0.00060776, 0.00051243, 0.00045705, + 0.00039636, 0.00036259, 0.00033248, 0.0002953, 0.00027328, 0.00023776, + 0.00022163, 0.00019852, 0.000186, 0.00016846, 0.00015469, 0.00014169, + 0.00013343, 0.00011594, 0.00010722, 0.00010205, 9.1907e-05, 8.3718e-05, + 7.5457e-05, 6.7192e-05, 6.2202e-05, 5.7372e-05, 4.8314e-05, 4.5502e-05, + 4.1334e-05, 3.7429e-05, 3.2131e-05, 3.0103e-05, 2.6125e-05, 2.3601e-05, + 2.1167e-05, 1.94e-05, 1.7025e-05, 1.5496e-05, 1.3704e-05, 1.1866e-05, + 1.1135e-05, 9.8842e-06, 8.9101e-06, 7.9225e-06, 7.0706e-06, 6.3536e-06, + 5.3786e-06, 4.7179e-06, 4.2128e-06, 4.0015e-06, 3.4118e-06, 3.1864e-06, + 2.734e-06, 2.3844e-06, 2.173e-06, 1.8774e-06, 1.6468e-06, 1.501e-06, + 1.3597e-06, 1.2113e-06, 1.0384e-06, 9.4105e-07, 8.4223e-07, 7.434e-07, + 6.5049e-07, 5.8824e-07, 5.3603e-07, 4.6756e-07, 4.1173e-07, 3.5872e-07, + 3.2764e-07, 2.9889e-07, 2.5989e-07, 2.219e-07, 1.9468e-07, 1.816e-07, + 1.5707e-07, 1.3565e-07, 1.2619e-07, 1.0919e-07, 1.0071e-07, 8.4632e-08, + 7.6459e-08, 6.829e-08, 6.2046e-08, 5.5335e-08, 4.5937e-08, 4.2426e-08, + 3.567e-08, 3.4051e-08, 2.9627e-08, 2.5249e-08, 2.2767e-08, 2.1054e-08, + 1.7873e-08, 1.574e-08, 1.3713e-08, 1.23e-08, 1.1045e-08, 9.5536e-09, + 8.5859e-09, 7.7217e-09, 6.9958e-09, 6.0992e-09, 5.3453e-09, 4.7659e-09, + 4.3313e-09, 3.6575e-09}; + TSpline3* weight = new TSpline3("inmedwghts", mass, scale, 170); + Double_t corrw = weight->Eval(values[PairAnalysisVarManager::kM]); + values[kWeight] *= corrw; + delete weight; + } + + if (motherCode == 99009111 || secondMother == 99009111) { + // if(motherCode == 99009911 || secondMother == 99009911){ + Double_t mass[170] = { + 0.0195, 0.0395, 0.0595, 0.0795, 0.0995, 0.1195, 0.1395, 0.1595, 0.1795, + 0.1995, 0.2195, 0.2395, 0.2595, 0.2795, 0.2995, 0.3195, 0.3395, 0.3595, + 0.3795, 0.3995, 0.4195, 0.4395, 0.4595, 0.4795, 0.4995, 0.5195, 0.5395, + 0.5595, 0.5795, 0.5995, 0.6195, 0.6395, 0.6595, 0.6795, 0.6995, 0.7195, + 0.7395, 0.7595, 0.7795, 0.7995, 0.8195, 0.8395, 0.8595, 0.8795, 0.8995, + 0.9195, 0.9395, 0.9595, 0.9795, 0.9995, 1.0195, 1.0395, 1.0595, 1.0795, + 1.0995, 1.1195, 1.1395, 1.1595, 1.1795, 1.1995, 1.2195, 1.2395, 1.2595, + 1.2795, 1.2995, 1.3195, 1.3395, 1.3595, 1.3795, 1.3995, 1.4195, 1.4395, + 1.4595, 1.4795, 1.4995, 1.5195, 1.5395, 1.5595, 1.5795, 1.5995, 1.6195, + 1.6395, 1.6595, 1.6795, 1.6995, 1.7195, 1.7395, 1.7595, 1.7795, 1.7995, + 1.8195, 1.8395, 1.8595, 1.8795, 1.8995, 1.9195, 1.9395, 1.9595, 1.9795, + 1.9995, 2.0195, 2.0395, 2.0595, 2.0795, 2.0995, 2.1195, 2.1395, 2.1595, + 2.1795, 2.1995, 2.2195, 2.2395, 2.2595, 2.2795, 2.2995, 2.3195, 2.3395, + 2.3595, 2.3795, 2.3995, 2.4195, 2.4395, 2.4595, 2.4795, 2.4995, 2.5195, + 2.5395, 2.5595, 2.5795, 2.5995, 2.6195, 2.6395, 2.6595, 2.6795, 2.6995, + 2.7195, 2.7395, 2.7595, 2.7795, 2.7995, 2.8195, 2.8395, 2.8595, 2.8795, + 2.8995, 2.9195, 2.9395, 2.9595, 2.9795, 2.9995, 3.0195, 3.0395, 3.0595, + 3.0795, 3.0995, 3.1195, 3.1395, 3.1595, 3.1795, 3.1995, 3.2195, 3.2395, + 3.2595, 3.2795, 3.2995, 3.3195, 3.3395, 3.3595, 3.3795, 3.3995}; + Double_t scale[170] = { + 39.496, 17.961, 11.024, 8.2093, 5.8331, 4.8995, + 3.8612, 3.1258, 2.7006, 2.2465, 1.908, 1.699, + 1.4435, 1.3253, 1.2059, 1.049, 0.96753, 0.86685, + 0.81407, 0.75959, 0.70663, 0.61951, 0.58586, 0.55534, + 0.51902, 0.46377, 0.4415, 0.41412, 0.37414, 0.34883, + 0.34494, 0.31141, 0.2762, 0.26331, 0.24693, 0.22286, + 0.21697, 0.1972, 0.1841, 0.16097, 0.16352, 0.14345, + 0.13096, 0.11911, 0.11399, 0.10111, 0.0913, 0.08764, + 0.077745, 0.071417, 0.067561, 0.05987, 0.055543, 0.050193, + 0.045244, 0.04128, 0.03898, 0.03365, 0.031622, 0.028217, + 0.026215, 0.023919, 0.022648, 0.019915, 0.017524, 0.016145, + 0.014357, 0.013362, 0.012368, 0.011036, 0.010198, 0.0088275, + 0.0081762, 0.0072697, 0.00675, 0.0060424, 0.0054788, 0.0049588, + 0.0046174, 0.0039685, 0.00363, 0.0034204, 0.0030534, 0.0027606, + 0.0024723, 0.0021893, 0.0020174, 0.0018545, 0.0015584, 0.0014661, + 0.0013315, 0.0012065, 0.0010375, 0.00097456, 0.00084865, 0.00076982, + 0.00069371, 0.00063931, 0.00056442, 0.00051712, 0.00046054, 0.00040174, + 0.00037996, 0.00034009, 0.00030921, 0.00027738, 0.00024981, 0.00022659, + 0.00019366, 0.00017153, 0.00015469, 0.00014841, 0.00012783, 0.00012061, + 0.00010456, 9.2145e-05, 8.4856e-05, 7.4087e-05, 6.5675e-05, 6.0496e-05, + 5.5386e-05, 4.9865e-05, 4.3202e-05, 3.9571e-05, 3.5821e-05, 3.201e-05, + 2.8322e-05, 2.5886e-05, 2.384e-05, 2.1016e-05, 1.8703e-05, 1.6467e-05, + 1.5199e-05, 1.4011e-05, 1.2311e-05, 1.0621e-05, 9.4155e-06, 8.874e-06, + 7.7548e-06, 6.7662e-06, 6.3589e-06, 5.5585e-06, 5.1791e-06, 4.3965e-06, + 4.012e-06, 3.6195e-06, 3.3215e-06, 2.9918e-06, 2.5084e-06, 2.3397e-06, + 1.9865e-06, 1.915e-06, 1.6826e-06, 1.448e-06, 1.3183e-06, 1.231e-06, + 1.0551e-06, 9.3811e-07, 8.2511e-07, 7.4714e-07, 6.7735e-07, 5.9142e-07, + 5.3654e-07, 4.8709e-07, 4.4543e-07, 3.9199e-07, 3.4674e-07, 3.1203e-07, + 2.862e-07, 2.4391e-07}; + TSpline3* weight = new TSpline3("inmedwghts", mass, scale, 170); + Double_t corrw = weight->Eval(values[PairAnalysisVarManager::kM]); + values[kWeight] *= corrw; + delete weight; + } + } + + Double_t thetaHE = 0; Double_t phiHE = 0; Double_t thetaCS = 0;