00001 #ifndef MADABID_h
00002 #define MADABID_h
00003
00004 #include "TH1.h"
00005 #include "TH2.h"
00006 #include "TFile.h"
00007 #include "TString.h"
00008 #include "TObject.h"
00009 #include "TObjArray.h"
00010 #include "TClonesArray.h"
00011
00012 #include "StandardNtuple/NtpStRecord.h"
00013 #include "CandNtupleSR/NtpSREvent.h"
00014
00015 class MadAbID : public TObject {
00016
00017 public:
00018 MadAbID();
00019 virtual ~MadAbID();
00020
00021 Bool_t PassCuts(const NtpSREvent* ntpEvent, const NtpStRecord* ntpRecord);
00022 Double_t CalcPID(const NtpSREvent* ntpEvent, const NtpStRecord* ntpRecord);
00023
00024 Int_t PidCosTheta();
00025 Int_t PidX();
00026 Int_t PidY();
00027 Int_t PidW2();
00028 Int_t PidQ2();
00029 Int_t PidTrackPHfrac();
00030 Int_t PidTrackPHmean();
00031 Int_t PidTrackQPsigmaQP();
00032 Int_t PidTrackLikePlanes();
00033 Int_t PidTrackCharge();
00034 Int_t PidTrackEnergy();
00035 Int_t PidEventEnergy();
00036 Int_t PidNormalization();
00037
00038 void UseCosTheta(Int_t n=2);
00039 void UseX(Int_t n=2);
00040 void UseY(Int_t n=2);
00041 void UseW2(Int_t n=2);
00042 void UseQ2(Int_t n=2);
00043 void UseTrackPHfrac(Int_t n=2);
00044 void UseTrackPHmean(Int_t n=2);
00045 void UseTrackQPsigmaQP(Int_t n=2);
00046 void UseTrackLikePlanes(Int_t n=2);
00047 void UseTrackCharge(Int_t n=1);
00048 void UseTrackEnergy(Int_t n=1);
00049 void UseEventEnergy(Int_t n=1);
00050 void UseNormalization(Int_t n=1);
00051 void Reset();
00052
00053 Int_t GetTrackPlanes(const NtpSREvent* ntpEvent, const NtpStRecord* ntpRecord);
00054 Int_t GetTrackLikePlanes(const NtpSREvent* ntpEvent, const NtpStRecord* ntpRecord);
00055 Int_t GetTrackEMCharge(const NtpSREvent* ntpEvent, const NtpStRecord* ntpRecord);
00056 Double_t GetTrackQPsigmaQP(const NtpSREvent* ntpEvent, const NtpStRecord* ntpRecord);
00057 Double_t GetTrackPHfrac(const NtpSREvent* ntpEvent, const NtpStRecord* ntpRecord);
00058 Double_t GetTrackPHmean(const NtpSREvent* ntpEvent, const NtpStRecord* ntpRecord);
00059 Double_t GetRecoCosTheta(const NtpSREvent* ntpEvent, const NtpStRecord* ntpRecord);
00060 Double_t GetRecoX(const NtpSREvent* ntpEvent, const NtpStRecord* ntpRecord);
00061 Double_t GetRecoY(const NtpSREvent* ntpEvent, const NtpStRecord* ntpRecord);
00062 Double_t GetRecoQ2(const NtpSREvent* ntpEvent, const NtpStRecord* ntpRecord);
00063 Double_t GetRecoW2(const NtpSREvent* ntpEvent, const NtpStRecord* ntpRecord);
00064 Double_t GetRecoE(const NtpSREvent* ntpEvent, const NtpStRecord* ntpRecord);
00065
00066 Bool_t GetPass(const NtpSREvent* ntpEvent, const NtpStRecord* ntpRecord);
00067 Double_t GetPid(const NtpSREvent* ntpEvent, const NtpStRecord* ntpRecord);
00068 Double_t GetProbCC(const NtpSREvent* ntpEvent, const NtpStRecord* ntpRecord);
00069 Double_t GetProbNC(const NtpSREvent* ntpEvent, const NtpStRecord* ntpRecord);
00070
00071 void ReadPDFs(const char* name);
00072 void WritePDFs(const char* name);
00073 void NormalizePDFs();
00074
00075 void FillPDFs(const NtpSREvent* ntpEvent, const NtpStRecord* ntpRecord, Int_t ccnc);
00076 void FillPDFs(const NtpSREvent* ntpEvent, const NtpStRecord* ntpRecord, Int_t ccnc, Double_t osc);
00077
00078 private:
00079
00080 void MakePDFs();
00081 void MakePidVariables(const NtpSREvent* ntpEvent, const NtpStRecord* ntpRecord);
00082 void MakeRecoVariables(const NtpSREvent* ntpEvent, const NtpStRecord* ntpRecord);
00083
00084 Bool_t fReadPdfs;
00085 Bool_t fWritePdfs;
00086 Bool_t fMakePdfs;
00087 Bool_t fFoundPdfs;
00088
00089 TString fPdfsFileIn;
00090 TString fPdfsFileOut;
00091
00092 Bool_t fCosTheta_1D;
00093 Bool_t fX_1D;
00094 Bool_t fY_1D;
00095 Bool_t fQ2_1D;
00096 Bool_t fW2_1D;
00097 Bool_t fCosTheta_2D;
00098 Bool_t fX_2D;
00099 Bool_t fY_2D;
00100 Bool_t fQ2_2D;
00101 Bool_t fW2_2D;
00102 Bool_t fTrackPHfrac_1D;
00103 Bool_t fTrackPHmean_1D;
00104 Bool_t fTrackQPsigmaQP_1D;
00105 Bool_t fTrackLikePlanes_1D;
00106 Bool_t fTrackPHfrac_2D;
00107 Bool_t fTrackPHmean_2D;
00108 Bool_t fTrackQPsigmaQP_2D;
00109 Bool_t fTrackLikePlanes_2D;
00110 Bool_t fTrackCharge_1D;
00111 Bool_t fTrackEnergy_1D;
00112 Bool_t fEventEnergy_1D;
00113 Bool_t fNormalization;
00114
00115 TH1D* hCosTheta_1D_CC;
00116 TH1D* hX_1D_CC;
00117 TH1D* hY_1D_CC;
00118 TH1D* hQ2_1D_CC;
00119 TH1D* hW2_1D_CC;
00120 TH2D* hCosTheta_2D_CC;
00121 TH2D* hX_2D_CC;
00122 TH2D* hY_2D_CC;
00123 TH2D* hQ2_2D_CC;
00124 TH2D* hW2_2D_CC;
00125 TH1D* hE_2D_CC;
00126 TH1D* hTrackPHfrac_1D_CC;
00127 TH1D* hTrackPHmean_1D_CC;
00128 TH1D* hTrackQPsigmaQP_1D_CC;
00129 TH1D* hTrackLikePlanes_1D_CC;
00130 TH2D* hTrackPHfrac_2D_CC;
00131 TH2D* hTrackPHmean_2D_CC;
00132 TH2D* hTrackQPsigmaQP_2D_CC;
00133 TH2D* hTrackLikePlanes_2D_CC;
00134 TH1D* hTrackPlanes_2D_CC_1;
00135 TH1D* hTrackPlanes_2D_CC_2;
00136 TH1D* hTrackCharge_1D_CC;
00137 TH1D* hTrackEnergy_1D_CC;
00138 TH1D* hEventEnergy_1D_CC;
00139
00140 TH1D* hCosTheta_1D_NC;
00141 TH1D* hX_1D_NC;
00142 TH1D* hY_1D_NC;
00143 TH1D* hQ2_1D_NC;
00144 TH1D* hW2_1D_NC;
00145 TH2D* hCosTheta_2D_NC;
00146 TH2D* hX_2D_NC;
00147 TH2D* hY_2D_NC;
00148 TH2D* hQ2_2D_NC;
00149 TH2D* hW2_2D_NC;
00150 TH1D* hE_2D_NC;
00151 TH1D* hTrackPHfrac_1D_NC;
00152 TH1D* hTrackPHmean_1D_NC;
00153 TH1D* hTrackQPsigmaQP_1D_NC;
00154 TH1D* hTrackLikePlanes_1D_NC;
00155 TH2D* hTrackPHfrac_2D_NC;
00156 TH2D* hTrackPHmean_2D_NC;
00157 TH2D* hTrackQPsigmaQP_2D_NC;
00158 TH2D* hTrackLikePlanes_2D_NC;
00159 TH1D* hTrackPlanes_2D_NC_1;
00160 TH1D* hTrackPlanes_2D_NC_2;
00161 TH1D* hTrackCharge_1D_NC;
00162 TH1D* hTrackEnergy_1D_NC;
00163 TH1D* hEventEnergy_1D_NC;
00164
00165 TH1D* hNormalization;
00166
00167 Int_t PidRun;
00168 Int_t PidSnarl;
00169 Int_t PidEvent;
00170
00171 Bool_t PIDPASSFAIL;
00172 Double_t PROBCC;
00173 Double_t PROBNC;
00174 Double_t PID;
00175
00176 Double_t PID_COSTHETA_PROBCC;
00177 Double_t PID_X_PROBCC;
00178 Double_t PID_Y_PROBCC;
00179 Double_t PID_Q2_PROBCC;
00180 Double_t PID_W2_PROBCC;
00181 Double_t PID_TRACKPHFRAC_PROBCC;
00182 Double_t PID_TRACKPHMEAN_PROBCC;
00183 Double_t PID_TRACKQPSIGMAQP_PROBCC;
00184 Double_t PID_TRACKLIKEPLANES_PROBCC;
00185 Double_t PID_TRACKCHARGE_PROBCC;
00186 Double_t PID_TRACKENERGY_PROBCC;
00187 Double_t PID_EVENTENERGY_PROBCC;
00188 Double_t PID_NORMALIZATION_PROBCC;
00189
00190 Double_t PID_COSTHETA_PROBNC;
00191 Double_t PID_X_PROBNC;
00192 Double_t PID_Y_PROBNC;
00193 Double_t PID_Q2_PROBNC;
00194 Double_t PID_W2_PROBNC;
00195 Double_t PID_TRACKPHFRAC_PROBNC;
00196 Double_t PID_TRACKPHMEAN_PROBNC;
00197 Double_t PID_TRACKQPSIGMAQP_PROBNC;
00198 Double_t PID_TRACKLIKEPLANES_PROBNC;
00199 Double_t PID_TRACKCHARGE_PROBNC;
00200 Double_t PID_TRACKENERGY_PROBNC;
00201 Double_t PID_EVENTENERGY_PROBNC;
00202 Double_t PID_NORMALIZATION_PROBNC;
00203
00204 Int_t RecoRun;
00205 Int_t RecoSnarl;
00206 Int_t RecoEvent;
00207
00208 Int_t Ndigits;
00209 Int_t Nstrips;
00210 Int_t Ntracks;
00211 Int_t Nshowers;
00212 Int_t RECOminplane;
00213 Int_t RECOmaxplane;
00214 Double_t RECOtotph;
00215
00216 Double_t RECOenu;
00217 Double_t RECOemu;
00218 Double_t RECOehad;
00219 Double_t RECOx;
00220 Double_t RECOy;
00221 Double_t RECOq2;
00222 Double_t RECOw2;
00223 Double_t RECOdircosU;
00224 Double_t RECOdircosV;
00225 Double_t RECOdircosX;
00226 Double_t RECOdircosY;
00227 Double_t RECOdircosZ;
00228 Double_t RECOdircosneu;
00229 Double_t RECOQEenu;
00230 Double_t RECOQEemu;
00231 Double_t RECOQEehad;
00232 Double_t RECOQEx;
00233 Double_t RECOQEy;
00234 Double_t RECOQEq2;
00235 Double_t RECOQEw2;
00236 Int_t RECOvtxplane;
00237 Double_t RECOvtxU;
00238 Double_t RECOvtxV;
00239 Double_t RECOvtxX;
00240 Double_t RECOvtxY;
00241 Double_t RECOvtxR;
00242 Double_t RECOvtxZ;
00243 Double_t RECOvtxDistToEdge;
00244 Double_t RECOvtxDistToEndBack;
00245 Double_t RECOvtxDistToEndForward;
00246 Int_t RECOcontained;
00247 Int_t RECOvtxcontained;
00248 Int_t RECOendcontained;
00249
00250 Int_t TRKvtxplane;
00251 Double_t TRKvtxU;
00252 Double_t TRKvtxV;
00253 Double_t TRKvtxX;
00254 Double_t TRKvtxY;
00255 Double_t TRKvtxR;
00256 Double_t TRKvtxZ;
00257 Double_t TRKvtxdircosU;
00258 Double_t TRKvtxdircosV;
00259 Double_t TRKvtxdircosX;
00260 Double_t TRKvtxdircosY;
00261 Double_t TRKvtxdircosZ;
00262 Double_t TRKvtxDistToEdge;
00263 Double_t TRKvtxDistToEndBack;
00264 Double_t TRKvtxDistToEndForward;
00265 Double_t TRKvtxtrace;
00266 Double_t TRKvtxtraceZ;
00267
00268 Int_t TRKendplane;
00269 Double_t TRKendU;
00270 Double_t TRKendV;
00271 Double_t TRKendX;
00272 Double_t TRKendY;
00273 Double_t TRKendR;
00274 Double_t TRKendZ;
00275 Double_t TRKenddircosU;
00276 Double_t TRKenddircosV;
00277 Double_t TRKenddircosX;
00278 Double_t TRKenddircosY;
00279 Double_t TRKenddircosZ;
00280 Double_t TRKendDistToEdge;
00281 Double_t TRKendDistToEndBack;
00282 Double_t TRKendDistToEndForward;
00283 Double_t TRKendtrace;
00284 Double_t TRKendtraceZ;
00285
00286 Int_t TRKstrips;
00287 Int_t TRKplanes;
00288 Double_t TRKtotph;
00289 Double_t TRKtrkph;
00290 Double_t TRKshwph;
00291 Int_t TRKspanplanes;
00292 Int_t TRKtrackplanes;
00293 Int_t TRKshowerplanes;
00294 Int_t TRKtracklikeplanes;
00295 Int_t TRKshowerlikeplanes;
00296 Int_t TRKcontained;
00297
00298 Double_t TRKmomentumRange;
00299 Double_t TRKmomentumCurve;
00300 Double_t TRKforwardRMS;
00301 Int_t TRKforwardNDOF;
00302 Double_t TRKbackwardRMS;
00303 Int_t TRKbackwardNDOF;
00304 Double_t TRKFITchi2;
00305 Int_t TRKFITndof;
00306 Int_t TRKFITpass;
00307 Double_t TRKFITqpsigmaqp;
00308 Int_t TRKFITemcharge;
00309
00310 Double_t SHWenergy;
00311 Int_t SHWcontained;
00312
00313 TObjArray* fStripList;
00314 TObjArray* fTrackStripList;
00315 TObjArray* fTrkShowerStripList;
00316 TObjArray* fShwShowerStripList;
00317
00318 ClassDef(MadAbID,0);
00319
00320 };
00321
00322 #endif