#include <ANtpInfoObjectFillerNue.h>
Public Member Functions | |
| ANtpInfoObjectFillerNue () | |
| virtual | ~ANtpInfoObjectFillerNue () |
| void | Analyze (int evtn, NtpStRecord *st, ANtpNueInfo *) |
| void | FitLShower (Float_t pulseheight, ANtpNueInfo *) |
| void | TransVar (TH1F *h, PlaneView::EPlaneView pv) |
| void | Reset (int snarl, int event, ANtpNueInfo *) |
| void | FitTShower (Float_t pulseheight) |
Private Member Functions | |
| Double_t | GetMaximumX (TF1 *efit, Double_t xmin=0, Double_t xmax=0) |
| float | BuildUVVar (float u, float v) |
| void | FillEventEnergy (float *ph0, float *ph1, int evtn, NtpStRecord *st, const int SIZE) |
Private Attributes | |
| TH1F * | lenepl |
| TH1F * | tenestu |
| don't write this to the tree | |
| TH1F * | tenestv |
| don't write this to the tree | |
| TH1F * | tenestu_9s_2pe_dw |
| don't write this to the tree | |
| TH1F * | tenestv_9s_2pe_dw |
| don't write this to the tree | |
| TF1 * | efit |
| don't write this to the tree | |
| float | asym_peak |
| don't write this to the tree | |
| float | asym_vert |
| float | molrad_peak |
| float | molrad_vert |
| float | mean |
| float | rms |
| float | skew |
| float | kurt |
|
|
Definition at line 42 of file ANtpInfoObjectFillerNue.cxx. 00042 : 00043 lenepl(0), 00044 tenestu(0), 00045 tenestv(0), 00046 tenestu_9s_2pe_dw(0), 00047 tenestv_9s_2pe_dw(0), 00048 efit(0) 00049 { 00050 }
|
|
|
Definition at line 52 of file ANtpInfoObjectFillerNue.cxx. References efit, lenepl, tenestu, tenestu_9s_2pe_dw, tenestv, and tenestv_9s_2pe_dw. 00053 {
00054 if(lenepl!=0){ delete lenepl; lenepl=0; }
00055 if(tenestu!=0){ delete tenestu; tenestu=0; }
00056 if(tenestv!=0){ delete tenestv; tenestv=0; }
00057 if(efit!=0){ delete efit; efit=0; }
00058
00059 if(tenestv_9s_2pe_dw!=0){ delete tenestv_9s_2pe_dw; tenestv_9s_2pe_dw=0;}
00060 if(tenestu_9s_2pe_dw!=0){ delete tenestu_9s_2pe_dw; tenestu_9s_2pe_dw=0;}
00061 }
|
|
||||||||||||||||
|
Definition at line 65 of file ANtpInfoObjectFillerNue.cxx. References NtpSRPlane::beg, BuildUVVar(), NtpSRPlane::end, FillEventEnergy(), NtpVtxFinder::FindVertex(), FitLShower(), ANtpNueInfo::fract_10_counters, ANtpNueInfo::fract_12_counters, ANtpNueInfo::fract_1_plane, ANtpNueInfo::fract_2_counters, ANtpNueInfo::fract_2_planes, ANtpNueInfo::fract_3_planes, ANtpNueInfo::fract_4_counters, ANtpNueInfo::fract_4_planes, ANtpNueInfo::fract_5_planes, ANtpNueInfo::fract_6_counters, ANtpNueInfo::fract_6_planes, ANtpNueInfo::fract_8_counters, SntpHelpers::GetEvent(), RecRecordImp< T >::GetHeader(), RecPhysicsHeader::GetSnarl(), SntpHelpers::GetStrip(), SntpHelpers::GetStripIndex(), lenepl, NtpSRStripPulseHeight::mip, MSG, NtpSRPlane::n, NtpSREvent::nstrip, ANtpNueInfo::par_a, ANtpNueInfo::par_b, ANtpNueInfo::par_e0, NtpSRPulseHeight::pe, NtpSREvent::ph, NtpSRStrip::ph0, NtpSRStrip::ph1, NtpSREvent::plane, NtpSRStrip::plane, NtpSRVertex::plane, NtpSRStrip::planeview, Reset(), NtpSRPulseHeight::sigcor, NtpSREvent::stp, NtpSRStrip::strip, tenestu, tenestu_9s_2pe_dw, tenestv, tenestv_9s_2pe_dw, NtpSRStrip::tpos, TransVar(), NtpSRVertex::u, ANtpNueInfo::u_asym_peak, ANtpNueInfo::u_asym_peak_9s_2pe_dw, ANtpNueInfo::u_asym_vert, ANtpNueInfo::u_asym_vert_9s_2pe_dw, ANtpNueInfo::u_kurt, ANtpNueInfo::u_kurt_9s_2pe_dw, ANtpNueInfo::u_mean, ANtpNueInfo::u_mean_9s_2pe_dw, ANtpNueInfo::u_molrad_peak, ANtpNueInfo::u_molrad_peak_9s_2pe_dw, ANtpNueInfo::u_molrad_vert, ANtpNueInfo::u_molrad_vert_9s_2pe_dw, ANtpNueInfo::u_rms, ANtpNueInfo::u_rms_9s_2pe_dw, ANtpNueInfo::u_skew, ANtpNueInfo::u_skew_9s_2pe_dw, ANtpNueInfo::uv_asym_peak, ANtpNueInfo::uv_asym_peak_9s_2pe_dw, ANtpNueInfo::uv_asym_vert, ANtpNueInfo::uv_asym_vert_9s_2pe_dw, ANtpNueInfo::uv_kurt, ANtpNueInfo::uv_kurt_9s_2pe_dw, ANtpNueInfo::uv_mean, ANtpNueInfo::uv_mean_9s_2pe_dw, ANtpNueInfo::uv_molrad_peak, ANtpNueInfo::uv_molrad_peak_9s_2pe_dw, ANtpNueInfo::uv_molrad_vert, ANtpNueInfo::uv_molrad_vert_9s_2pe_dw, ANtpNueInfo::uv_ratio, ANtpNueInfo::uv_ratio_9s_2pe_dw, ANtpNueInfo::uv_rms, ANtpNueInfo::uv_rms_9s_2pe_dw, ANtpNueInfo::uv_skew, ANtpNueInfo::uv_skew_9s_2pe_dw, NtpSRVertex::v, ANtpNueInfo::v_asym_peak, ANtpNueInfo::v_asym_peak_9s_2pe_dw, ANtpNueInfo::v_asym_vert, ANtpNueInfo::v_asym_vert_9s_2pe_dw, ANtpNueInfo::v_kurt, ANtpNueInfo::v_kurt_9s_2pe_dw, ANtpNueInfo::v_mean, ANtpNueInfo::v_mean_9s_2pe_dw, ANtpNueInfo::v_molrad_peak, ANtpNueInfo::v_molrad_peak_9s_2pe_dw, ANtpNueInfo::v_molrad_vert, ANtpNueInfo::v_molrad_vert_9s_2pe_dw, ANtpNueInfo::v_rms, ANtpNueInfo::v_rms_9s_2pe_dw, ANtpNueInfo::v_skew, ANtpNueInfo::v_skew_9s_2pe_dw, NtpSREvent::vtx, NtpVtxFinder::VtxPlane(), NtpVtxFinder::VtxU(), NtpVtxFinder::VtxV(), and NtpSRStrip::z. Referenced by CondensedNtpModuleNC::Ana(). 00066 {
00067 if(st==0){ return; }
00068 Reset(st->GetHeader().GetSnarl(), evtn, NueVars);
00069
00070 MSG("ANtpInfoObjectFillerNue",Msg::kDebug)<<"In ANtpInfoObjectFillerNue::Analyze"<<endl;
00071 MSG("ANtpInfoObjectFillerNue",Msg::kDebug)<<"On Snarl "<<st->GetHeader().GetSnarl()
00072 <<" event "<<evtn<<endl;
00073
00074 NtpSREvent *event = SntpHelpers::GetEvent(evtn,st);
00075
00076 if(!event){
00077 MSG("ANtpInfoObjectFillerNue",Msg::kError)<<"Couldn't get event "<<evtn
00078 <<" from Snarl "<<st->GetHeader().GetSnarl()<<endl;
00079 return;
00080 }
00081
00082 Int_t vtxPlane = event->vtx.plane;
00083 Float_t vtxU = event->vtx.u;
00084 Float_t vtxV = event->vtx.v;
00085
00086 NtpVtxFinder vtxf(evtn, st);
00087 if(vtxf.FindVertex() > 0){
00088 vtxPlane = vtxf.VtxPlane();
00089 vtxU = vtxf.VtxU();
00090 vtxV = vtxf.VtxV();
00091 }
00092
00093 float* evtstp0mip = new float[5500];
00094 float* evtstp1mip = new float[5500];
00095
00096 for(int i = 0; i < 5500; i++){
00097 evtstp0mip[i] = evtstp1mip[i] = -1;
00098 }
00099
00100 FillEventEnergy(evtstp0mip, evtstp1mip, evtn, st, 5500);
00101
00102 for(int i=0;i<event->nstrip;i++){
00103 Int_t index = SntpHelpers::GetStripIndex(i,event);
00104 NtpSRStrip *strip = SntpHelpers::GetStrip(index,st);
00105 if(!strip) continue;
00106
00107 if(!evtstp0mip){
00108 MSG("ANtpInfoObjectFillerNue",Msg::kError)<<"No mip strip information"<<endl;
00109 continue;
00110 }
00111
00112 Float_t stripPh = evtstp0mip[index] + evtstp1mip[index];
00113 double strippe = strip->ph0.pe+strip->ph1.pe;
00114
00115 Float_t deltaplanes = strip->plane-event->vtx.plane;
00116 if(deltaplanes>=0.)
00117 lenepl->Fill(deltaplanes-0.5,stripPh);
00118
00119 const Float_t STRIPWIDTH=0.041;//Munits::meters
00120
00121 //u view
00122 if(strip->planeview==PlaneView::kU){
00123 double dist = (strip->tpos-event->vtx.u)/STRIPWIDTH;
00124
00125 tenestu->Fill(dist,stripPh);
00126 if(dist < 9.0 && strippe > 2.0){
00127 tenestu_9s_2pe_dw->Fill(dist,stripPh*stripPh);
00128 }
00129 }
00130
00131 //v view
00132 else if(strip->planeview==PlaneView::kV){
00133 double dist = (strip->tpos-event->vtx.v)/STRIPWIDTH;
00134
00135 tenestv->Fill(dist,stripPh);
00136 if(dist < 9.0 && strippe > 2.0){
00137 tenestv_9s_2pe_dw->Fill(dist,stripPh*stripPh);
00138 }
00139 }
00140 //unknown view
00141 else{
00142 MSG("ANtpInfoObjectFillerNue",Msg::kError)<<"Don't know what to do with a PlaneView "
00143 <<strip->planeview<<" skipping"<<endl;
00144 continue;
00145 }
00146 }
00147
00148
00149 if(event->plane.n > 4){
00150 FitLShower(event->ph.mip, NueVars);
00151 }
00152 MSG("ANtpInfoObjectFillerNue",Msg::kDebug)<<"Fit shower "<<NueVars->par_a<<" "
00153 <<NueVars->par_b<<" "<<NueVars->par_e0<<endl;
00154
00155 //fill transverse variables (the following variables filled inside
00156 // function and then stored
00157
00158 TransVar(tenestu, PlaneView::kU);
00159 NueVars->u_asym_peak=asym_peak;
00160 NueVars->u_asym_vert=asym_vert;
00161 NueVars->u_molrad_peak=molrad_peak;
00162 NueVars->u_molrad_vert=molrad_vert;
00163 NueVars->u_mean=mean;
00164 NueVars->u_rms=rms;
00165 NueVars->u_skew=skew;
00166 NueVars->u_kurt=kurt;
00167
00168 TransVar(tenestv, PlaneView::kV);
00169 NueVars->v_asym_peak=asym_peak;
00170 NueVars->v_asym_vert=asym_vert;
00171 NueVars->v_molrad_peak=molrad_peak;
00172 NueVars->v_molrad_vert=molrad_vert;
00173 NueVars->v_mean=mean;
00174 NueVars->v_rms=rms;
00175 NueVars->v_skew=skew;
00176 NueVars->v_kurt=kurt;
00177
00178 //fill uv variables
00179
00180 NueVars->uv_asym_peak = BuildUVVar(NueVars->u_asym_peak, NueVars->v_asym_peak);
00181 NueVars->uv_asym_vert = BuildUVVar(NueVars->u_asym_vert, NueVars->v_asym_vert);
00182 NueVars->uv_molrad_peak = BuildUVVar(NueVars->u_molrad_peak, NueVars->v_molrad_peak);
00183 NueVars->uv_molrad_vert = BuildUVVar(NueVars->u_molrad_vert, NueVars->v_molrad_vert);
00184 NueVars->uv_mean = BuildUVVar(NueVars->u_mean, NueVars->v_mean);
00185 NueVars->uv_rms = BuildUVVar(NueVars->u_rms, NueVars->v_rms);
00186 NueVars->uv_skew = BuildUVVar(NueVars->u_skew, NueVars->v_skew);
00187 NueVars->uv_kurt = BuildUVVar(NueVars->u_kurt, NueVars->v_kurt);
00188
00189 if(tenestu->Integral()>0&&tenestv->Integral()>0){
00190 NueVars->uv_ratio=tenestu->Integral()/tenestv->Integral();
00191 if(NueVars->uv_ratio>100.){
00192 NueVars->uv_ratio= ANtpDefVal::kFloat;
00193 }
00194 }
00195
00196 TransVar(tenestu_9s_2pe_dw, PlaneView::kU);
00197 NueVars->u_asym_peak_9s_2pe_dw=asym_peak;
00198 NueVars->u_asym_vert_9s_2pe_dw=asym_vert;
00199 NueVars->u_molrad_peak_9s_2pe_dw=molrad_peak;
00200 NueVars->u_molrad_vert_9s_2pe_dw=molrad_vert;
00201 NueVars->u_mean_9s_2pe_dw=mean;
00202 NueVars->u_rms_9s_2pe_dw=rms;
00203 NueVars->u_skew_9s_2pe_dw=skew;
00204 NueVars->u_kurt_9s_2pe_dw=kurt;
00205
00206
00207 TransVar(tenestv_9s_2pe_dw, PlaneView::kV);
00208 NueVars->v_asym_peak_9s_2pe_dw=asym_peak;
00209 NueVars->v_asym_vert_9s_2pe_dw=asym_vert;
00210 NueVars->v_molrad_peak_9s_2pe_dw=molrad_peak;
00211 NueVars->v_molrad_vert_9s_2pe_dw=molrad_vert;
00212 NueVars->v_mean_9s_2pe_dw=mean;
00213 NueVars->v_rms_9s_2pe_dw=rms;
00214 NueVars->v_skew_9s_2pe_dw=skew;
00215 NueVars->v_kurt_9s_2pe_dw=kurt;
00216
00217
00218 NueVars->uv_asym_peak_9s_2pe_dw = BuildUVVar(NueVars->u_asym_peak_9s_2pe_dw, NueVars->v_asym_peak_9s_2pe_dw);
00219 NueVars->uv_asym_vert_9s_2pe_dw = BuildUVVar(NueVars->u_asym_vert_9s_2pe_dw, NueVars->v_asym_vert_9s_2pe_dw);
00220 NueVars->uv_molrad_peak_9s_2pe_dw = BuildUVVar(NueVars->u_molrad_peak_9s_2pe_dw, NueVars->v_molrad_peak_9s_2pe_dw);
00221 NueVars->uv_molrad_vert_9s_2pe_dw = BuildUVVar(NueVars->u_molrad_vert_9s_2pe_dw, NueVars->v_molrad_vert_9s_2pe_dw);
00222 NueVars->uv_mean_9s_2pe_dw = BuildUVVar(NueVars->u_mean_9s_2pe_dw, NueVars->v_mean_9s_2pe_dw);
00223 NueVars->uv_rms_9s_2pe_dw = BuildUVVar(NueVars->u_rms_9s_2pe_dw, NueVars->v_rms_9s_2pe_dw);
00224 NueVars->uv_skew_9s_2pe_dw = BuildUVVar(NueVars->u_skew_9s_2pe_dw, NueVars->v_skew_9s_2pe_dw);
00225 NueVars->uv_kurt_9s_2pe_dw = BuildUVVar(NueVars->u_kurt_9s_2pe_dw, NueVars->v_kurt_9s_2pe_dw);
00226
00227
00228 if(tenestu_9s_2pe_dw->Integral()>0&&tenestv_9s_2pe_dw->Integral()>0){
00229 NueVars->uv_ratio_9s_2pe_dw=tenestu_9s_2pe_dw->Integral()/tenestv_9s_2pe_dw->Integral();
00230 if(NueVars->uv_ratio_9s_2pe_dw>100.){
00231 NueVars->uv_ratio_9s_2pe_dw= ANtpDefVal::kFloat;
00232 }
00233 }
00234
00235
00236 if (event->plane.beg>event->plane.end) return;
00237
00238 Float_t plane[14];
00239 for (int i = 0; i<14; i++){
00240 plane[i] = 0;
00241 }
00242
00243 vector<Float_t> stpph;
00244 vector<Float_t> stpph2; //for sorting purpose
00245 vector<Float_t>::iterator p;
00246 vector<Int_t> stppl;
00247 vector<Int_t> stpstp;
00248 vector<Float_t> stpt;
00249 vector<Float_t> stpz;
00250 vector<Int_t> planev;
00251 Float_t total_ph = 0;
00252 Int_t vtxpl = event->vtx.plane;
00253
00254
00255 for (Int_t istp = 0; istp<event->nstrip; istp++){
00256 Int_t index = event->stp[istp];
00257 NtpSRStrip *strip = SntpHelpers::GetStrip(index,st);
00258 if(!strip) continue;
00259 float charge = strip->ph0.sigcor+strip->ph1.sigcor;
00260 // event->stpph1mip[istp] + event->stpph0mip[istp];
00261 //if(strip->ph0.pe+strip->ph1.pe < 2) continue;
00262
00263 stpph.push_back(charge);
00264 stpph2.push_back(charge);
00265 stppl.push_back(strip->plane);
00266 stpstp.push_back(strip->strip);
00267 stpt.push_back(strip->tpos);
00268 stpz.push_back(strip->z);
00269 planev.push_back(int(strip->planeview));
00270 total_ph += charge;
00271 }
00272
00273 for(unsigned int istp=0; istp<stpph.size(); istp++){//Loop over all strips
00274 if (stppl[istp]>=vtxpl-2&&stppl[istp]<vtxpl+12)
00275 plane[stppl[istp]-vtxpl+2] += stpph[istp];//fill plane energy information
00276 }
00277
00278 sort(stpph2.begin(), stpph2.end());
00279
00280 Float_t sum_1_plane = 0, sum_2_planes = 0,sum_3_planes = 0;
00281 Float_t sum_4_planes = 0, sum_5_planes = 0,sum_6_planes = 0;
00282 Float_t sum_2_counts = 0, sum_4_counts = 0, sum_6_counts = 0;
00283 Float_t sum_8_counts = 0, sum_10_counts = 0, sum_12_counts = 0;
00284
00285
00286 if (total_ph>0.){
00287 for (Int_t i = 0; i<14; i++){
00288 if (i<14){
00289 sum_1_plane = plane[i];
00290 if (sum_1_plane/total_ph > NueVars->fract_1_plane) {
00291 NueVars->fract_1_plane = sum_1_plane/total_ph;
00292 }
00293 }
00294 if (i<13){
00295 sum_2_planes = plane[i]+plane[i+1];
00296 if (sum_2_planes/total_ph > NueVars->fract_2_planes)
00297 NueVars->fract_2_planes = sum_2_planes/total_ph;
00298 }
00299 if (i<12){
00300 sum_3_planes = plane[i]+plane[i+1]+plane[i+2];
00301 if (sum_3_planes/total_ph > NueVars->fract_3_planes)
00302 NueVars->fract_3_planes = sum_3_planes/total_ph;
00303 }
00304 if (i<11){
00305 sum_4_planes = plane[i]+plane[i+1]+plane[i+2]+plane[i+3];
00306 if (sum_4_planes/total_ph > NueVars->fract_4_planes)
00307 NueVars->fract_4_planes = sum_4_planes/total_ph;
00308 }
00309 if (i<10) {
00310 sum_5_planes = plane[i]+plane[i+1]+plane[i+2]+plane[i+3]+plane[i+4];
00311 if (sum_5_planes/total_ph > NueVars->fract_5_planes)
00312 NueVars->fract_5_planes = sum_5_planes/total_ph;
00313 }
00314 if (i<9) {
00315 sum_6_planes = plane[i]+plane[i+1]+plane[i+2]+plane[i+3]+plane[i+4]+plane[i+5];
00316 if (sum_6_planes/total_ph > NueVars->fract_6_planes)
00317 NueVars->fract_6_planes = sum_6_planes/total_ph;
00318 }
00319 }
00320 }//if(total_ph>0)
00321
00322 p = stpph2.end();
00323 while (p!=stpph2.begin()&&p>stpph2.end()-12){
00324 p--;
00325 if (p>=stpph2.end()-2) sum_2_counts += *p;
00326 if (p>=stpph2.end()-4) sum_4_counts += *p;
00327 if (p>=stpph2.end()-6) sum_6_counts += *p;
00328 if (p>=stpph2.end()-8) sum_8_counts += *p;
00329 if (p>=stpph2.end()-10) sum_10_counts += *p;
00330 if (p>=stpph2.end()-12) sum_12_counts += *p;
00331 }
00332
00333 if (total_ph>0) {
00334 NueVars->fract_2_counters = sum_2_counts/total_ph;
00335 NueVars->fract_4_counters = sum_4_counts/total_ph;
00336 NueVars->fract_6_counters = sum_6_counts/total_ph;
00337 NueVars->fract_8_counters = sum_8_counts/total_ph;
00338 NueVars->fract_10_counters = sum_10_counts/total_ph;
00339 NueVars->fract_12_counters = sum_12_counts/total_ph;
00340 }
00341
00342 delete [] evtstp0mip;
00343 delete [] evtstp1mip;
00344
00345
00346 }
|
|
||||||||||||
|
Definition at line 394 of file ANtpInfoObjectFillerNue.cxx. References ANtpDefaultValue::IsDefault(). Referenced by Analyze(). 00395 {
00396 float uv = ANtpDefVal::kFloat;
00397 if(!ANtpDefVal::IsDefault(u)&& !ANtpDefVal::IsDefault(v)&&
00398 u<1.e15 && v<1.e15){
00399 uv=sqrt(u*u+v*v)/sqrt(2.0);
00400 }
00401
00402 return uv;
00403 }
|
|
||||||||||||||||||||||||
|
Definition at line 558 of file ANtpInfoObjectFillerNue.cxx. References SntpHelpers::GetEvent(), SntpHelpers::GetShower(), SntpHelpers::GetShowerIndex(), SntpHelpers::GetStripIndex(), SntpHelpers::GetTrack(), SntpHelpers::GetTrackIndex(), MSG, NtpSREvent::nshower, NtpSRShower::nstrip, NtpSRTrack::nstrip, NtpSREvent::ntrack, NtpSRShower::stpph0mip, NtpSRTrack::stpph0mip, NtpSRShower::stpph1mip, and NtpSRTrack::stpph1mip. Referenced by Analyze(). 00559 {
00560 NtpSREvent *event = 0;
00561 event = SntpHelpers::GetEvent(evtn,st);
00562 if(event == 0){
00563 cout<<"No event"<<endl;
00564 return;
00565 }
00566
00567 for(int j=0;j<event->ntrack;j++){
00568 int tindex = SntpHelpers::GetTrackIndex(j,event);
00569 NtpSRTrack *track = SntpHelpers::GetTrack(tindex,st);
00570 for(int k = 0; k < track->nstrip; k++){
00571 int index = SntpHelpers::GetStripIndex(k, track);
00572 if(index > SIZE){
00573 MSG("SntpHelper",Msg::kFatal)<<" evt mip array insufficiently large: "
00574 <<"index "<<index<<"/"<<SIZE<<" requested"<<std::endl;
00575 }
00576
00577 float mips1 = track->stpph1mip[k];
00578 float mips0 = track->stpph0mip[k];
00579
00580 if(ph0[index] < 0) ph0[index] = mips0;
00581 if(ph1[index] < 0) ph1[index] = mips1;
00582 }
00583 }
00584 for(int j=0;j<event->nshower;j++){
00585 int sindex = SntpHelpers::GetShowerIndex(j,event);
00586 NtpSRShower *shw = SntpHelpers::GetShower(sindex,st);
00587 for(int k = 0; k < shw->nstrip; k++){
00588 int index = SntpHelpers::GetStripIndex(k, shw);
00589 if(index > SIZE){
00590 MSG("SntpHelper",Msg::kFatal)<<" evt mip array insufficiently large: "
00591 <<"index "<<index<<"/"<<SIZE<<" requested"<<std::endl;
00592 }
00593
00594 float mips1 = shw->stpph1mip[k];
00595 float mips0 = shw->stpph0mip[k];
00596
00597 if(ph0[index] < 0) ph0[index] = mips0;
00598 if(ph1[index] < 0) ph1[index] = mips1;
00599 }
00600 }
00601 return;
00602 }
|
|
||||||||||||
|
Definition at line 349 of file ANtpInfoObjectFillerNue.cxx. References ANtpNueInfo::caldet_comp, ANtpNueInfo::chisq, ANtpNueInfo::chisq_ndf, ANtpNueInfo::conv, ANtpNueInfo::e0_pe_ratio, efit, GetMaximumX(), lenepl, ANtpNueInfo::max_pe_plane, MSG, ANtpNueInfo::par_a, ANtpNueInfo::par_b, ANtpNueInfo::par_e0, ANtpNueInfo::shwmax, ANtpNueInfo::shwmaxplane, and ANtpNueInfo::shwmaxplane_diff. Referenced by Analyze(). 00350 {
00351 efit->SetParameters(3.,0.5,pulseheight);
00352 lenepl->Fit(efit,"RLQ0+");
00353 // NueVars->lenepl->Print("all");
00354 // NueVars->efit->Print("all");
00355
00356 MSG("ANtpInfoObjectFillerNue",Msg::kDebug)<<" STATUS: "<<gMinuit->fCstatu
00357 <<" "<<efit->GetParameter(0)
00358 <<" "<<efit->GetNDF()<<" "<<pulseheight<<endl;
00359
00360 string fitstatus = (string)(gMinuit->fCstatu);
00361 MSG("ANtpInfoObjectFillerNue",Msg::kDebug)<<" STATUS: "<<fitstatus
00362 <<", "<<efit->GetParameter(0)
00363 <<", "<<efit->GetNDF()<<" "<<pulseheight<<endl;
00364
00365 if(fitstatus=="CONVERGED "&&efit->GetParameter(0)<29.9&&
00366 efit->GetNDF()>0&&pulseheight>0){
00367 MSG("ANtpInfoObjectFillerNue",Msg::kDebug)<<" filling vars"<<endl;
00368
00369 NueVars->par_a= efit->GetParameter(0);
00370 NueVars->par_b= efit->GetParameter(1);
00371 NueVars->par_e0 = efit->GetParameter(2);
00372 NueVars->chisq= efit->GetChisquare();
00373 NueVars->shwmax=1.*GetMaximumX(efit);
00374 // NueVars->shwmax=1.*NueVars->lenepl->GetFunction(NueVars->efit->GetName())->GetMaximumX();
00375
00376
00377 NueVars->shwmaxplane=(int)(lenepl->
00378 GetBinContent(lenepl->FindBin(NueVars->shwmax)));
00379 NueVars->conv=1;
00380 if(efit->GetNDF()>0){
00381 NueVars->chisq_ndf=NueVars->chisq/efit->GetNDF();
00382 }
00383 if(pulseheight!=0){
00384 NueVars->e0_pe_ratio=NueVars->par_e0/pulseheight;
00385 }
00386 NueVars->caldet_comp=ANtpDefVal::kFloat;
00387 NueVars->max_pe_plane=lenepl->GetMaximumBin();
00388 NueVars->shwmaxplane_diff=NueVars->shwmaxplane-NueVars->max_pe_plane;
00389 }
00390
00391 return;
00392 }
|
|
|
|
|
||||||||||||||||
|
Definition at line 536 of file ANtpInfoObjectFillerNue.cxx. Referenced by FitLShower(). 00537 {
00538 Double_t fXmin = 0.001;
00539 Double_t fXmax = 30;
00540 Double_t fNpx = 30;
00541
00542 Double_t x,y;
00543 if (xmin >= xmax) {xmin = fXmin; xmax = fXmax;}
00544 Double_t dx = (xmax-xmin)/fNpx;
00545 Double_t xxmax = xmin;
00546 Double_t yymax = efit->Eval(xmin+dx);
00547 for (Int_t i=0;i<fNpx;i++) {
00548 x = xmin + (i+0.5)*dx;
00549 y = efit->Eval(x);
00550 if (y > yymax) {xxmax = x; yymax = y;}
00551 }
00552 if (dx < 1.e-9*(fXmax-fXmin)) return TMath::Min(xmax,xxmax);
00553 else return GetMaximumX(efit, TMath::Max(xmin,xxmax-dx), TMath::Min(xmax,xxmax+dx));
00554 }
|
|
||||||||||||||||
|
Definition at line 476 of file ANtpInfoObjectFillerNue.cxx. References efit, lenepl, ANtpNueInfo::Reset(), shwfunc(), tenestu, tenestu_9s_2pe_dw, tenestv, and tenestv_9s_2pe_dw. Referenced by Analyze(). 00477 {
00478
00479 //putting histogram creators here so we can name them according to
00480 //event and snarl number, and we won't get errors about replacing
00481 //existing histograms when we have multiple events in a snarl
00482 if(lenepl!=0){ delete lenepl; lenepl=0; }
00483 if(tenestu!=0){ delete tenestu; tenestu=0; }
00484 if(tenestv!=0){ delete tenestv; tenestv=0; }
00485 if(efit!=0){ delete efit; efit=0; }
00486
00487 if(tenestv_9s_2pe_dw!=0){ delete tenestv_9s_2pe_dw; tenestv_9s_2pe_dw=0;}
00488 if(tenestu_9s_2pe_dw!=0){ delete tenestu_9s_2pe_dw; tenestu_9s_2pe_dw=0;}
00489
00490
00491 const Int_t LHISTBINS=30;
00492 const Int_t THISTBINS=41;
00493 NueVars->Reset();
00494
00495 char ln[100];
00496 char tun[100];
00497 char tvn[100];
00498 sprintf(ln,"lenepl_%d_%d",snarl,event);
00499 sprintf(tun,"tenestu_%d_%d",snarl,event);
00500 sprintf(tvn,"tenestv_%d_%d",snarl,event);
00501 lenepl = new TH1F(ln,"longitudinal energy by plane",
00502 LHISTBINS,0.0,LHISTBINS);
00503
00504 tenestu = new TH1F(tun,"trasverse energy by strip (U view)",
00505 THISTBINS,-THISTBINS/2.,THISTBINS/2.);
00506 tenestv = new TH1F(tvn,"trasverse energy by strip (V view)",
00507 THISTBINS,-THISTBINS/2.,THISTBINS/2.);
00508
00509 char tun_9s_2pe_dw[100];
00510 char tvn_9s_2pe_dw[100];
00511
00512 sprintf(tun_9s_2pe_dw,"tenestu_9s_2pe_dw_%d_%d",snarl,event);
00513 sprintf(tvn_9s_2pe_dw,"tenestv_9s_2pe_dw_%d_%d",snarl,event);
00514
00515 tenestu_9s_2pe_dw = new TH1F(tun_9s_2pe_dw,"trasverse energy by strip (U view)",
00516 THISTBINS,-THISTBINS/2.,THISTBINS/2.);
00517 tenestv_9s_2pe_dw = new TH1F(tvn_9s_2pe_dw,"trasverse energy by strip (V view)",
00518 THISTBINS,-THISTBINS/2.,THISTBINS/2.);
00519
00520
00521
00522 int hmin=0;
00523 int hmax=30;
00524 int npare=3;
00525 char efn[100];
00526 sprintf(efn,"efit_%d_%d",snarl,event);
00527 efit = new TF1(efn,shwfunc,hmin+0.001,hmax,npare);
00528 efit->SetParNames("a","b","e0");
00529 efit->SetParLimits(0,hmin+0.001,hmax);
00530 efit->SetParLimits(1,0.001,20000);
00531 efit->SetParLimits(2,0+0.001,1000000);
00532
00533 }
|
|
||||||||||||
|
Definition at line 406 of file ANtpInfoObjectFillerNue.cxx. References asym_peak, asym_vert, kurt, mean, molrad_peak, molrad_vert, MSG, rms, and skew. Referenced by Analyze(). 00407 {
00408 MSG("ANtpInfoObjectFillerNue",Msg::kDebug)<<"In ANtpInfoObjectFillerNue::TransVar"<<endl;
00409 MSG("ANtpInfoObjectFillerNue",Msg::kDebug)<<"plane view is "<<pv<<endl;
00410 MSG("ANtpInfoObjectFillerNue",Msg::kDebug)<<"Hist name is "<<histo->GetName()<<endl;
00411 MSG("ANtpInfoObjectFillerNue",Msg::kDebug)<<"Hist has "<<histo->GetEntries()<<" entries"<<endl;
00412
00413 Int_t THISTBINS = (Int_t)(histo->GetNbinsX());
00414
00415 Int_t binmax=histo->GetMaximumBin();
00416 Int_t binvert=Int_t(((THISTBINS-1)/2)+1);
00417 Float_t peak_bin=histo->Integral(binmax,binmax);
00418 Float_t vert_bin=histo->Integral(binvert,binvert);
00419 Float_t tot=histo->Integral(1,THISTBINS);
00420
00421 molrad_peak = molrad_vert = 0;
00422 mean = rms = skew = kurt = 0;
00423
00424 asym_peak= ANtpDefVal::kFloat;
00425 asym_vert= ANtpDefVal::kFloat;
00426
00427 if(tot-peak_bin){
00428 asym_peak=(TMath::Abs(histo->Integral(binmax+1,THISTBINS)-histo->Integral(1,binmax-1)))
00429 /(tot-peak_bin);
00430 }
00431
00432 if(tot-vert_bin){
00433 asym_vert=(TMath::Abs(histo->Integral(binvert+1,THISTBINS)-histo->Integral(1,binvert-1)))
00434 /(tot-vert_bin);
00435 }
00436
00437 Float_t ratio;
00438
00439 if(tot){
00440 for(Int_t i=0; i<=binvert-1;i++){
00441 ratio=histo->Integral(binmax-i>0?binmax-i:1,
00442 binmax+i<THISTBINS?binmax+i:THISTBINS)/tot;
00443 if(ratio>0.90){molrad_peak=i+1; break;}
00444 }
00445 for(Int_t i=0; i<=binvert-1;i++){
00446 ratio=histo->Integral(binvert-i,binvert+i)/tot;
00447 if(ratio>0.90){molrad_vert=i+1; break;}
00448 }
00449
00450 }
00451
00452 mean=histo->GetMean();
00453 rms=histo->GetRMS();
00454 Int_t n_count=0;
00455
00456 for(Int_t i=1;i<=THISTBINS;i++){
00457
00458 if(histo->GetBinContent(i)){
00459 skew=skew+(TMath::Power((histo->GetBinCenter(i)-mean),3)
00460 *histo->GetBinContent(i));
00461 kurt=kurt+(TMath::Power((histo->GetBinCenter(i)-mean),4)
00462 *histo->GetBinContent(i));
00463 n_count++;
00464 }
00465
00466 }
00467 if(rms>0 && n_count>1){
00468 skew=skew/((Float_t)(n_count-1)*TMath::Power((rms),3));
00469 kurt=(kurt/((Float_t)(n_count-1)*TMath::Power((rms),4)))-3;
00470 }
00471 else{skew= ANtpDefVal::kFloat; kurt= ANtpDefVal::kFloat;}
00472
00473
00474 }
|
|
|
don't write this to the tree
Definition at line 44 of file ANtpInfoObjectFillerNue.h. Referenced by TransVar(). |
|
|
Definition at line 45 of file ANtpInfoObjectFillerNue.h. Referenced by TransVar(). |
|
|
don't write this to the tree
Definition at line 42 of file ANtpInfoObjectFillerNue.h. Referenced by FitLShower(), Reset(), and ~ANtpInfoObjectFillerNue(). |
|
|
Definition at line 51 of file ANtpInfoObjectFillerNue.h. Referenced by TransVar(). |
|
|
Definition at line 35 of file ANtpInfoObjectFillerNue.h. Referenced by Analyze(), FitLShower(), Reset(), and ~ANtpInfoObjectFillerNue(). |
|
|
Definition at line 48 of file ANtpInfoObjectFillerNue.h. Referenced by TransVar(). |
|
|
Definition at line 46 of file ANtpInfoObjectFillerNue.h. Referenced by TransVar(). |
|
|
Definition at line 47 of file ANtpInfoObjectFillerNue.h. Referenced by TransVar(). |
|
|
Definition at line 49 of file ANtpInfoObjectFillerNue.h. Referenced by TransVar(). |
|
|
Definition at line 50 of file ANtpInfoObjectFillerNue.h. Referenced by TransVar(). |
|
|
don't write this to the tree
Definition at line 36 of file ANtpInfoObjectFillerNue.h. Referenced by Analyze(), Reset(), and ~ANtpInfoObjectFillerNue(). |
|
|
don't write this to the tree
Definition at line 39 of file ANtpInfoObjectFillerNue.h. Referenced by Analyze(), Reset(), and ~ANtpInfoObjectFillerNue(). |
|
|
don't write this to the tree
Definition at line 37 of file ANtpInfoObjectFillerNue.h. Referenced by Analyze(), Reset(), and ~ANtpInfoObjectFillerNue(). |
|
|
don't write this to the tree
Definition at line 40 of file ANtpInfoObjectFillerNue.h. Referenced by Analyze(), Reset(), and ~ANtpInfoObjectFillerNue(). |
1.3.9.1