Z-vertex dependent residuals in phi (2nd request of Akiba-san) Taebong Moon Yonsei Univ./RIKEN Nov 12th 2014
Information Alignment after X- and Y-vertex correction analyzed. This is intermediate result. Original class SvxPrimVertexFinder SvxCentralTrackReco New class SvxCorrectPrimVertex Run number: 407951 (Run14 AuAu 200GeV 2nd period) # of PRDFs: 154 # of events per PRDF: All Source: SvxAlignment.cc/h & SvxCorrectPrimVertex.C/h & SvxQAForProduction.cc/h /direct/phenix+user06/phnxreco/Takashi_VTX_LbyL/tmoon/dsts/5.Akiba/2.p2Out/backup Macro: Fun4All_VTX_p2.C: production macro read_evttree.C/h & read_residual_phi.C/h: to draw the residuals in phi /direct/phenix+user06/phnxreco/Takashi_VTX_LbyL/tmoon/dsts/5.Akiba/2.p2Out/macros vertex.C: to draw (corrected) X- and Y-vertex ana.C: to get fit parameters /direct/phenix+user06/phnxreco/Takashi_VTX_LbyL/tmoon/dsts/5.Akiba/0.p2Out/macros Output: SvxAlignment-0000407951.root & SVXQA-0000407951.root /direct/phenix+user06/phnxreco/Takashi_VTX_LbyL/tmoon/dsts/5.Akiba/2.p2Out
Get paramenters from linear fit. *154 PRDFs used. X-vertex for E is wider than others Y-intercept : -0.00141819 (cm) Slope : 0.00164675 (cm) Y-intercept : 0.00234054 (cm) Slope : -0.000830382 (cm) Y-intercept : -0.000458549 (cm) Slope : 0.0002589 (cm) Y-intercept : -0.00250729 (cm) Slope : 0.00109608 (cm) /direct/phenix+user06/phnxreco/Takashi_VTX_LbyL/tmoon/dsts/5.Akiba/0.p2Out/macros/ana.C
the correction applied to X- and Y-vertex using parameters from linear fit
X-vertex from calibrated BC vs Z-vertex *154 PRDFs used. X-vertex for E is wider than others Not corrected (both) Not corrected (west) Not corrected (east) Corrected (west) Corrected (east) /direct/phenix+user06/phnxreco/Takashi_VTX_LbyL/tmoon/dsts/5.Akiba/2.p2Out/macros/vertex.C
Y-vertex from calibrated BC vs Z-vertex *154 PRDFs used. Not corrected (west) Not corrected (east) Corrected (west) Corrected (east) /direct/phenix+user06/phnxreco/Takashi_VTX_LbyL/tmoon/dsts/5.Akiba/2.p2Out/macros/vertex.C
Trigger setting string trgselname = "MB"; TrigSelect *minbias = new TrigSelect(trgselname); trgsel.push_back(trgselname); minbias->AddTrigger("BBCLL1(>1 tubes)"); minbias->AddTrigger("BBCLL1(>1 tubes) narrowvtx"); minbias->AddTrigger("BBCLL1(>1 tubes) narrowvtx CopyA"); minbias->AddTrigger("BBCLL1(>1 tubes) narrowvtx Copy B"); minbias->AddTrigger("BBCLL1(>1 tubes) novertex");
Default cuts Fun4All_VTX_p2.C 10 < BBC charge < 200 SvxAlignment.cc Require “SVX_PRECISE” 0.5 < pT < 10 DC track quality = 31 or 63 |zed| < 75 ||phiv| - |phi0|| < clustercut_angle = 0.25 |zproj + bbcz - svxz| < zproj_cut = 5.0 |dproj + mag_bend| < dproj_cut = 0.4 Read_evttree.C |emcdphi| < 0.03 |emcdz| < 10 |zproj + svxprim[2] – svxz|< 2*sigma_z(layer)
To run drawing plotter for residuals in phi Input: /direct/phenix+user06/phnxreco/Takashi_VTX_LbyL/tmoon/dsts/5.Akiba/2.p2Out/SvxAlignment-0000407951.root Working dir: /direct/phenix+hhj/tmoon/3.Akiba/offline /direct/phenix+user06/phnxreco/Takashi_VTX_LbyL/tmoon/dsts/5.Akiba/2.p2Out/macros 1st macro to be run. /direct/phenix+user06/phnxreco/Takashi_VTX_LbyL/tmoon/dsts/5.Akiba/2.p2Out/macros/read_evttree.C It will produce hist_dphi.root. Please run using root –l –b [macro] due to many plots. 2nd macro to be run. /direct/phenix+user06/phnxreco/Takashi_VTX_LbyL/tmoon/dsts/5.Akiba/2.p2Out/macros/read_residual_phi.C It will produce plot for mean of residuals in phi such as the following plots.
Primary vertex dependent residuals *154 PRDFs used. No correction Black: no primz cut Red: primz < -8 Green: -8 < primz < -4 Blue: -4 < primz < 0 Yellow: 0 < primz < 4 Pink: 4< primz < 8 Bright blue: primz > 8 /direct/phenix+user06/phnxreco/Takashi_VTX_LbyL/tmoon/dsts/5.Akiba/2.p2Out/macros
Primary vertex dependent residuals *154 PRDFs used. Using svxcorrprim_west and _east when ux > 0 and ux < 0 respectively Black: no primz cut Red: primz < -8 Green: -8 < primz < -4 Blue: -4 < primz < 0 Yellow: 0 < primz < 4 Pink: 4< primz < 8 Bright blue: primz > 8 /direct/phenix+user06/phnxreco/Takashi_VTX_LbyL/tmoon/dsts/5.Akiba/2.p2Out/macros
Primary vertex dependent residuals *154 PRDFs used. Using (svxcorrprim_west + svxcorrprim_east)/2 used Black: no primz cut Red: primz < -8 Green: -8 < primz < -4 Blue: -4 < primz < 0 Yellow: 0 < primz < 4 Pink: 4< primz < 8 Bright blue: primz > 8 /direct/phenix+user06/phnxreco/Takashi_VTX_LbyL/tmoon/dsts/5.Akiba/2.p2Out/macros
SvxCorrectPrimVertex.C /direct/phenix+user06/phnxreco/Takashi_VTX_LbyL/tmoon/dsts/5.Akiba/2.p2Out/backup int SvxCorrectPrimVertex::process_event(PHCompositeNode *topNode) { vtxout = findNode::getClass<VtxOut>(topNode,"VtxOut"); if ( vtxout == NULL ) cerr << " no VtxOut " << endl; return EVENT_OK; } PHPoint prim = vtxout->get_Vertex("SVX_PRECISE"); PHPoint prim_west = vtxout->get_Vertex("SVX_PRECISEW"); PHPoint prim_east = vtxout->get_Vertex("SVX_PRECISEE"); if ( isnan(prim.getX()) ) return EVENT_OK; float vtx_corr[3], vtxerr_corr[3] = {0.002, 0.0025, 0.005}; const float x0w = -0.00141819; const float y0w = -0.000458549; const float x0e = 0.00234054; const float y0e = -0.00250729; if ( !isnan(prim_west.getX()) ) vtx_corr[0] = prim_west.getX() - ( x0w + ( aw * prim.getZ() ) ); vtx_corr[1] = prim_west.getY() - ( y0w + ( bw * prim.getZ() ) ); vtx_corr[2] = prim_west.getZ(); vtxout->AddVtx("SVX_PRECISEW_CORR",vtx_corr,vtxerr_corr,15); // west // Prim East if ( !isnan(prim_east.getX()) ) vtx_corr[0] = prim_east.getX() - ( x0e + ( ae * prim.getZ() ) ); vtx_corr[1] = prim_east.getY() - ( y0e + ( be * prim.getZ() ) ); vtx_corr[2] = prim_east.getZ(); vtxout->AddVtx("SVX_PRECISEE_CORR",vtx_corr,vtxerr_corr,16); // east
Fun4All_VTX_p2.C /direct/phenix+user06/phnxreco/Takashi_VTX_LbyL/tmoon/dsts/5.Akiba/2.p2Out/backup SvxPrimVertexFinder *svxprimvtxfinder = new SvxPrimVertexFinder(); SubsysReco *svxprimvtxfinder_west = new SvxPrimVertexFinder("SVXPRIMVTXFINDERW",1); SubsysReco *svxprimvtxfinder_east = new SvxPrimVertexFinder("SVXPRIMVTXFINDERE",2); SubsysReco *svxcorrectprimvtx = new SvxCorrectPrimVertex("SVXCORRECTPRIMVTX"); se->registerSubsystem(svxprimvtxfinder); se->registerSubsystem(svxprimvtxfinder_west); se->registerSubsystem(svxprimvtxfinder_east); se->registerSubsystem(svxcorrectprimvtx);
read_evttree.C /direct/phenix+user06/phnxreco/Takashi_VTX_LbyL/tmoon/dsts/5.Akiba/2.p2Out/macros float ux = cos(phi0); float uy = sin(phi0); // ******************************************************* // for mean of corrected vertex of w/e float svxcorrprim_west_east_x = 0.5 * (svxcorrprim_west[0] + svxcorrprim_east[0]); float svxcorrprim_west_east_y = 0.5 * (svxcorrprim_west[1] + svxcorrprim_east[1]); float svxxc_p = svxx - svxcorrprim_west_east_x; float svxyc_p = svxy - svxcorrprim_west_east_y; float svx_xy2_p = svxxc_p * svxxc_p + svxyc_p * svxyc_p; // for corrected vertex of w/e separately if ( ux > 0 ) // west { float svxxc_n = svxx - svxcorrprim_west[0]; float svxyc_n = svxy - svxcorrprim_west[1]; } else { // east float svxxc_n = svxx - svxcorrprim_east[0]; float svxyc_n = svxy - svxcorrprim_east[1]; } float svx_xy2_n = svxxc_n * svxxc_n + svxyc_n * svxyc_n; float dproj_p = ux * svxyc_p - uy * svxxc_p; float dproj_n = ux * svxyc_n - uy * svxxc_n; float mag_bend_p = -1.0 * 1.0 * 0.00135 * charge * svx_xy2_p / pt; float mag_bend_n = -1.0 * 1.0 * 0.00135 * charge * svx_xy2_n / pt;