Back to home page

sPhenix code displayed by LXR

 
 

    


File indexing completed on 2025-08-06 08:11:47

0001 // ----------------------------------------------------------------------------
0002 // 'SDeltaPtCutStudy.sys.h'
0003 // Derek Anderson
0004 // 07.06.2023
0005 //
0006 // Reads in the 'ntp_track' Ntuple
0007 // generated by the SVtxEvaluator
0008 // class and studies how deltapt/pt
0009 // varies with quality cuts.
0010 // ----------------------------------------------------------------------------
0011 
0012 #pragma once
0013 
0014 using namespace std;
0015 
0016 
0017 
0018 // system methods -------------------------------------------------------------
0019 
0020 void SDeltaPtCutStudy::InitVectors() {
0021 
0022   // initialize projection-related vectors
0023   for (size_t iProj = 0; iProj < nProj; iProj++) {
0024 
0025     // initialize variables for sigma calculation
0026     muProj.push_back(0.);
0027     sigProj.push_back(0.);
0028 
0029     // initialize histograms, functions, and strings
0030     hPtDeltaProj.push_back(NULL);
0031     fPtDeltaProj.push_back(NULL); 
0032     sPtProj.push_back("");
0033   }  // end projection loop
0034 
0035   // initialize flat delta-pt cut-related vectors
0036   for (size_t iCut = 0; iCut < nDPtCuts; iCut++) {
0037 
0038     // initialize variables for rejection calculation
0039     nNormCut.push_back(0.);
0040     nWeirdCut.push_back(0.);
0041     rejCut.push_back(0.);
0042 
0043     // initialize histograms
0044     hPtDeltaProj.push_back(NULL);
0045     hPtDeltaCut.push_back(NULL);
0046     hPtTrackCut.push_back(NULL);
0047     hPtFracCut.push_back(NULL);
0048     hPtTrkTruCut.push_back(NULL);
0049     hEffCut.push_back(NULL);
0050     hPtDeltaVsFracCut.push_back(NULL);
0051     hPtDeltaVsTrueCut.push_back(NULL);
0052     hPtDeltaVsTrackCut.push_back(NULL);
0053     hPtTrueVsTrackCut.push_back(NULL);
0054   }
0055 
0056   // initialize pt-dependent delta-pt cut-related vectors
0057   for (size_t iSig = 0; iSig < nSigCuts; iSig++) {
0058 
0059     // initialize variables for rejection calculation
0060     nNormSig.push_back(0.);
0061     nWeirdSig.push_back(0.);
0062     rejSig.push_back(0.);
0063 
0064     // initialize variables for sigma calculation
0065     vector<double> vecHiProj(nProj, 0.);
0066     vector<double> vecLoProj(nProj, 0.);
0067     muHiProj.push_back(vecHiProj);
0068     muLoProj.push_back(vecLoProj);
0069 
0070     // initialize histograms
0071     hPtDeltaSig.push_back(NULL);
0072     hPtTrackSig.push_back(NULL);
0073     hPtFracSig.push_back(NULL);
0074     hPtTrkTruSig.push_back(NULL);
0075     hEffSig.push_back(NULL);
0076     hPtDeltaVsFracSig.push_back(NULL);
0077     hPtDeltaVsTrueSig.push_back(NULL);
0078     hPtDeltaVsTrackSig.push_back(NULL);
0079     hPtTrueVsTrackSig.push_back(NULL);
0080 
0081     // initialze functions and graphs
0082     fPtDeltaProj.push_back(NULL);
0083     fMuHiProj.push_back(NULL);
0084     fMuLoProj.push_back(NULL);
0085     grMuHiProj.push_back(NULL);
0086     grMuLoProj.push_back(NULL);
0087   }
0088 
0089   cout << "    Initialized vectors." << endl;
0090   return;
0091 
0092 }  // end 'InitVectors()'
0093 
0094 
0095 void SDeltaPtCutStudy::InitTuples() {
0096 
0097   // set track branch addresses
0098   ntTrack -> SetBranchAddress("event",           &trk_event);
0099   ntTrack -> SetBranchAddress("seed",            &trk_seed);
0100   ntTrack -> SetBranchAddress("trackID",         &trk_trackID);
0101   ntTrack -> SetBranchAddress("crossing",        &trk_crossing);
0102   ntTrack -> SetBranchAddress("px",              &trk_px);
0103   ntTrack -> SetBranchAddress("py",              &trk_py);
0104   ntTrack -> SetBranchAddress("pz",              &trk_pz);
0105   ntTrack -> SetBranchAddress("pt",              &trk_pt);
0106   ntTrack -> SetBranchAddress("eta",             &trk_eta);
0107   ntTrack -> SetBranchAddress("phi",             &trk_phi);
0108   ntTrack -> SetBranchAddress("deltapt",         &trk_deltapt);
0109   ntTrack -> SetBranchAddress("deltaeta",        &trk_deltaeta);
0110   ntTrack -> SetBranchAddress("deltaphi",        &trk_deltaphi);
0111   ntTrack -> SetBranchAddress("charge",          &trk_charge);
0112   ntTrack -> SetBranchAddress("quality",         &trk_quality);
0113   ntTrack -> SetBranchAddress("chisq",           &trk_chisq);
0114   ntTrack -> SetBranchAddress("ndf",             &trk_ndf);
0115   ntTrack -> SetBranchAddress("nhits",           &trk_nhits);
0116   ntTrack -> SetBranchAddress("nmaps",           &trk_nmaps);
0117   ntTrack -> SetBranchAddress("nintt",           &trk_nintt);
0118   ntTrack -> SetBranchAddress("ntpc",            &trk_ntpc);
0119   ntTrack -> SetBranchAddress("nmms",            &trk_nmms);
0120   ntTrack -> SetBranchAddress("ntpc1",           &trk_ntpc1);
0121   ntTrack -> SetBranchAddress("ntpc11",          &trk_ntpc11);
0122   ntTrack -> SetBranchAddress("ntpc2",           &trk_ntpc2);
0123   ntTrack -> SetBranchAddress("ntpc3",           &trk_ntpc3);
0124   ntTrack -> SetBranchAddress("nlmaps",          &trk_nlmaps);
0125   ntTrack -> SetBranchAddress("nlintt",          &trk_nlintt);
0126   ntTrack -> SetBranchAddress("nltpc",           &trk_nltpc);
0127   ntTrack -> SetBranchAddress("nlmms",           &trk_nlmms);
0128   ntTrack -> SetBranchAddress("layers",          &trk_layers);
0129   ntTrack -> SetBranchAddress("vertexID",        &trk_vertexID);
0130   ntTrack -> SetBranchAddress("vx",              &trk_vx);
0131   ntTrack -> SetBranchAddress("vy",              &trk_vy);
0132   ntTrack -> SetBranchAddress("vz",              &trk_vz);
0133   ntTrack -> SetBranchAddress("dca2d",           &trk_dca2d);
0134   ntTrack -> SetBranchAddress("dca2dsigma",      &trk_dca2dsigma);
0135   ntTrack -> SetBranchAddress("dca3dxy",         &trk_dca3dxy);
0136   ntTrack -> SetBranchAddress("dca3dxysigma",    &trk_dca3dxysigma);
0137   ntTrack -> SetBranchAddress("dca3dz",          &trk_dca3dz);
0138   ntTrack -> SetBranchAddress("dca3dzsigma",     &trk_dca3dzsigma);
0139   ntTrack -> SetBranchAddress("pcax",            &trk_pcax);
0140   ntTrack -> SetBranchAddress("pcay",            &trk_pcay);
0141   ntTrack -> SetBranchAddress("pcaz",            &trk_pcaz);
0142   ntTrack -> SetBranchAddress("gtrackID",        &trk_gtrackID);
0143   ntTrack -> SetBranchAddress("gflavor",         &trk_gflavor);
0144   ntTrack -> SetBranchAddress("gnhits",          &trk_gnhits);
0145   ntTrack -> SetBranchAddress("gnmaps",          &trk_gnmaps);
0146   ntTrack -> SetBranchAddress("gnintt",          &trk_gnintt);
0147   ntTrack -> SetBranchAddress("gntpc",           &trk_gntpc);
0148   ntTrack -> SetBranchAddress("gnmms",           &trk_gnmms);
0149   ntTrack -> SetBranchAddress("gnlmaps",         &trk_gnlmaps);
0150   ntTrack -> SetBranchAddress("gnlintt",         &trk_gnlintt);
0151   ntTrack -> SetBranchAddress("gnltpc",          &trk_gnltpc);
0152   ntTrack -> SetBranchAddress("gnlmms",          &trk_gnlmms);
0153   ntTrack -> SetBranchAddress("gpx",             &trk_gpx);
0154   ntTrack -> SetBranchAddress("gpy",             &trk_gpy);
0155   ntTrack -> SetBranchAddress("gpz",             &trk_gpz);
0156   ntTrack -> SetBranchAddress("gpt",             &trk_gpt);
0157   ntTrack -> SetBranchAddress("geta",            &trk_geta);
0158   ntTrack -> SetBranchAddress("gphi",            &trk_gphi);
0159   ntTrack -> SetBranchAddress("gvx",             &trk_gvx);
0160   ntTrack -> SetBranchAddress("gvy",             &trk_gvy);
0161   ntTrack -> SetBranchAddress("gvz",             &trk_gvz);
0162   ntTrack -> SetBranchAddress("gvt",             &trk_gvt);
0163   ntTrack -> SetBranchAddress("gfpx",            &trk_gfpx);
0164   ntTrack -> SetBranchAddress("gfpy",            &trk_gfpy);
0165   ntTrack -> SetBranchAddress("gfpz",            &trk_gfpz);
0166   ntTrack -> SetBranchAddress("gfx",             &trk_gfx);
0167   ntTrack -> SetBranchAddress("gfy",             &trk_gfy);
0168   ntTrack -> SetBranchAddress("gfz",             &trk_gfz);
0169   ntTrack -> SetBranchAddress("gembed",          &trk_gembed);
0170   ntTrack -> SetBranchAddress("gprimary",        &trk_gprimary);
0171   ntTrack -> SetBranchAddress("nfromtruth",      &trk_nfromtruth);
0172   ntTrack -> SetBranchAddress("nwrong",          &trk_nwrong);
0173   ntTrack -> SetBranchAddress("ntrumaps",        &trk_ntrumaps);
0174   ntTrack -> SetBranchAddress("ntruintt",        &trk_ntruintt);
0175   ntTrack -> SetBranchAddress("ntrutpc",         &trk_ntrutpc);
0176   ntTrack -> SetBranchAddress("ntrumms",         &trk_ntrumms);
0177   ntTrack -> SetBranchAddress("ntrutpc1",        &trk_ntrutpc1);
0178   ntTrack -> SetBranchAddress("ntrutpc11",       &trk_ntrutpc11);
0179   ntTrack -> SetBranchAddress("ntrutpc2",        &trk_ntrutpc2);
0180   ntTrack -> SetBranchAddress("ntrutpc3",        &trk_ntrutpc3);
0181   ntTrack -> SetBranchAddress("layersfromtruth", &trk_layersfromtruth);
0182   ntTrack -> SetBranchAddress("nhittpcall",      &trk_nhittpcall);
0183   ntTrack -> SetBranchAddress("nhittpcin",       &trk_nhittpcin);
0184   ntTrack -> SetBranchAddress("nhittpcmid",      &trk_nhittpcmid);
0185   ntTrack -> SetBranchAddress("nhittpcout",      &trk_nhittpcout);
0186   ntTrack -> SetBranchAddress("nclusall",        &trk_nclusall);
0187   ntTrack -> SetBranchAddress("nclustpc",        &trk_nclustpc);
0188   ntTrack -> SetBranchAddress("nclusintt",       &trk_nclusintt);
0189   ntTrack -> SetBranchAddress("nclusmaps",       &trk_nclusmaps);
0190   ntTrack -> SetBranchAddress("nclusmms",        &trk_nclusmms);
0191 
0192   // Set branch addresses.
0193   ntTruth -> SetBranchAddress("event",           &tru_event);
0194   ntTruth -> SetBranchAddress("seed",            &tru_seed);
0195   ntTruth -> SetBranchAddress("gntracks",        &tru_gntracks);
0196   ntTruth -> SetBranchAddress("gtrackID",        &tru_gtrackID);
0197   ntTruth -> SetBranchAddress("gflavor",         &tru_gflavor);
0198   ntTruth -> SetBranchAddress("gnhits",          &tru_gnhits);
0199   ntTruth -> SetBranchAddress("gnmaps",          &tru_gnmaps);
0200   ntTruth -> SetBranchAddress("gnintt",          &tru_gnintt);
0201   ntTruth -> SetBranchAddress("gnmms",           &tru_gnmms);
0202   ntTruth -> SetBranchAddress("gnintt1",         &tru_gnintt1);
0203   ntTruth -> SetBranchAddress("gnintt2",         &tru_gnintt2);
0204   ntTruth -> SetBranchAddress("gnintt3",         &tru_gnintt3);
0205   ntTruth -> SetBranchAddress("gnintt4",         &tru_gnintt4);
0206   ntTruth -> SetBranchAddress("gnintt5",         &tru_gnintt5);
0207   ntTruth -> SetBranchAddress("gnintt6",         &tru_gnintt6);
0208   ntTruth -> SetBranchAddress("gnintt7",         &tru_gnintt7);
0209   ntTruth -> SetBranchAddress("gnintt8",         &tru_gnintt8);
0210   ntTruth -> SetBranchAddress("gntpc",           &tru_gntpc);
0211   ntTruth -> SetBranchAddress("gnlmaps",         &tru_gnlmaps);
0212   ntTruth -> SetBranchAddress("gnlintt",         &tru_gnlintt);
0213   ntTruth -> SetBranchAddress("gnltpc",          &tru_gnltpc);
0214   ntTruth -> SetBranchAddress("gnlmms",          &tru_gnlmms);
0215   ntTruth -> SetBranchAddress("gpx",             &tru_gpx);
0216   ntTruth -> SetBranchAddress("gpy",             &tru_gpy);
0217   ntTruth -> SetBranchAddress("gpz",             &tru_gpz);
0218   ntTruth -> SetBranchAddress("gpt",             &tru_gpt);
0219   ntTruth -> SetBranchAddress("geta",            &tru_geta);
0220   ntTruth -> SetBranchAddress("gphi",            &tru_gphi);
0221   ntTruth -> SetBranchAddress("gvx",             &tru_gvx);
0222   ntTruth -> SetBranchAddress("gvy",             &tru_gvy);
0223   ntTruth -> SetBranchAddress("gvz",             &tru_gvz);
0224   ntTruth -> SetBranchAddress("gvt",             &tru_gvt);
0225   ntTruth -> SetBranchAddress("gfpx",            &tru_gfpx);
0226   ntTruth -> SetBranchAddress("gfpy",            &tru_gfpy);
0227   ntTruth -> SetBranchAddress("gfpz",            &tru_gfpz);
0228   ntTruth -> SetBranchAddress("gfx",             &tru_gfx);
0229   ntTruth -> SetBranchAddress("gfy",             &tru_gfy);
0230   ntTruth -> SetBranchAddress("gfz",             &tru_gfz);
0231   ntTruth -> SetBranchAddress("gembed",          &tru_gembed);
0232   ntTruth -> SetBranchAddress("gprimary",        &tru_gprimary);
0233   ntTruth -> SetBranchAddress("trackID",         &tru_trackID);
0234   ntTruth -> SetBranchAddress("px",              &tru_px);
0235   ntTruth -> SetBranchAddress("py",              &tru_py);
0236   ntTruth -> SetBranchAddress("pz",              &tru_pz);
0237   ntTruth -> SetBranchAddress("pt",              &tru_pt);
0238   ntTruth -> SetBranchAddress("eta",             &tru_eta);
0239   ntTruth -> SetBranchAddress("phi",             &tru_phi);
0240   ntTruth -> SetBranchAddress("deltapt",         &tru_deltapt);
0241   ntTruth -> SetBranchAddress("deltaeta",        &tru_deltaeta);
0242   ntTruth -> SetBranchAddress("deltaphi",        &tru_deltaphi);
0243   ntTruth -> SetBranchAddress("charge",          &tru_charge);
0244   ntTruth -> SetBranchAddress("quality",         &tru_quality);
0245   ntTruth -> SetBranchAddress("chisq",           &tru_chisq);
0246   ntTruth -> SetBranchAddress("ndf",             &tru_ndf);
0247   ntTruth -> SetBranchAddress("nhits",           &tru_nhits);
0248   ntTruth -> SetBranchAddress("layers",          &tru_layers);
0249   ntTruth -> SetBranchAddress("nmaps",           &tru_nmaps);
0250   ntTruth -> SetBranchAddress("nintt",           &tru_nintt);
0251   ntTruth -> SetBranchAddress("ntpc",            &tru_ntpc);
0252   ntTruth -> SetBranchAddress("nmms",            &tru_nmms);
0253   ntTruth -> SetBranchAddress("ntpc1",           &tru_ntpc1);
0254   ntTruth -> SetBranchAddress("ntpc11",          &tru_ntpc11);
0255   ntTruth -> SetBranchAddress("ntpc2",           &tru_ntpc2);
0256   ntTruth -> SetBranchAddress("ntpc3",           &tru_ntpc3);
0257   ntTruth -> SetBranchAddress("nlmaps",          &tru_nlmaps);
0258   ntTruth -> SetBranchAddress("nlintt",          &tru_nlintt);
0259   ntTruth -> SetBranchAddress("nltpc",           &tru_nltpc);
0260   ntTruth -> SetBranchAddress("nlmms",           &tru_nlmms);
0261   ntTruth -> SetBranchAddress("vertexID",        &tru_vertexID);
0262   ntTruth -> SetBranchAddress("vx",              &tru_vx);
0263   ntTruth -> SetBranchAddress("vy",              &tru_vy);
0264   ntTruth -> SetBranchAddress("vz",              &tru_vz);
0265   ntTruth -> SetBranchAddress("dca2d",           &tru_dca2d);
0266   ntTruth -> SetBranchAddress("dca2dsigma",      &tru_dca2dsigma);
0267   ntTruth -> SetBranchAddress("dca3dxy",         &tru_dca3dxy);
0268   ntTruth -> SetBranchAddress("dca3dxysigma",    &tru_dca3dxysigma);
0269   ntTruth -> SetBranchAddress("dca3dz",          &tru_dca3dz);
0270   ntTruth -> SetBranchAddress("dca3dzsigma",     &tru_dca3dzsigma);
0271   ntTruth -> SetBranchAddress("pcax",            &tru_pcax);
0272   ntTruth -> SetBranchAddress("pcay",            &tru_pcay);
0273   ntTruth -> SetBranchAddress("pcaz",            &tru_pcaz);
0274   ntTruth -> SetBranchAddress("nfromtruth",      &tru_nfromtruth);
0275   ntTruth -> SetBranchAddress("nwrong",          &tru_nwrong);
0276   ntTruth -> SetBranchAddress("ntrumaps",        &tru_ntrumaps);
0277   ntTruth -> SetBranchAddress("ntruintt",        &tru_ntruintt);
0278   ntTruth -> SetBranchAddress("ntrutpc",         &tru_ntrutpc);
0279   ntTruth -> SetBranchAddress("ntrumms",         &tru_ntrumms);
0280   ntTruth -> SetBranchAddress("ntrutpc1",        &tru_ntrutpc1);
0281   ntTruth -> SetBranchAddress("ntrutpc11",       &tru_ntrutpc11);
0282   ntTruth -> SetBranchAddress("ntrutpc2",        &tru_ntrutpc2);
0283   ntTruth -> SetBranchAddress("ntrutpc3",        &tru_ntrutpc3);
0284   ntTruth -> SetBranchAddress("layersfromtruth", &tru_layersfromtruth);
0285   ntTruth -> SetBranchAddress("nhittpcall",      &tru_nhittpcall);
0286   ntTruth -> SetBranchAddress("nhittpcin",       &tru_nhittpcin);
0287   ntTruth -> SetBranchAddress("nhittpcmid",      &tru_nhittpcmid);
0288   ntTruth -> SetBranchAddress("nhittpcout",      &tru_nhittpcout);
0289   ntTruth -> SetBranchAddress("nclusall",        &tru_nclusall);
0290   ntTruth -> SetBranchAddress("nclustpc",        &tru_nclustpc);
0291   ntTruth -> SetBranchAddress("nclusintt",       &tru_nclusintt);
0292   ntTruth -> SetBranchAddress("nclusmaps",       &tru_nclusmaps);
0293   ntTruth -> SetBranchAddress("nclusmms",        &tru_nclusmms);
0294 
0295   cout << "    Initialized input tuples." << endl;
0296   return;
0297 
0298 }  // end 'InitTuples()'
0299 
0300 
0301 
0302 void SDeltaPtCutStudy::InitHists() {
0303 
0304   // histogram binning
0305   const uint64_t nPtBins(1000);
0306   const uint64_t nFracBins(1000);
0307   const uint64_t nDeltaBins(5000);
0308   const float    rPtBins[Const::NRange]    = {0., 100.};
0309   const float    rFracBins[Const::NRange]  = {0., 10.};
0310   const float    rDeltaBins[Const::NRange] = {0., 5.};
0311 
0312   // create names
0313   TString sPtTruth("h");
0314   TString sPtDelta("h");
0315   TString sPtTrack("h");
0316   TString sPtFrac("h");
0317   TString sPtTrkTru("h");
0318   sPtTruth.Append(sPtTrueBase.Data());
0319   sPtDelta.Append(sPtDeltaBase.Data());
0320   sPtTrack.Append(sPtRecoBase.Data());
0321   sPtFrac.Append(sPtFracBase.Data());
0322   sPtTrkTru.Append(sPtTrkTruBase.Data());
0323 
0324   TString sPtDeltaVsFrac("h");
0325   TString sPtDeltaVsTrue("h");
0326   TString sPtDeltaVsTrack("h");
0327   TString sPtTrueVsTrack("h");
0328   sPtDeltaVsFrac.Append(sPtDeltaBase.Data());
0329   sPtDeltaVsTrue.Append(sPtDeltaBase.Data());
0330   sPtDeltaVsTrack.Append(sPtDeltaBase.Data());
0331   sPtTrueVsTrack.Append(sPtTrueBase.Data());
0332   sPtDeltaVsFrac.Append("Vs");
0333   sPtDeltaVsTrue.Append("Vs");
0334   sPtDeltaVsTrack.Append("Vs");
0335   sPtTrueVsTrack.Append("Vs");
0336   sPtDeltaVsFrac.Append(sPtFracBase.Data());
0337   sPtDeltaVsTrue.Append(sPtTrueBase.Data());
0338   sPtDeltaVsTrack.Append(sPtRecoBase.Data());
0339   sPtTrueVsTrack.Append(sPtRecoBase.Data());
0340 
0341   // delta-pt projection names
0342   for (size_t iProj = 0; iProj < nProj; iProj++) {
0343     sPtProj[iProj] = "h";
0344     sPtProj[iProj].Append(sPtProjBase.Data());
0345     sPtProj[iProj].Append(sProjSuffix[iProj].Data());
0346   }
0347 
0348   // flat delta-pt cut names
0349   vector<TString> sPtDeltaCut(nDPtCuts);
0350   vector<TString> sPtTrackCut(nDPtCuts);
0351   vector<TString> sPtFracCut(nDPtCuts);
0352   vector<TString> sPtTrkTruCut(nDPtCuts);
0353   vector<TString> sPtDeltaVsFracCut(nDPtCuts);
0354   vector<TString> sPtDeltaVsTrueCut(nDPtCuts);
0355   vector<TString> sPtDeltaVsTrackCut(nDPtCuts);
0356   vector<TString> sPtTrueVsTrackCut(nDPtCuts);
0357   for (size_t iCut = 0; iCut < nDPtCuts; iCut++) {
0358     sPtDeltaCut[iCut]  = "h";
0359     sPtTrackCut[iCut]  = "h";
0360     sPtFracCut[iCut]   = "h";
0361     sPtTrkTruCut[iCut] = "h";
0362     sPtDeltaCut[iCut].Append(sPtDeltaBase.Data());
0363     sPtTrackCut[iCut].Append(sPtRecoBase.Data());
0364     sPtFracCut[iCut].Append(sPtFracBase.Data());
0365     sPtTrkTruCut[iCut].Append(sPtTrkTruBase.Data());
0366     sPtDeltaCut[iCut].Append(sDPtSuffix[iCut].Data());
0367     sPtTrackCut[iCut].Append(sDPtSuffix[iCut].Data());
0368     sPtFracCut[iCut].Append(sDPtSuffix[iCut].Data());
0369     sPtTrkTruCut[iCut].Append(sDPtSuffix[iCut].Data());
0370 
0371     sPtDeltaVsFracCut[iCut]  = "h";
0372     sPtDeltaVsTrueCut[iCut]  = "h";
0373     sPtDeltaVsTrackCut[iCut] = "h";
0374     sPtTrueVsTrackCut[iCut]  = "h";
0375     sPtDeltaVsFracCut[iCut].Append(sPtDeltaBase.Data());
0376     sPtDeltaVsFracCut[iCut].Append(sPtDeltaBase.Data());
0377     sPtDeltaVsTrueCut[iCut].Append(sPtDeltaBase.Data());
0378     sPtDeltaVsTrackCut[iCut].Append(sPtDeltaBase.Data());
0379     sPtTrueVsTrackCut[iCut].Append(sPtTrueBase.Data());
0380     sPtDeltaVsFracCut[iCut].Append("Vs");
0381     sPtDeltaVsTrueCut[iCut].Append("Vs");
0382     sPtDeltaVsTrackCut[iCut].Append("Vs");
0383     sPtTrueVsTrackCut[iCut].Append("Vs");
0384     sPtDeltaVsFracCut[iCut].Append(sPtFracBase.Data());
0385     sPtDeltaVsTrueCut[iCut].Append(sPtTrueBase.Data());
0386     sPtDeltaVsTrackCut[iCut].Append(sPtRecoBase.Data());
0387     sPtTrueVsTrackCut[iCut].Append(sPtRecoBase.Data());
0388     sPtDeltaVsFracCut[iCut].Append(sDPtSuffix[iCut].Data());
0389     sPtDeltaVsTrueCut[iCut].Append(sDPtSuffix[iCut].Data());
0390     sPtDeltaVsTrackCut[iCut].Append(sDPtSuffix[iCut].Data());
0391     sPtTrueVsTrackCut[iCut].Append(sDPtSuffix[iCut].Data());
0392   }
0393 
0394   // pt-dependent delta-pt cut names
0395   vector<TString> sPtDeltaSig(nSigCuts);
0396   vector<TString> sPtTrackSig(nSigCuts);
0397   vector<TString> sPtFracSig(nSigCuts);
0398   vector<TString> sPtTrkTruSig(nSigCuts);
0399   vector<TString> sPtDeltaVsFracSig(nSigCuts);
0400   vector<TString> sPtDeltaVsTrueSig(nSigCuts);
0401   vector<TString> sPtDeltaVsTrackSig(nSigCuts);
0402   vector<TString> sPtTrueVsTrackSig(nSigCuts);
0403   for (size_t iSig = 0; iSig < nSigCuts; iSig++) {
0404     sPtDeltaSig[iSig]  = "h";
0405     sPtTrackSig[iSig]  = "h";
0406     sPtFracSig[iSig]   = "h";
0407     sPtTrkTruSig[iSig] = "h";
0408     sPtDeltaSig[iSig].Append(sPtDeltaBase.Data());
0409     sPtTrackSig[iSig].Append(sPtRecoBase.Data());
0410     sPtFracSig[iSig].Append(sPtFracBase.Data());
0411     sPtTrkTruSig[iSig].Append(sPtTrkTruBase.Data());
0412     sPtDeltaSig[iSig].Append(sSigSuffix[iSig].Data());
0413     sPtTrackSig[iSig].Append(sSigSuffix[iSig].Data());
0414     sPtFracSig[iSig].Append(sSigSuffix[iSig].Data());
0415     sPtTrkTruSig[iSig].Append(sSigSuffix[iSig].Data());
0416 
0417     sPtDeltaVsFracSig[iSig]  = "h";
0418     sPtDeltaVsTrueSig[iSig]  = "h";
0419     sPtDeltaVsTrackSig[iSig] = "h";
0420     sPtTrueVsTrackSig[iSig]  = "h";
0421     sPtDeltaVsFracSig[iSig].Append(sPtDeltaBase.Data());
0422     sPtDeltaVsFracSig[iSig].Append(sPtDeltaBase.Data());
0423     sPtDeltaVsTrueSig[iSig].Append(sPtDeltaBase.Data());
0424     sPtDeltaVsTrackSig[iSig].Append(sPtDeltaBase.Data());
0425     sPtTrueVsTrackSig[iSig].Append(sPtTrueBase.Data());
0426     sPtDeltaVsFracSig[iSig].Append("Vs");
0427     sPtDeltaVsTrueSig[iSig].Append("Vs");
0428     sPtDeltaVsTrackSig[iSig].Append("Vs");
0429     sPtTrueVsTrackSig[iSig].Append("Vs");
0430     sPtDeltaVsFracSig[iSig].Append(sPtFracBase.Data());
0431     sPtDeltaVsTrueSig[iSig].Append(sPtTrueBase.Data());
0432     sPtDeltaVsTrackSig[iSig].Append(sPtRecoBase.Data());
0433     sPtTrueVsTrackSig[iSig].Append(sPtRecoBase.Data());
0434     sPtDeltaVsFracSig[iSig].Append(sSigSuffix[iSig].Data());
0435     sPtDeltaVsTrueSig[iSig].Append(sSigSuffix[iSig].Data());
0436     sPtDeltaVsTrackSig[iSig].Append(sSigSuffix[iSig].Data());
0437     sPtTrueVsTrackSig[iSig].Append(sSigSuffix[iSig].Data());
0438   }
0439 
0440   // initialize histograms
0441   hPtTruth  = new TH1D(sPtTruth.Data(),  "", nPtBins,    rPtBins[0],    rPtBins[1]);
0442   hPtDelta  = new TH1D(sPtDelta.Data(),  "", nDeltaBins, rDeltaBins[0], rDeltaBins[1]);
0443   hPtTrack  = new TH1D(sPtTrack.Data(),  "", nPtBins,    rPtBins[0],    rPtBins[1]);
0444   hPtFrac   = new TH1D(sPtFrac.Data(),   "", nFracBins,  rFracBins[0],  rFracBins[1]);
0445   hPtTrkTru = new TH1D(sPtTrkTru.Data(), "", nPtBins,    rPtBins[0],    rPtBins[1]);
0446   hPtTruth  -> Sumw2();
0447   hPtDelta  -> Sumw2();
0448   hPtTrack  -> Sumw2();
0449   hPtFrac   -> Sumw2();
0450   hPtTrkTru -> Sumw2();
0451 
0452   hPtDeltaVsFrac  = new TH2D(sPtDeltaVsFrac.Data(),  "", nFracBins, rFracBins[0], rFracBins[1], nDeltaBins, rDeltaBins[0], rDeltaBins[1]);
0453   hPtDeltaVsTrue  = new TH2D(sPtDeltaVsTrue.Data(),  "", nPtBins,   rPtBins[0],   rPtBins[1],   nDeltaBins, rDeltaBins[0], rDeltaBins[1]);
0454   hPtDeltaVsTrack = new TH2D(sPtDeltaVsTrack.Data(), "", nPtBins,   rPtBins[0],   rPtBins[1],   nDeltaBins, rDeltaBins[0], rDeltaBins[1]);
0455   hPtTrueVsTrack  = new TH2D(sPtTrueVsTrack.Data(),  "", nPtBins,   rPtBins[0],   rPtBins[1],   nPtBins,    rPtBins[0],    rPtBins[1]);
0456   hPtDeltaVsFrac  -> Sumw2();
0457   hPtDeltaVsTrue  -> Sumw2();
0458   hPtDeltaVsTrack -> Sumw2();
0459   hPtTrueVsTrack  -> Sumw2();
0460 
0461   // delta-pt projection histograms
0462   for (size_t iProj = 0; iProj < nProj; iProj++) {
0463     hPtDeltaProj[iProj] = new TH1D(sPtProj[iProj].Data(), "", nDeltaBins, rDeltaBins[0], rDeltaBins[1]);
0464     hPtDeltaProj[iProj] -> Sumw2();
0465   }
0466 
0467   // flat delta-pt cut histograms
0468   for (size_t iCut = 0; iCut < nDPtCuts; iCut++) {
0469     hPtDeltaCut[iCut]  = new TH1D(sPtDeltaCut[iCut].Data(),  "", nDeltaBins, rDeltaBins[0], rDeltaBins[1]);
0470     hPtTrackCut[iCut]  = new TH1D(sPtTrackCut[iCut].Data(),  "", nPtBins,    rPtBins[0],    rPtBins[1]);
0471     hPtFracCut[iCut]   = new TH1D(sPtFracCut[iCut].Data(),   "", nFracBins,  rFracBins[0],  rFracBins[1]);
0472     hPtTrkTruCut[iCut] = new TH1D(sPtTrkTruCut[iCut].Data(), "", nPtBins,    rPtBins[0],    rPtBins[1]);
0473     hPtDeltaCut[iCut]  -> Sumw2();
0474     hPtTrackCut[iCut]  -> Sumw2();
0475     hPtFracCut[iCut]   -> Sumw2();
0476     hPtTrkTruCut[iCut] -> Sumw2();
0477 
0478     hPtDeltaVsFracCut[iCut]  = new TH2D(sPtDeltaVsFracCut[iCut].Data(),  "", nFracBins, rFracBins[0], rFracBins[1], nDeltaBins, rDeltaBins[0], rDeltaBins[1]);
0479     hPtDeltaVsTrueCut[iCut]  = new TH2D(sPtDeltaVsTrueCut[iCut].Data(),  "", nPtBins,   rPtBins[0],   rPtBins[1],   nDeltaBins, rDeltaBins[0], rDeltaBins[1]);
0480     hPtDeltaVsTrackCut[iCut] = new TH2D(sPtDeltaVsTrackCut[iCut].Data(), "", nPtBins,   rPtBins[0],   rPtBins[1],   nDeltaBins, rDeltaBins[0], rDeltaBins[1]);
0481     hPtTrueVsTrackCut[iCut]  = new TH2D(sPtTrueVsTrackCut[iCut].Data(),  "", nPtBins,   rPtBins[0],   rPtBins[1],   nPtBins,    rPtBins[0],    rPtBins[1]);
0482     hPtDeltaVsFracCut[iCut]  -> Sumw2();
0483     hPtDeltaVsTrueCut[iCut]  -> Sumw2();
0484     hPtDeltaVsTrackCut[iCut] -> Sumw2();
0485     hPtTrueVsTrackCut[iCut]  -> Sumw2();
0486   }
0487 
0488   // pt-dependent delta-pt cut histograms
0489   for (size_t iSig = 0; iSig < nSigCuts; iSig++) {
0490     hPtDeltaSig[iSig]  = new TH1D(sPtDeltaSig[iSig].Data(),  "", nDeltaBins, rDeltaBins[0], rDeltaBins[1]);
0491     hPtTrackSig[iSig]  = new TH1D(sPtTrackSig[iSig].Data(),  "", nPtBins,    rPtBins[0],    rPtBins[1]);
0492     hPtFracSig[iSig]   = new TH1D(sPtFracSig[iSig].Data(),   "", nFracBins,  rFracBins[0],  rFracBins[1]);
0493     hPtTrkTruSig[iSig] = new TH1D(sPtTrkTruSig[iSig].Data(), "", nPtBins,    rPtBins[0],    rPtBins[1]);
0494     hPtDeltaSig[iSig]  -> Sumw2();
0495     hPtTrackSig[iSig]  -> Sumw2();
0496     hPtFracSig[iSig]   -> Sumw2();
0497     hPtTrkTruSig[iSig] -> Sumw2();
0498 
0499     hPtDeltaVsFracSig[iSig]  = new TH2D(sPtDeltaVsFracSig[iSig].Data(),  "", nFracBins, rFracBins[0], rFracBins[1], nDeltaBins, rDeltaBins[0], rDeltaBins[1]);
0500     hPtDeltaVsTrueSig[iSig]  = new TH2D(sPtDeltaVsTrueSig[iSig].Data(),  "", nPtBins,   rPtBins[0],   rPtBins[1],   nDeltaBins, rDeltaBins[0], rDeltaBins[1]);
0501     hPtDeltaVsTrackSig[iSig] = new TH2D(sPtDeltaVsTrackSig[iSig].Data(), "", nPtBins,   rPtBins[0],   rPtBins[1],   nDeltaBins, rDeltaBins[0], rDeltaBins[1]);
0502     hPtTrueVsTrackSig[iSig]  = new TH2D(sPtTrueVsTrackSig[iSig].Data(),  "", nPtBins,   rPtBins[0],   rPtBins[1],   nPtBins,    rPtBins[0],    rPtBins[1]);
0503     hPtDeltaVsFracSig[iSig]  -> Sumw2();
0504     hPtDeltaVsTrueSig[iSig]  -> Sumw2();
0505     hPtDeltaVsTrackSig[iSig] -> Sumw2();
0506     hPtTrueVsTrackSig[iSig]  -> Sumw2();
0507   }
0508 
0509   cout << "      Initialized output histograms." << endl;
0510   return;
0511 
0512 }  // end 'InitHists()'
0513 
0514 // end ------------------------------------------------------------------------