00001
00002
00003
00004
00005
00006
00008 #ifndef NCEXTRAPOLATIONNS_H
00009 #define NCEXTRAPOLATIONNS_H
00010
00011 #include "NCUtils/Extrapolation/NCExtrapolation.h"
00012
00013 class TH2D;
00014
00015
00016
00017 class NCExtrapolationNS : public NCExtrapolation
00018 {
00019
00020 public:
00021 NCExtrapolationNS();
00022 NCExtrapolationNS(NCAnalysisUtils *utils,
00023 std::map<Int_t,double>& dataNear,
00024 std::map<Int_t,double>& mcNear,
00025 std::map<Int_t,double>& dataFar,
00026 std::map<Int_t,double>& mcFar,
00027 bool useCC,
00028 bool useNC);
00029 virtual ~NCExtrapolationNS();
00030
00031 void AddEvent(ANtpHeaderInfo *headerInfo,
00032 ANtpBeamInfo *beamInfo,
00033 ANtpRecoInfo *recoInfo,
00034 ANtpAnalysisInfo *analysisInfo,
00035 ANtpTruthInfoBeam *truthInfo,
00036 NCType::ERunType runType,
00037 bool useMCAsData=false,
00038 NCType::EFileType fileType = NCType::kBeamFile);
00039 void PrepareNearDetector();
00040 void PredictSpectrum();
00041 void WriteResources();
00042 void Prepare(const Registry& r);
00043
00044 private:
00045
00046 int fDecay;
00047 int fDoMC;
00048 static const int fnbins=199;
00049 double fbinvect[200];
00050 TString fBeamFileName;
00051 TString fBeamFileNamePostShutDown;
00052 TString fFarTrueCorrectionFile;
00053 TString fNearTrueCorrectionFile;
00054 TString fTrueCorrectionHistNear;
00055 TString fTrueCorrectionHistFar;
00056 double fNearExposureScale;
00057
00058 TH1F *fTrueND;
00059 TH1F *fTrueNDAfterRT;
00060 TH1F *fTrueNDAfterRT_noeffcorr;
00061 TH1F *fRecoND;
00062 TH1F *fTrueFD;
00063 TH1F *fTrueFD_nc;
00064 TH1F *fRecoFD;
00065 TH1F *fRecoFD_nc;
00066 TH1F *fTrueFDAfterBM;
00067 TH1F *fTrueFDAfterBM_noacccorr;
00068 TH1F *fTrueFDAfterBM_posteffcorr;
00069 TH1F *fTrueFDAfterOsc;
00070 TH1F *fRecoFDAfterBM;
00071
00072 TH1F *fdatselND;
00073 TH1F *fdatselFD;
00074 TH1F *fdatselFD_nc;
00075
00076
00077 vector<TH2F *> matarray;
00078 vector<TH2F *> matarraync;
00079 vector<TH2F *> matarrayb;
00080 vector<TH2F *> matarrayncb;
00081
00082 vector<TH2F *> matarrayt;
00083 vector<TH2F *> matarraybt;
00084
00085 vector<TH2F *> matarray_post;
00086 vector<TH2F *> matarraync_post;
00087 vector<TH2F *> matarrayb_post;
00088 vector<TH2F *> matarrayncb_post;
00089
00090 vector<TH2F *> matarrayt_post;
00091 vector<TH2F *> matarraybt_post;
00092
00093 vector< vector<TH1F *> > noosctruearray;
00094 vector< vector<TH1F *> > noosctruearraypost;
00095
00096
00097
00098
00099
00100
00101
00102
00103 TH1F *feffic;
00104 TH1F *fefficnc;
00105 TH1F *fefficbg;
00106 TH1F *fefficncbg;
00107 TH1F *fratccnc;
00108 TH1F *feffic_numcheck;
00109
00110
00111 TH2F *ftruerecomatt;
00112 TH2F *ftruerecomatbt;
00113 TH1F *feffict;
00114 TH1F *fefficbgt;
00115 TH1F *frattau;
00116
00117
00118 TH2F *frecotruemat;
00119 TH1F *fpurityn;
00120 TH1F *fefficiencyn;
00121
00122
00123
00124
00125
00126
00127
00128
00129 TH1F *feffic_post;
00130 TH1F *fefficnc_post;
00131 TH1F *fefficbg_post;
00132 TH1F *fefficncbg_post;
00133 TH1F *fratccnc_post;
00134
00135
00136 TH2F *ftruerecomatt_post;
00137 TH2F *ftruerecomatbt_post;
00138 TH1F *feffict_post;
00139 TH1F *fefficbgt_post;
00140 TH1F *frattau_post;
00141
00142
00143 TH2F *frecotruemat_post;
00144 TH1F *fpurityn_post;
00145 TH1F *fefficiencyn_post;
00146
00147
00148
00149 TH1F *fnoosctrue;
00150 TH1F *fnooscreco;
00151 TH1F *fnooscreconc;
00152 TH1F *fnooscrecotau;
00153
00154
00155 TH1F *fnoosctrue_ncfit;
00156 TH1F *fnooscreco_ncfit;
00157 TH1F *fnooscrecocc_ncfit;
00158 TH1F *fnooscrecotau_ncfit;
00159
00160
00161
00162 TH1F *fnoosctrue_post;
00163 TH1F *fnooscreco_post;
00164 TH1F *fnooscreconc_post;
00165 TH1F *fnooscrecotau_post;
00166
00167
00168 TH1F *fnoosctrue_ncfit_post;
00169 TH1F *fnooscreco_ncfit_post;
00170 TH1F *fnooscrecocc_ncfit_post;
00171 TH1F *fnooscrecotau_ncfit_post;
00172
00173
00174 TH1F *fnooscar;
00175 TH1F *fnooscar_ccselcc;
00176 TH1F *fnooscar_ccselnc;
00177 TH1F *fnooscar_ncselnc;
00178 TH1F *fnooscar_ncselcc;
00179
00180 TH1F *fnooscar_ccselcct;
00181 TH1F *fnooscar_ccselnct;
00182
00183
00184 TH1F *fnooscar_post;
00185 TH1F *fnooscar_ccselcc_post;
00186 TH1F *fnooscar_ccselnc_post;
00187 TH1F *fnooscar_ncselnc_post;
00188 TH1F *fnooscar_ncselcc_post;
00189
00190 TH1F *fnooscar_ccselcct_post;
00191 TH1F *fnooscar_ccselnct_post;
00192
00193
00194
00195 TH1F *fbestfitreco;
00196 TH1F *fbestfitreconc;
00197 TH1F *fbestfitrecotau;
00198
00199
00200
00201 TH1F *fbestfitreco_ncfit;
00202 TH1F *fbestfitrecocc_ncfit;
00203 TH1F *fbestfitrecotau_ncfit;
00204
00205
00206
00207 TH1F *fbestfitreco_post;
00208 TH1F *fbestfitreconc_post;
00209 TH1F *fbestfitrecotau_post;
00210
00211
00212
00213 TH1F *fbestfitreco_ncfit_post;
00214 TH1F *fbestfitrecocc_ncfit_post;
00215 TH1F *fbestfitrecotau_ncfit_post;
00216
00217
00218 TH1F *ftemptrue;
00219 TH1F *ftempreco;
00220 TH1F *ftempreconc;
00221 TH1F *ftemprecotau;
00222
00223
00224 TH1F *ftemptrue_ncfit;
00225 TH1F *ftempreco_ncfit;
00226 TH1F *ftemprecocc_ncfit;
00227 TH1F *ftemprecotau_ncfit;
00228
00229
00230 TH1F *ftemptrue_post;
00231 TH1F *ftempreco_post;
00232 TH1F *ftempreconc_post;
00233 TH1F *ftemprecotau_post;
00234
00235
00236 TH1F *ftemptrue_ncfit_post;
00237 TH1F *ftempreco_ncfit_post;
00238 TH1F *ftemprecocc_ncfit_post;
00239 TH1F *ftemprecotau_ncfit_post;
00240
00241 TH2F *fchisqall;
00242 TH2F *fchisqallnc;
00243
00244 TH1F *fbestfitreco_rebinned;
00245 TH1F *fbestfitreco_rebinned_post;
00246 TH1F *fbestfitrecotau_rebinned;
00247 TH1F *fbestfitrecotau_rebinned_post;
00248 TH1F *fbestfitreconc_rebinned;
00249 TH1F *fbestfitreconc_rebinned_post;
00250 TH1F *foscreco_rebinned;
00251 TH1F *foscreco_rebinned_post;
00252 TH1F *ftempreco_rebinned;
00253 TH1F *ftempreco_rebinned_post;
00254 TH1F *ftempreconc_rebinned;
00255 TH1F *ftempreconc_rebinned_post;
00256 TH1F *fnooscreco_rebinned;
00257 TH1F *fnooscreco_rebinned_post;
00258 TH1F *fnooscreconc_rebinned;
00259 TH1F *fnooscreconc_rebinned_post;
00260 TH1F *fnooscrecotau_rebinned;
00261 TH1F *fnooscrecotau_rebinned_post;
00262
00263 TH1F *fbestfitreco_ncfit_rebinned;
00264 TH1F *fbestfitreco_ncfit_rebinned_post;
00265 TH1F *fbestfitrecotau_ncfit_rebinned;
00266 TH1F *fbestfitrecotau_ncfit_rebinned_post;
00267 TH1F *fbestfitrecocc_ncfit_rebinned;
00268 TH1F *fbestfitrecocc_ncfit_rebinned_post;
00269 TH1F *foscreco_ncfit_rebinned;
00270 TH1F *foscreco_ncfit_rebinned_post;
00271 TH1F *ftempreco_ncfit_rebinned;
00272 TH1F *ftempreco_ncfit_rebinned_post;
00273 TH1F *ftemprecocc_ncfit_rebinned;
00274 TH1F *ftemprecocc_ncfit_rebinned_post;
00275 TH1F *fnooscreco_ncfit_rebinned;
00276 TH1F *fnooscreco_ncfit_rebinned_post;
00277 TH1F *fnooscrecocc_ncfit_rebinned;
00278 TH1F *fnooscrecocc_ncfit_rebinned_post;
00279 TH1F *fnooscrecotau_ncfit_rebinned;
00280 TH1F *fnooscrecotau_ncfit_rebinned_post;
00281
00282 TH2D *fbmat_norm_r2;
00283 TH2D *fbmat_norm_r2_post;
00284 TH1F *fcorf;
00285 TH1F *fcor;
00286 TH1D *fcorfall;
00287 TH1D *fcorall;
00288 TH1D *fSingleMCNearNuCC;
00289 TH1D *fSingleMCFarNuCC;
00290 TH1D *fSingleMCNearAllCC;
00291 TH1D *fSingleMCFarAllCC;
00292 TH1D *fMCNearNuCC;
00293 TH1D *fMCFarNuCC;
00294 TH1D *fMCNearAllCC;
00295 TH1D *fMCFarAllCC;
00296 TH1F *fallccmc;
00297 TH1F *fallccmcf;
00298 TH1F *fallncmcf;
00299
00300
00301 vector<float> fTrueNuEnergy;
00302 vector<float> fTrueNuFlavor;
00303 vector<float> fTrueNuComplete;
00304 void AddSingleMCEventsToHistogram(Detector::Detector_t det);
00305 void AddNearEvent(ANtpHeaderInfo *headerInfo,
00306 ANtpBeamInfo *beamInfo,
00307 ANtpRecoInfo *recoInfo,
00308 ANtpAnalysisInfo *analysisInfo,
00309 ANtpTruthInfoBeam *truthInfo,
00310 NCType::ERunType runType,
00311 bool useMCAsData=false,
00312 NCType::EFileType fileType=NCType::kBeamFile);
00313 void AddFarEvent(ANtpHeaderInfo *headerInfo,
00314 ANtpBeamInfo *beamInfo,
00315 ANtpRecoInfo *recoInfo,
00316 ANtpAnalysisInfo *analysisInfo,
00317 ANtpTruthInfoBeam *truthInfo,
00318 NCType::ERunType runType,
00319 bool useMCAsData=false,
00320 NCType::EFileType fileType=NCType::kBeamFile);
00321 void MakeHistograms();
00322
00323
00324
00325 void RecoTruePur(TH2F *recotruemat1,
00326 TH1F *purityn1,
00327 TH1F *efficiencyn1,
00328 double enu_shift,
00329 int beam);
00330
00331 void RecoTrueEffPur(TH2F *truerecomat1,
00332 TH2F *truerecomat2,
00333 TH2F *truerecomat1b,
00334 TH2F *truerecomat2b,
00335 double enu_shift,
00336 int beam);
00337 void RecoTrueEffPurTau(TH2F *truerecomat1,
00338 TH2F *truerecomat1b,
00339 double enu_shift,
00340 int beam);
00341 void GetEff (TH1F *effic_noosctrue,
00342 TH1F *effic_noosctruenc,
00343 TH1F *neffic_noosctrue,
00344 TH1F *neffic_noosctruenc,
00345 TH1F *ratccnc,TH1F *rattau,
00346 int beam);
00347 void GetEfft(TH1F *effic_noosctrue,
00348 TH1F *neffic_noosctrue,
00349 int beam);
00350
00351 void MakePrediction(TH1F *datsel,
00352 TH1F* purityn,
00353 TH1F* efficiencyn,
00354 TH2F *matn_norm,
00355 TH1F* prediction,
00356 NCType::ERunType runType);
00357
00358
00359 void Rebindata(TH1F *inihist,
00360 TH1F &rebinhist);
00361 void Rebin(TH1F *inihist,
00362 TH1F &rebinhist);
00363 void truetoreco(TH1F *truth,
00364 TH1F& reco,
00365 TH2F *matrix);
00366 float chisq(TH1F *obs,
00367 TH1F *exp,
00368 TH1F *expnc);
00369 void oscweight(std::vector<double> &sinSqrDeltaMSqr,
00370 double sinSqr2Theta,
00371 double fSterile,
00372 TH1F *noosc,
00373 TH1F *osc,
00374 int flavor,
00375 int interactionType);
00376 void oscweightOld(TH1F *noosc,
00377 TH1F &osc,
00378 float dm,
00379 float st,
00380 int method,
00381 int which);
00382 void Convert2DMatrixToProbability(TH2F *matrix);
00383 void FillDataHistogramFromEnergyBins(int beam,
00384 int nccc,
00385 TH1F *hist);
00386
00387
00388
00389
00390
00391
00392
00393
00394
00395
00396
00397
00398
00399
00400
00401
00402
00403
00404
00405
00406
00407
00408
00409
00410
00411
00412
00413
00414
00415
00416
00417
00418
00419
00420
00421
00422 };
00423
00424 #endif // NCEXTRAPOLATIONNS_H
00425
00426