00001 #include "GaudiKernel/MsgStream.h"
00002 #include "GaudiKernel/AlgFactory.h"
00003 #include "GaudiKernel/ISvcLocator.h"
00004 #include "GaudiKernel/SmartDataPtr.h"
00005 #include "GaudiKernel/IDataProviderSvc.h"
00006 #include "GaudiKernel/PropertyMgr.h"
00007
00008 #include "EventModel/EventModel.h"
00009 #include "EventModel/Event.h"
00010
00011 #include "EvtRecEvent/EvtRecEvent.h"
00012 #include "EvtRecEvent/EvtRecTrack.h"
00013 #include "EvtRecEvent/EvtRecDTag.h"
00014 #include "DstEvent/TofHitStatus.h"
00015 #include "EventModel/EventHeader.h"
00016
00017 #include "McTruth/McParticle.h"
00018
00019 #include "TH1F.h"
00020 #include "TMath.h"
00021 #include "GaudiKernel/INTupleSvc.h"
00022 #include "GaudiKernel/NTuple.h"
00023 #include "GaudiKernel/ITHistSvc.h"
00024 #include "GaudiKernel/Bootstrap.h"
00025 #include "GaudiKernel/IHistogramSvc.h"
00026
00027 #include "CLHEP/Vector/ThreeVector.h"
00028 #include "CLHEP/Vector/LorentzVector.h"
00029 #include "CLHEP/Vector/TwoVector.h"
00030 #include "CLHEP/Geometry/Point3D.h"
00031
00032 using CLHEP::Hep3Vector;
00033 using CLHEP::Hep2Vector;
00034 using CLHEP::HepLorentzVector;
00035 #ifndef ENABLE_BACKWARDS_COMPATIBILITY
00036 typedef HepGeom::Point3D<double> HepPoint3D;
00037 #endif
00038
00039 #include "VertexFit/IVertexDbSvc.h"
00040 #include "VertexFit/KinematicFit.h"
00041 #include "VertexFit/VertexFit.h"
00042 #include "VertexFit/Helix.h"
00043 #include "ParticleID/ParticleID.h"
00044 #include <vector>
00045
00046 #include "DQADtagAlg/DQADtag.h"
00047 #include "DQADtagAlg/util/MyUtil.h"
00048 #include "DQADtagAlg/util/MyConst.h"
00049
00050 using namespace Event;
00051
00052
00053
00054
00056
00057
00058
00059 const double mpsipp = 3.770;
00060
00061 const HepLorentzVector ecms(0.011*mpsipp,0,0,mpsipp);
00062 const Hep3Vector u_cms = -ecms.boostVector();
00063
00064 int Ncut_DQADTagAlg[10];
00065
00067
00068 DQADtag::DQADtag(const std::string& name, ISvcLocator* pSvcLocator) :
00069 Algorithm(name, pSvcLocator) {
00070
00071
00072 declareProperty("Vr0cut", m_vr0cut=1.0);
00073 declareProperty("Vz0cut", m_vz0cut=10.0);
00074 declareProperty("Vctcut", m_cthcut=0.93);
00075 declareProperty("mpi0Max", m_mpi0Min =0.1);
00076 declareProperty("mpi0Min", m_mpi0Max =0.16);
00077 declareProperty("EnergyThreshold", m_energyThreshold=0.04);
00078 declareProperty("BarrelEmc_th", m_Barrel_th = 0.82);
00079 declareProperty("EndcapEmc_th_1", m_Endcap_th_1 = 0.85);
00080 declareProperty("EndcapEmc_th_2", m_Endcap_th_2 = 0.93);
00081 declareProperty("EnergyThreshold_b", m_energyThreshold_b=0.025);
00082 declareProperty("EnergyThreshold_e", m_energyThreshold_e=0.05);
00083 declareProperty("GammaAngCut", m_gammaAngCut=25.0);
00084 declareProperty("ReadBeamEFromDB", m_ReadBeamEFromDB = false );
00085 declareProperty("BeamE", m_beamE = 1.885 );
00086 declareProperty("CheckDedx", m_checkDedx = 0);
00087 declareProperty("CheckTof", m_checkTof = 0);
00088 declareProperty("CheckVtx", m_checkVtx= 0);
00089 declareProperty("CheckEvt", m_checkEvt= 0);
00090 declareProperty("WriteTuple", m_writeTuple = 1);
00091 declareProperty("Debug", m_debug = 0);
00092 declareProperty("deltECut", m_deltECut = 0.03);
00093 declareProperty("mpi0MaxCut", m_mpi0MinCut =0.117);
00094 declareProperty("mpi0MinCut", m_mpi0MaxCut =0.145);
00095 declareProperty("mKsMaxCut", m_mKsMaxCut = 0.505);
00096 declareProperty("mKsMinCut", m_mKsMinCut = 0.49);
00097 declareProperty("KsDLengthCut", m_KsDLengthCut = 12.0);
00098 declareProperty("CheckDecayMode", m_checkDecayMode = 2);
00099 declareProperty("ReadVertex", m_readVertex = true);
00100 declareProperty("RegHist", m_regHist = 1);
00101 m_vtxFit = VertexFit::instance();
00102 m_2ndVtxFit = SecondVertexFit::instance();
00103 HepPoint3D vx(0., 0., 0.);
00104 HepSymMatrix Evx(3, 0);
00105 double bx = 1E+6;
00106 double by = 1E+6;
00107 double bz = 1E+6;
00108 Evx[0][0] = bx*bx;
00109 Evx[1][1] = by*by;
00110 Evx[2][2] = bz*bz;
00111 m_vxpar.setVx(vx);
00112 m_vxpar.setEvx(Evx);
00113 m_privxpar.setVx(vx);
00114 m_privxpar.setEvx(Evx);
00115
00116 TString strDecayModeName[6] = {"mBC","deltE","p","charm","mass","e"};
00117 m_decayModeHistName[0] = "mBC";
00118 m_decayModeHistName[1] = "deltE";
00119 m_decayModeHistName[2] = "mass";
00120 for (int i=0;i!=6;i++)
00121 {
00122 m_DecayModeItemName[i] = strDecayModeName[i];
00123 }
00124
00125
00126
00127
00128 TString strTrkName[10] = {"px","py","pz","pp","vx","vy","vz","vr0","cos","E"};
00129 m_TrackItemName[10] = "Id";
00130 for (int i=0;i!=10;i++)
00131 {
00132 m_trackHistName[i] = strTrkName[i];
00133 m_TrackItemName[i] = strTrkName[i];
00134 }
00135 TString strPhotonName[5] = {"numHits","secondmoment","x","y","z"};
00136 m_PhotonItemName[5] = "Id_Emc";
00137 for (int i=0;i!=5;i++)
00138 {
00139 m_photonHistName[i] = strPhotonName[i];
00140 m_PhotonItemName[i] = strPhotonName[i];
00141 }
00142 TString strTrkDedxName[6] = {"chik","chipi","ghit","thit","probPH","normPH"};
00143 for (int i=0;i!=6;i++)
00144 {
00145 m_trackDedxHistName[i] = strTrkDedxName[i];
00146 m_TrackDedxItemName[i] = strTrkDedxName[i];
00147 }
00148 m_TrackDedxItemName[6] = "Id_Dedx";
00149 TString strTrkTofName[6] = {"br_toff_mu","br_toff_pi","br_toff_k","ec_toff_mu","ec_toff_pi","ec_toff_k" };
00150 for (int i=0;i!=6;i++)
00151 {
00152 m_trackTofHistName[i] = strTrkTofName[i];
00153 m_TrackTofItemName[i] = strTrkTofName[i];
00154 }
00155 m_TrackTofItemName[6] = "Id_tof";
00156 m_TrackTofItemName[7] = "ec_toff_isEast";
00157 TString strKsName[4] = {"vfitmass","mass","dLength","dLengthErrorRatio"};
00158 for (int i=0;i!=4;i++)
00159 {
00160 m_KsHistName[i] = strKsName[i];
00161 m_KsItemName[i] = strKsName[i];
00162 }
00163 m_KsItemName[4] = "pvchi2";
00164 m_KsItemName[5] = "svchi2";
00165 TString strPi0Name[7] = {"pi0mass","photon1_E","photon1_cos","photon2_E","photon2_cos","photon1_Id","photon2_Id"};
00166 for (int i=0;i!=5;i++)
00167 {
00168 m_Pi0HistName[i] = strPi0Name[i];
00169 m_Pi0ItemName[i] = strPi0Name[i];
00170 }
00171 m_Pi0ItemName[5] = "photon1_Id";
00172 m_Pi0ItemName[6] = "photon2_Id";
00173
00174 }
00175
00176
00177 StatusCode DQADtag::initialize(){
00178 MsgStream log(msgSvc(), name());
00179
00180 log << MSG::INFO << "in initialize()" << endmsg;
00181
00182 m_irun=-100;
00183
00184 StatusCode status;
00185
00186 NTuplePtr nt2(ntupleSvc(), "DQAFILE/CheckVtx");
00187 if ( nt2 ) m_tuple2 = nt2;
00188 else {
00189 m_tuple2 = ntupleSvc()->book ("DQAFILE/CheckVtx", CLID_ColumnWiseTuple, "ks N-Tuple example");
00190 if ( m_tuple2 ) {
00191 status = m_tuple2->addItem ("vtxTrkId",m_vtxTrkId);
00192 status = m_tuple2->addItem ("vx0", m_vx0);
00193 status = m_tuple2->addItem ("vy0", m_vy0);
00194 status = m_tuple2->addItem ("vz0", m_vz0);
00195 status = m_tuple2->addItem ("vr0", m_vr0);
00196 status = m_tuple2->addItem ("vct", m_Vct);
00197 }
00198 else {
00199 log << MSG::ERROR << " Cannot book N-tuple:" << long(m_tuple2) << endmsg;
00200 return StatusCode::FAILURE;
00201 }
00202 }
00203
00204 NTuplePtr nt4(ntupleSvc(), "DQAFILE/Dtag");
00205 if ( nt4 ) m_tuple4 = nt4;
00206 else {
00207 m_tuple4 = ntupleSvc()->book ("DQAFILE/Dtag", CLID_ColumnWiseTuple, "ks N-Tuple example");
00208 if ( m_tuple4 ) {
00209 status = m_tuple4->addItem ("run", m_run);
00210 status = m_tuple4->addItem ("rec", m_rec);
00211 status = m_tuple4->addItem ("nch", m_nch);
00212 status = m_tuple4->addItem ("nneu", m_nneu);
00213 status = m_tuple4->addItem ("numD0Mode", m_numD0Mode);
00214 status = m_tuple4->addItem ("D0_mBC", m_D0_mBC);
00215 status = m_tuple4->addItem ("D0_deltE", m_D0_deltE);
00216 status = m_tuple4->addItem ("D0_mass", m_D0_mass);
00217 status = m_tuple4->addItem ("numDCMode", m_numDCMode);
00218 status = m_tuple4->addItem ("DC_mBC", m_DC_mBC);
00219 status = m_tuple4->addItem ("DC_deltE", m_DC_deltE);
00220 status = m_tuple4->addItem ("DC_mass", m_DC_mass);
00221 status = m_tuple4->addItem ("numAllMode", m_numAllMode);
00222 status = m_tuple4->addItem ("DtagbeamE", m_dtagbeamE);
00223 status = m_tuple4->addItem ("mode", m_mode);
00224 status = m_tuple4->addItem ("charge", m_charge);
00225 status = m_tuple4->addItem ("charm", m_charm);
00226 status = m_tuple4->addItem ("numchildren", m_numofchildren);
00227 status = m_tuple4->addItem ("mass", m_mass);
00228 status = m_tuple4->addItem ("mBC", m_mBC);
00229 status = m_tuple4->addItem ("rflag", m_rflag);
00230 status = m_tuple4->addItem ("deltaE", m_deltae);
00231 status = m_tuple4->addItem ("E", m_e);
00232 status = m_tuple4->addItem ("p", m_p);
00233 status = m_tuple4->addItem ("p_CMS", m_p_CMS);
00234 status = m_tuple4->addItem ("p4_CMS", 4, m_p4_CMS);
00235 status = m_tuple4->addItem ("notherTrk", m_nothertrk);
00236 status = m_tuple4->addItem ("nTrk", m_ntrk);
00237 status = m_tuple4->addItem ("nothershower", m_nothershower);
00238 status = m_tuple4->addItem ("nshower", m_nshower);
00239 status = m_tuple4->addItem ( "recNumD02KPi", m_recNumD02KPi);
00240 status = m_tuple4->addItem ("D02KPi_e", m_D02KPi_e);
00241 status = m_tuple4->addItem ("D02KPi_p", m_D02KPi_p);
00242 status = m_tuple4->addItem ("D02KPi_mBC", m_D02KPi_mBC);
00243 status = m_tuple4->addItem ("D02KPi_mass", m_D02KPi_mass);
00244 status = m_tuple4->addItem ("D02KPi_deltE", m_D02KPi_deltE);
00245 status = m_tuple4->addItem ("D02KPi_charm", m_D02KPi_charm);
00246 status = m_tuple4->addItem ("D02KPi_kaon_pp", m_D02KPi_kaon_pp);
00247 status = m_tuple4->addItem ("D02KPi_pion_pp", m_D02KPi_pion_pp);
00248 status = m_tuple4->addItem ("D02KPi_kaon_vx", m_D02KPi_kaon_vx);
00249 status = m_tuple4->addItem ("D02KPi_kaon_vy", m_D02KPi_kaon_vy);
00250 status = m_tuple4->addItem ("D02KPi_kaon_vz", m_D02KPi_kaon_vz);
00251 status = m_tuple4->addItem ("D02KPi_kaon_vr0", m_D02KPi_kaon_vr0);
00252 status = m_tuple4->addItem ("D02KPi_kaon_px", m_D02KPi_kaon_px);
00253 status = m_tuple4->addItem ("D02KPi_kaon_py", m_D02KPi_kaon_py);
00254 status = m_tuple4->addItem ("D02KPi_kaon_pz", m_D02KPi_kaon_pz);
00255 status = m_tuple4->addItem ("D02KPi_kaon_E", m_D02KPi_kaon_E);
00256 status = m_tuple4->addItem ("D02KPi_kaon_cos", m_D02KPi_kaon_cos);
00257 status = m_tuple4->addItem ("D02KPi_pion_vx", m_D02KPi_pion_vx);
00258 status = m_tuple4->addItem ("D02KPi_pion_vy", m_D02KPi_pion_vy);
00259 status = m_tuple4->addItem ("D02KPi_pion_vz", m_D02KPi_pion_vz);
00260 status = m_tuple4->addItem ("D02KPi_pion_vr0", m_D02KPi_pion_vr0);
00261 status = m_tuple4->addItem ("D02KPi_pion_px", m_D02KPi_pion_px);
00262 status = m_tuple4->addItem ("D02KPi_pion_py", m_D02KPi_pion_py);
00263 status = m_tuple4->addItem ("D02KPi_pion_pz", m_D02KPi_pion_pz);
00264 status = m_tuple4->addItem ("D02KPi_pion_E", m_D02KPi_pion_E);
00265 status = m_tuple4->addItem ("D02KPi_pion_cos", m_D02KPi_pion_cos);
00266 status = m_tuple4->addItem ("D02KPi_kaon_Id", m_D02KPi_kaon_Id);
00267 status = m_tuple4->addItem ("D02KPi_pion_Id", m_D02KPi_pion_Id);
00268 status = m_tuple4->addItem ( "recNumD02KPiPi0", m_recNumD02KPiPi0);
00269 status = m_tuple4->addItem ("D02KPiPi0_e", m_D02KPiPi0_e);
00270 status = m_tuple4->addItem ("D02KPiPi0_p", m_D02KPiPi0_p);
00271 status = m_tuple4->addItem ("D02KPiPi0_mBC", m_D02KPiPi0_mBC);
00272 status = m_tuple4->addItem ("D02KPiPi0_mass", m_D02KPiPi0_mass);
00273 status = m_tuple4->addItem ("D02KPiPi0_deltE", m_D02KPiPi0_deltE);
00274 status = m_tuple4->addItem ("D02KPiPi0_charm", m_D02KPiPi0_charm);
00275 status = m_tuple4->addItem ("D02KPiPi0_kaon_pp", m_D02KPiPi0_kaon_pp);
00276 status = m_tuple4->addItem ("D02KPiPi0_pion_pp", m_D02KPiPi0_pion_pp);
00277 status = m_tuple4->addItem ("D02KPiPi0_kaon_Id", m_D02KPiPi0_kaon_Id);
00278 status = m_tuple4->addItem ("D02KPiPi0_pion_Id", m_D02KPiPi0_pion_Id);
00279 status = m_tuple4->addItem ("D02KPiPi0_kaon_vx", m_D02KPiPi0_kaon_vx);
00280 status = m_tuple4->addItem ("D02KPiPi0_kaon_vy", m_D02KPiPi0_kaon_vy);
00281 status = m_tuple4->addItem ("D02KPiPi0_kaon_vz", m_D02KPiPi0_kaon_vz);
00282 status = m_tuple4->addItem ("D02KPiPi0_kaon_vr0", m_D02KPiPi0_kaon_vr0);
00283 status = m_tuple4->addItem ("D02KPiPi0_kaon_px", m_D02KPiPi0_kaon_px);
00284 status = m_tuple4->addItem ("D02KPiPi0_kaon_py", m_D02KPiPi0_kaon_py);
00285 status = m_tuple4->addItem ("D02KPiPi0_kaon_pz", m_D02KPiPi0_kaon_pz);
00286 status = m_tuple4->addItem ("D02KPiPi0_kaon_E", m_D02KPiPi0_kaon_E);
00287 status = m_tuple4->addItem ("D02KPiPi0_kaon_cos", m_D02KPiPi0_kaon_cos);
00288 status = m_tuple4->addItem ("D02KPiPi0_pion_vx", m_D02KPiPi0_pion_vx);
00289 status = m_tuple4->addItem ("D02KPiPi0_pion_vy", m_D02KPiPi0_pion_vy);
00290 status = m_tuple4->addItem ("D02KPiPi0_pion_vz", m_D02KPiPi0_pion_vz);
00291 status = m_tuple4->addItem ("D02KPiPi0_pion_vr0", m_D02KPiPi0_pion_vr0);
00292 status = m_tuple4->addItem ("D02KPiPi0_pion_px", m_D02KPiPi0_pion_px);
00293 status = m_tuple4->addItem ("D02KPiPi0_pion_py", m_D02KPiPi0_pion_py);
00294 status = m_tuple4->addItem ("D02KPiPi0_pion_pz", m_D02KPiPi0_pion_pz);
00295 status = m_tuple4->addItem ("D02KPiPi0_pion_E", m_D02KPiPi0_pion_E);
00296 status = m_tuple4->addItem ("D02KPiPi0_pion_cos", m_D02KPiPi0_pion_cos);
00297 status = m_tuple4->addItem ("D02KPiPi0_pi0mass", m_D02KPiPi0_pi0mass);
00298 status = m_tuple4->addItem ("D02KPiPi0_photon1_Id", m_D02KPiPi0_photon1_Id);
00299 status = m_tuple4->addItem ("D02KPiPi0_photon2_Id", m_D02KPiPi0_photon2_Id);
00300 status = m_tuple4->addItem ("D02KPiPi0_photon1_E", m_D02KPiPi0_photon1_E);
00301 status = m_tuple4->addItem ("D02KPiPi0_photon2_E", m_D02KPiPi0_photon2_E);
00302 status = m_tuple4->addItem ("D02KPiPi0_photon1_cos", m_D02KPiPi0_photon1_cos);
00303 status = m_tuple4->addItem ("D02KPiPi0_photon2_cos", m_D02KPiPi0_photon2_cos);
00304 status = m_tuple4->addItem ( "recNumD02KPiPiPi", m_recNumD02KPiPiPi);
00305 status = m_tuple4->addItem ("D02KPiPiPi_e", m_D02KPiPiPi_e);
00306 status = m_tuple4->addItem ("D02KPiPiPi_p", m_D02KPiPiPi_p);
00307 status = m_tuple4->addItem ("D02KPiPiPi_mBC", m_D02KPiPiPi_mBC);
00308 status = m_tuple4->addItem ("D02KPiPiPi_mass", m_D02KPiPiPi_mass);
00309 status = m_tuple4->addItem ("D02KPiPiPi_deltE", m_D02KPiPiPi_deltE);
00310 status = m_tuple4->addItem ("D02KPiPiPi_charm", m_D02KPiPiPi_charm);
00311 status = m_tuple4->addItem ("D02KPiPiPi_kaon_pp", m_D02KPiPiPi_kaon_pp);
00312 status = m_tuple4->addItem ("D02KPiPiPi_pion1_pp", m_D02KPiPiPi_pion1_pp);
00313 status = m_tuple4->addItem ("D02KPiPiPi_pion2_pp", m_D02KPiPiPi_pion2_pp);
00314 status = m_tuple4->addItem ("D02KPiPiPi_pion3_pp", m_D02KPiPiPi_pion3_pp);
00315 status = m_tuple4->addItem ("D02KPiPiPi_kaon_Id", m_D02KPiPiPi_kaon_Id);
00316 status = m_tuple4->addItem ("D02KPiPiPi_pion1_Id", m_D02KPiPiPi_pion1_Id);
00317 status = m_tuple4->addItem ("D02KPiPiPi_pion2_Id", m_D02KPiPiPi_pion2_Id);
00318 status = m_tuple4->addItem ("D02KPiPiPi_pion3_Id", m_D02KPiPiPi_pion3_Id);
00319 status = m_tuple4->addItem ( "recNumD02KPiPiPiPi0", m_recNumD02KPiPiPiPi0);
00320 status = m_tuple4->addItem ("D02KPiPiPiPi0_e", m_D02KPiPiPiPi0_e);
00321 status = m_tuple4->addItem ("D02KPiPiPiPi0_p", m_D02KPiPiPiPi0_p);
00322 status = m_tuple4->addItem ("D02KPiPiPiPi0_mBC", m_D02KPiPiPiPi0_mBC);
00323 status = m_tuple4->addItem ("D02KPiPiPiPi0_mass", m_D02KPiPiPiPi0_mass);
00324 status = m_tuple4->addItem ("D02KPiPiPiPi0_deltE", m_D02KPiPiPiPi0_deltE);
00325 status = m_tuple4->addItem ("D02KPiPiPiPi0_charm", m_D02KPiPiPiPi0_charm);
00326 status = m_tuple4->addItem ("D02KPiPiPiPi0_kaon_pp", m_D02KPiPiPiPi0_kaon_pp);
00327 status = m_tuple4->addItem ("D02KPiPiPiPi0_pion1_pp", m_D02KPiPiPiPi0_pion1_pp);
00328 status = m_tuple4->addItem ("D02KPiPiPiPi0_pion2_pp", m_D02KPiPiPiPi0_pion2_pp);
00329 status = m_tuple4->addItem ("D02KPiPiPiPi0_pion3_pp", m_D02KPiPiPiPi0_pion3_pp);
00330 status = m_tuple4->addItem ("D02KPiPiPiPi0_kaon_Id", m_D02KPiPiPiPi0_kaon_Id);
00331 status = m_tuple4->addItem ("D02KPiPiPiPi0_pion1_Id", m_D02KPiPiPiPi0_pion1_Id);
00332 status = m_tuple4->addItem ("D02KPiPiPiPi0_pion2_Id", m_D02KPiPiPiPi0_pion2_Id);
00333 status = m_tuple4->addItem ("D02KPiPiPiPi0_pion3_Id", m_D02KPiPiPiPi0_pion3_Id);
00334 status = m_tuple4->addItem ("D02KPiPiPiPi0_pi0mass", m_D02KPiPiPiPi0_pi0mass);
00335 status = m_tuple4->addItem ("D02KPiPiPiPi0_photon1_Id", m_D02KPiPiPiPi0_photon1_Id);
00336 status = m_tuple4->addItem ("D02KPiPiPiPi0_photon2_Id", m_D02KPiPiPiPi0_photon2_Id);
00337 status = m_tuple4->addItem ("D02KPiPiPiPi0_photon1_E", m_D02KPiPiPiPi0_photon1_E);
00338 status = m_tuple4->addItem ("D02KPiPiPiPi0_photon2_E", m_D02KPiPiPiPi0_photon2_E);
00339 status = m_tuple4->addItem ("D02KPiPiPiPi0_photon1_cos", m_D02KPiPiPiPi0_photon1_cos);
00340 status = m_tuple4->addItem ("D02KPiPiPiPi0_photon2_cos", m_D02KPiPiPiPi0_photon2_cos);
00341 status = m_tuple4->addItem ( "recNumD02KsPiPi", m_recNumD02KsPiPi);
00342 status = m_tuple4->addItem ("D02KsPiPi_e", m_D02KsPiPi_e);
00343 status = m_tuple4->addItem ("D02KsPiPi_p", m_D02KsPiPi_p);
00344 status = m_tuple4->addItem ("D02KsPiPi_mBC", m_D02KsPiPi_mBC);
00345 status = m_tuple4->addItem ("D02KsPiPi_mass", m_D02KsPiPi_mass);
00346 status = m_tuple4->addItem ("D02KsPiPi_deltE", m_D02KsPiPi_deltE);
00347 status = m_tuple4->addItem ("D02KsPiPi_charm", m_D02KsPiPi_charm);
00348 status = m_tuple4->addItem ("D02KsPiPi_pion1_pp", m_D02KsPiPi_pion1_pp);
00349 status = m_tuple4->addItem ("D02KsPiPi_pion2_pp", m_D02KsPiPi_pion2_pp);
00350 status = m_tuple4->addItem ("D02KsPiPi_pion3_pp", m_D02KsPiPi_pion3_pp);
00351 status = m_tuple4->addItem ("D02KsPiPi_pion4_pp", m_D02KsPiPi_pion4_pp);
00352 status = m_tuple4->addItem ("D02KsPiPi_pion1_Id", m_D02KsPiPi_pion1_Id);
00353 status = m_tuple4->addItem ("D02KsPiPi_pion2_Id", m_D02KsPiPi_pion2_Id);
00354 status = m_tuple4->addItem ("D02KsPiPi_pion3_Id", m_D02KsPiPi_pion3_Id);
00355 status = m_tuple4->addItem ("D02KsPiPi_pion4_Id", m_D02KsPiPi_pion4_Id);
00356 status = m_tuple4->addItem ("D02KsPiPi_pion1_vx", m_D02KsPiPi_pion1_vx);
00357 status = m_tuple4->addItem ("D02KsPiPi_pion1_vy", m_D02KsPiPi_pion1_vy);
00358 status = m_tuple4->addItem ("D02KsPiPi_pion1_vz", m_D02KsPiPi_pion1_vz);
00359 status = m_tuple4->addItem ("D02KsPiPi_pion1_vr0", m_D02KsPiPi_pion1_vr0);
00360 status = m_tuple4->addItem ("D02KsPiPi_pion1_px", m_D02KsPiPi_pion1_px);
00361 status = m_tuple4->addItem ("D02KsPiPi_pion1_py", m_D02KsPiPi_pion1_py);
00362 status = m_tuple4->addItem ("D02KsPiPi_pion1_pz", m_D02KsPiPi_pion1_pz);
00363 status = m_tuple4->addItem ("D02KsPiPi_pion1_pp", m_D02KsPiPi_pion1_pp);
00364 status = m_tuple4->addItem ("D02KsPiPi_pion1_E", m_D02KsPiPi_pion1_E);
00365 status = m_tuple4->addItem ("D02KsPiPi_pion1_cos", m_D02KsPiPi_pion1_cos);
00366 status = m_tuple4->addItem ("D02KsPiPi_pion2_vx", m_D02KsPiPi_pion2_vx);
00367 status = m_tuple4->addItem ("D02KsPiPi_pion2_vy", m_D02KsPiPi_pion2_vy);
00368 status = m_tuple4->addItem ("D02KsPiPi_pion2_vz", m_D02KsPiPi_pion2_vz);
00369 status = m_tuple4->addItem ("D02KsPiPi_pion2_vr0", m_D02KsPiPi_pion2_vr0);
00370 status = m_tuple4->addItem ("D02KsPiPi_pion2_px", m_D02KsPiPi_pion2_px);
00371 status = m_tuple4->addItem ("D02KsPiPi_pion2_py", m_D02KsPiPi_pion2_py);
00372 status = m_tuple4->addItem ("D02KsPiPi_pion2_pz", m_D02KsPiPi_pion2_pz);
00373 status = m_tuple4->addItem ("D02KsPiPi_pion2_pp", m_D02KsPiPi_pion2_pp);
00374 status = m_tuple4->addItem ("D02KsPiPi_pion2_E", m_D02KsPiPi_pion2_E);
00375 status = m_tuple4->addItem ("D02KsPiPi_pion2_cos", m_D02KsPiPi_pion2_cos);
00376 status = m_tuple4->addItem ("D02KsPiPi_pion3_vx", m_D02KsPiPi_pion3_vx);
00377 status = m_tuple4->addItem ("D02KsPiPi_pion3_vy", m_D02KsPiPi_pion3_vy);
00378 status = m_tuple4->addItem ("D02KsPiPi_pion3_vz", m_D02KsPiPi_pion3_vz);
00379 status = m_tuple4->addItem ("D02KsPiPi_pion3_vr0", m_D02KsPiPi_pion3_vr0);
00380 status = m_tuple4->addItem ("D02KsPiPi_pion3_px", m_D02KsPiPi_pion3_px);
00381 status = m_tuple4->addItem ("D02KsPiPi_pion3_py", m_D02KsPiPi_pion3_py);
00382 status = m_tuple4->addItem ("D02KsPiPi_pion3_pz", m_D02KsPiPi_pion3_pz);
00383 status = m_tuple4->addItem ("D02KsPiPi_pion3_pp", m_D02KsPiPi_pion3_pp);
00384 status = m_tuple4->addItem ("D02KsPiPi_pion3_E", m_D02KsPiPi_pion3_E);
00385 status = m_tuple4->addItem ("D02KsPiPi_pion3_cos", m_D02KsPiPi_pion3_cos);
00386 status = m_tuple4->addItem ("D02KsPiPi_pion4_vx", m_D02KsPiPi_pion4_vx);
00387 status = m_tuple4->addItem ("D02KsPiPi_pion4_vy", m_D02KsPiPi_pion4_vy);
00388 status = m_tuple4->addItem ("D02KsPiPi_pion4_vz", m_D02KsPiPi_pion4_vz);
00389 status = m_tuple4->addItem ("D02KsPiPi_pion4_vr0", m_D02KsPiPi_pion4_vr0);
00390 status = m_tuple4->addItem ("D02KsPiPi_pion4_px", m_D02KsPiPi_pion4_px);
00391 status = m_tuple4->addItem ("D02KsPiPi_pion4_py", m_D02KsPiPi_pion4_py);
00392 status = m_tuple4->addItem ("D02KsPiPi_pion4_pz", m_D02KsPiPi_pion4_pz);
00393 status = m_tuple4->addItem ("D02KsPiPi_pion4_pp", m_D02KsPiPi_pion4_pp);
00394 status = m_tuple4->addItem ("D02KsPiPi_pion4_E", m_D02KsPiPi_pion4_E);
00395 status = m_tuple4->addItem ("D02KsPiPi_pion4_cos", m_D02KsPiPi_pion4_cos);
00396 status = m_tuple4->addItem ("D02KsPiPi_ks_mass", m_D02KsPiPi_ks_mass);
00397 status = m_tuple4->addItem ("D02KsPiPi_ks_vfitmass", m_D02KsPiPi_ks_vfitmass);
00398 status = m_tuple4->addItem ("D02KsPiPi_ks_pvchi2", m_D02KsPiPi_ks_pvchi2);
00399 status = m_tuple4->addItem ("D02KsPiPi_ks_svchi2", m_D02KsPiPi_ks_svchi2);
00400 status = m_tuple4->addItem ("D02KsPiPi_ks_dLength", m_D02KsPiPi_ks_dLength);
00401 status = m_tuple4->addItem ("D02KsPiPi_ks_dLengthErrorRatio", m_D02KsPiPi_ks_dLengthErrorRatio);
00402 status = m_tuple4->addItem ( "recNumD02KsPiPiPi0", m_recNumD02KsPiPiPi0);
00403 status = m_tuple4->addItem ("D02KsPiPiPi0_e", m_D02KsPiPiPi0_e);
00404 status = m_tuple4->addItem ("D02KsPiPiPi0_p", m_D02KsPiPiPi0_p);
00405 status = m_tuple4->addItem ("D02KsPiPiPi0_mBC", m_D02KsPiPiPi0_mBC);
00406 status = m_tuple4->addItem ("D02KsPiPiPi0_mass", m_D02KsPiPiPi0_mass);
00407 status = m_tuple4->addItem ("D02KsPiPiPi0_deltE", m_D02KsPiPiPi0_deltE);
00408 status = m_tuple4->addItem ("D02KsPiPiPi0_charm", m_D02KsPiPiPi0_charm);
00409 status = m_tuple4->addItem ("D02KsPiPiPi0_pion1_pp", m_D02KsPiPiPi0_pion1_pp);
00410 status = m_tuple4->addItem ("D02KsPiPiPi0_pion2_pp", m_D02KsPiPiPi0_pion2_pp);
00411 status = m_tuple4->addItem ("D02KsPiPiPi0_pion3_pp", m_D02KsPiPiPi0_pion3_pp);
00412 status = m_tuple4->addItem ("D02KsPiPiPi0_pion4_pp", m_D02KsPiPiPi0_pion4_pp);
00413 status = m_tuple4->addItem ("D02KsPiPiPi0_pion1_Id", m_D02KsPiPiPi0_pion1_Id);
00414 status = m_tuple4->addItem ("D02KsPiPiPi0_pion2_Id", m_D02KsPiPiPi0_pion2_Id);
00415 status = m_tuple4->addItem ("D02KsPiPiPi0_pion3_Id", m_D02KsPiPiPi0_pion3_Id);
00416 status = m_tuple4->addItem ("D02KsPiPiPi0_pion4_Id", m_D02KsPiPiPi0_pion4_Id);
00417 status = m_tuple4->addItem ("D02KsPiPiPi0_pi0mass", m_D02KsPiPiPi0_pi0mass);
00418 status = m_tuple4->addItem ("D02KsPiPiPi0_photon1_Id", m_D02KsPiPiPi0_photon1_Id);
00419 status = m_tuple4->addItem ("D02KsPiPiPi0_photon2_Id", m_D02KsPiPiPi0_photon2_Id);
00420 status = m_tuple4->addItem ("D02KsPiPiPi0_photon1_E", m_D02KsPiPiPi0_photon1_E);
00421 status = m_tuple4->addItem ("D02KsPiPiPi0_photon2_E", m_D02KsPiPiPi0_photon2_E);
00422 status = m_tuple4->addItem ("D02KsPiPiPi0_photon1_cos", m_D02KsPiPiPi0_photon1_cos);
00423 status = m_tuple4->addItem ("D02KsPiPiPi0_photon2_cos", m_D02KsPiPiPi0_photon2_cos);
00424 status = m_tuple4->addItem ("D02KsPiPiPi0_ks_mass", m_D02KsPiPiPi0_ks_mass);
00425 status = m_tuple4->addItem ("D02KsPiPiPi0_ks_vfitmass", m_D02KsPiPiPi0_ks_vfitmass);
00426 status = m_tuple4->addItem ("D02KsPiPiPi0_ks_pvchi2", m_D02KsPiPiPi0_ks_pvchi2);
00427 status = m_tuple4->addItem ("D02KsPiPiPi0_ks_svchi2", m_D02KsPiPiPi0_ks_svchi2);
00428 status = m_tuple4->addItem ("D02KsPiPiPi0_ks_dLength", m_D02KsPiPiPi0_ks_dLength);
00429 status = m_tuple4->addItem ("D02KsPiPiPi0_ks_dLengthErrorRatio", m_D02KsPiPiPi0_ks_dLengthErrorRatio);
00430 status = m_tuple4->addItem ( "recNumDC2KPiPi", m_recNumDC2KPiPi);
00431 status = m_tuple4->addItem ("DC2KPiPi_e", m_DC2KPiPi_e);
00432 status = m_tuple4->addItem ("DC2KPiPi_p", m_DC2KPiPi_p);
00433 status = m_tuple4->addItem ("DC2KPiPi_mBC", m_DC2KPiPi_mBC);
00434 status = m_tuple4->addItem ("DC2KPiPi_mass", m_DC2KPiPi_mass);
00435 status = m_tuple4->addItem ("DC2KPiPi_deltE", m_DC2KPiPi_deltE);
00436 status = m_tuple4->addItem ("DC2KPiPi_charge", m_DC2KPiPi_charge);
00437 status = m_tuple4->addItem ("DC2KPiPi_charm", m_DC2KPiPi_charm);
00438 status = m_tuple4->addItem ("DC2KPiPi_kaon_pp", m_DC2KPiPi_kaon_pp);
00439 status = m_tuple4->addItem ("DC2KPiPi_pion1_pp", m_DC2KPiPi_pion1_pp);
00440 status = m_tuple4->addItem ("DC2KPiPi_pion2_pp", m_DC2KPiPi_pion2_pp);
00441 status = m_tuple4->addItem ("DC2KPiPi_kaon_Id", m_DC2KPiPi_kaon_Id);
00442 status = m_tuple4->addItem ("DC2KPiPi_pion1_Id", m_DC2KPiPi_pion1_Id);
00443 status = m_tuple4->addItem ("DC2KPiPi_pion2_Id", m_DC2KPiPi_pion2_Id);
00444 status = m_tuple4->addItem ("DC2KPiPi_kaon_vx", m_DC2KPiPi_kaon_vx);
00445 status = m_tuple4->addItem ("DC2KPiPi_kaon_vy", m_DC2KPiPi_kaon_vy);
00446 status = m_tuple4->addItem ("DC2KPiPi_kaon_vz", m_DC2KPiPi_kaon_vz);
00447 status = m_tuple4->addItem ("DC2KPiPi_kaon_vr0", m_DC2KPiPi_kaon_vr0);
00448 status = m_tuple4->addItem ("DC2KPiPi_kaon_px", m_DC2KPiPi_kaon_px);
00449 status = m_tuple4->addItem ("DC2KPiPi_kaon_py", m_DC2KPiPi_kaon_py);
00450 status = m_tuple4->addItem ("DC2KPiPi_kaon_pz", m_DC2KPiPi_kaon_pz);
00451 status = m_tuple4->addItem ("DC2KPiPi_kaon_E", m_DC2KPiPi_kaon_E);
00452 status = m_tuple4->addItem ("DC2KPiPi_kaon_cos", m_DC2KPiPi_kaon_cos);
00453 status = m_tuple4->addItem ("DC2KPiPi_pion1_vx", m_DC2KPiPi_pion1_vx);
00454 status = m_tuple4->addItem ("DC2KPiPi_pion1_vy", m_DC2KPiPi_pion1_vy);
00455 status = m_tuple4->addItem ("DC2KPiPi_pion1_vz", m_DC2KPiPi_pion1_vz);
00456 status = m_tuple4->addItem ("DC2KPiPi_pion1_vr0", m_DC2KPiPi_pion1_vr0);
00457 status = m_tuple4->addItem ("DC2KPiPi_pion1_px", m_DC2KPiPi_pion1_px);
00458 status = m_tuple4->addItem ("DC2KPiPi_pion1_py", m_DC2KPiPi_pion1_py);
00459 status = m_tuple4->addItem ("DC2KPiPi_pion1_pz", m_DC2KPiPi_pion1_pz);
00460 status = m_tuple4->addItem ("DC2KPiPi_pion1_E", m_DC2KPiPi_pion1_E);
00461 status = m_tuple4->addItem ("DC2KPiPi_pion1_cos", m_DC2KPiPi_pion1_cos);
00462 status = m_tuple4->addItem ("DC2KPiPi_pion2_vx", m_DC2KPiPi_pion2_vx);
00463 status = m_tuple4->addItem ("DC2KPiPi_pion2_vy", m_DC2KPiPi_pion2_vy);
00464 status = m_tuple4->addItem ("DC2KPiPi_pion2_vz", m_DC2KPiPi_pion2_vz);
00465 status = m_tuple4->addItem ("DC2KPiPi_pion2_vr0", m_DC2KPiPi_pion2_vr0);
00466 status = m_tuple4->addItem ("DC2KPiPi_pion2_px", m_DC2KPiPi_pion2_px);
00467 status = m_tuple4->addItem ("DC2KPiPi_pion2_py", m_DC2KPiPi_pion2_py);
00468 status = m_tuple4->addItem ("DC2KPiPi_pion2_pz", m_DC2KPiPi_pion2_pz);
00469 status = m_tuple4->addItem ("DC2KPiPi_pion2_E", m_DC2KPiPi_pion2_E);
00470 status = m_tuple4->addItem ("DC2KPiPi_pion2_cos", m_DC2KPiPi_pion2_cos);
00471 status = m_tuple4->addItem ( "recNumDC2KPiPiPi0", m_recNumDC2KPiPiPi0);
00472 status = m_tuple4->addItem ("DC2KPiPiPi0_e", m_DC2KPiPiPi0_e);
00473 status = m_tuple4->addItem ("DC2KPiPiPi0_p", m_DC2KPiPiPi0_p);
00474 status = m_tuple4->addItem ("DC2KPiPiPi0_mBC", m_DC2KPiPiPi0_mBC);
00475 status = m_tuple4->addItem ("DC2KPiPiPi0_mass", m_DC2KPiPiPi0_mass);
00476 status = m_tuple4->addItem ("DC2KPiPiPi0_deltE", m_DC2KPiPiPi0_deltE);
00477 status = m_tuple4->addItem ("DC2KPiPiPi0_charge", m_DC2KPiPiPi0_charge);
00478 status = m_tuple4->addItem ("DC2KPiPiPi0_charm", m_DC2KPiPiPi0_charm);
00479 status = m_tuple4->addItem ("DC2KPiPiPi0_kaon_pp", m_DC2KPiPiPi0_kaon_pp);
00480 status = m_tuple4->addItem ("DC2KPiPiPi0_pion1_pp", m_DC2KPiPiPi0_pion1_pp);
00481 status = m_tuple4->addItem ("DC2KPiPiPi0_pion2_pp", m_DC2KPiPiPi0_pion2_pp);
00482 status = m_tuple4->addItem ("DC2KPiPiPi0_kaon_Id", m_DC2KPiPiPi0_kaon_Id);
00483 status = m_tuple4->addItem ("DC2KPiPiPi0_pion1_Id", m_DC2KPiPiPi0_pion1_Id);
00484 status = m_tuple4->addItem ("DC2KPiPiPi0_pion2_Id", m_DC2KPiPiPi0_pion2_Id);
00485 status = m_tuple4->addItem ("DC2KPiPiPi0_kaon_vx", m_DC2KPiPiPi0_kaon_vx);
00486 status = m_tuple4->addItem ("DC2KPiPiPi0_kaon_vy", m_DC2KPiPiPi0_kaon_vy);
00487 status = m_tuple4->addItem ("DC2KPiPiPi0_kaon_vz", m_DC2KPiPiPi0_kaon_vz);
00488 status = m_tuple4->addItem ("DC2KPiPiPi0_kaon_vr0", m_DC2KPiPiPi0_kaon_vr0);
00489 status = m_tuple4->addItem ("DC2KPiPiPi0_kaon_px", m_DC2KPiPiPi0_kaon_px);
00490 status = m_tuple4->addItem ("DC2KPiPiPi0_kaon_py", m_DC2KPiPiPi0_kaon_py);
00491 status = m_tuple4->addItem ("DC2KPiPiPi0_kaon_pz", m_DC2KPiPiPi0_kaon_pz);
00492 status = m_tuple4->addItem ("DC2KPiPiPi0_kaon_E", m_DC2KPiPiPi0_kaon_E);
00493 status = m_tuple4->addItem ("DC2KPiPiPi0_kaon_cos", m_DC2KPiPiPi0_kaon_cos);
00494 status = m_tuple4->addItem ("DC2KPiPiPi0_pion1_vx", m_DC2KPiPiPi0_pion1_vx);
00495 status = m_tuple4->addItem ("DC2KPiPiPi0_pion1_vy", m_DC2KPiPiPi0_pion1_vy);
00496 status = m_tuple4->addItem ("DC2KPiPiPi0_pion1_vz", m_DC2KPiPiPi0_pion1_vz);
00497 status = m_tuple4->addItem ("DC2KPiPiPi0_pion1_vr0", m_DC2KPiPiPi0_pion1_vr0);
00498 status = m_tuple4->addItem ("DC2KPiPiPi0_pion1_px", m_DC2KPiPiPi0_pion1_px);
00499 status = m_tuple4->addItem ("DC2KPiPiPi0_pion1_py", m_DC2KPiPiPi0_pion1_py);
00500 status = m_tuple4->addItem ("DC2KPiPiPi0_pion1_pz", m_DC2KPiPiPi0_pion1_pz);
00501 status = m_tuple4->addItem ("DC2KPiPiPi0_pion1_E", m_DC2KPiPiPi0_pion1_E);
00502 status = m_tuple4->addItem ("DC2KPiPiPi0_pion1_cos", m_DC2KPiPiPi0_pion1_cos);
00503 status = m_tuple4->addItem ("DC2KPiPiPi0_pion2_vx", m_DC2KPiPiPi0_pion2_vx);
00504 status = m_tuple4->addItem ("DC2KPiPiPi0_pion2_vy", m_DC2KPiPiPi0_pion2_vy);
00505 status = m_tuple4->addItem ("DC2KPiPiPi0_pion2_vz", m_DC2KPiPiPi0_pion2_vz);
00506 status = m_tuple4->addItem ("DC2KPiPiPi0_pion2_vr0", m_DC2KPiPiPi0_pion2_vr0);
00507 status = m_tuple4->addItem ("DC2KPiPiPi0_pion2_px", m_DC2KPiPiPi0_pion2_px);
00508 status = m_tuple4->addItem ("DC2KPiPiPi0_pion2_py", m_DC2KPiPiPi0_pion2_py);
00509 status = m_tuple4->addItem ("DC2KPiPiPi0_pion2_pz", m_DC2KPiPiPi0_pion2_pz);
00510 status = m_tuple4->addItem ("DC2KPiPiPi0_pion2_E", m_DC2KPiPiPi0_pion2_E);
00511 status = m_tuple4->addItem ("DC2KPiPiPi0_pion2_cos", m_DC2KPiPiPi0_pion2_cos);
00512 status = m_tuple4->addItem ("DC2KPiPiPi0_pi0mass", m_DC2KPiPiPi0_pi0mass);
00513 status = m_tuple4->addItem ("DC2KPiPiPi0_photon1_Id", m_DC2KPiPiPi0_photon1_Id);
00514 status = m_tuple4->addItem ("DC2KPiPiPi0_photon2_Id", m_DC2KPiPiPi0_photon2_Id);
00515 status = m_tuple4->addItem ("DC2KPiPiPi0_photon1_E", m_DC2KPiPiPi0_photon1_E);
00516 status = m_tuple4->addItem ("DC2KPiPiPi0_photon2_E", m_DC2KPiPiPi0_photon2_E);
00517 status = m_tuple4->addItem ("DC2KPiPiPi0_photon1_cos", m_DC2KPiPiPi0_photon1_cos);
00518 status = m_tuple4->addItem ("DC2KPiPiPi0_photon2_cos", m_DC2KPiPiPi0_photon2_cos);
00519 status = m_tuple4->addItem ( "recNumDC2KsPiPi0", m_recNumDC2KsPiPi0);
00520 status = m_tuple4->addItem ("DC2KsPiPi0_e", m_DC2KsPiPi0_e);
00521 status = m_tuple4->addItem ("DC2KsPiPi0_p", m_DC2KsPiPi0_p);
00522 status = m_tuple4->addItem ("DC2KsPiPi0_mBC", m_DC2KsPiPi0_mBC);
00523 status = m_tuple4->addItem ("DC2KsPiPi0_mass", m_DC2KsPiPi0_mass);
00524 status = m_tuple4->addItem ("DC2KsPiPi0_deltE", m_DC2KsPiPi0_deltE);
00525 status = m_tuple4->addItem ("DC2KsPiPi0_charge", m_DC2KsPiPi0_charge);
00526 status = m_tuple4->addItem ("DC2KsPiPi0_charm", m_DC2KsPiPi0_charm);
00527 status = m_tuple4->addItem ("DC2KsPiPi0_pion1_pp", m_DC2KsPiPi0_pion1_pp);
00528 status = m_tuple4->addItem ("DC2KsPiPi0_pion2_pp", m_DC2KsPiPi0_pion2_pp);
00529 status = m_tuple4->addItem ("DC2KsPiPi0_pion3_pp", m_DC2KsPiPi0_pion3_pp);
00530 status = m_tuple4->addItem ("DC2KsPiPi0_pion1_Id", m_DC2KsPiPi0_pion1_Id);
00531 status = m_tuple4->addItem ("DC2KsPiPi0_pion2_Id", m_DC2KsPiPi0_pion2_Id);
00532 status = m_tuple4->addItem ("DC2KsPiPi0_pion3_Id", m_DC2KsPiPi0_pion3_Id);
00533 status = m_tuple4->addItem ("DC2KsPiPi0_pion1_vx", m_DC2KsPiPi0_pion1_vx);
00534 status = m_tuple4->addItem ("DC2KsPiPi0_pion1_vy", m_DC2KsPiPi0_pion1_vy);
00535 status = m_tuple4->addItem ("DC2KsPiPi0_pion1_vz", m_DC2KsPiPi0_pion1_vz);
00536 status = m_tuple4->addItem ("DC2KsPiPi0_pion1_vr0", m_DC2KsPiPi0_pion1_vr0);
00537 status = m_tuple4->addItem ("DC2KsPiPi0_pion1_px", m_DC2KsPiPi0_pion1_px);
00538 status = m_tuple4->addItem ("DC2KsPiPi0_pion1_py", m_DC2KsPiPi0_pion1_py);
00539 status = m_tuple4->addItem ("DC2KsPiPi0_pion1_pz", m_DC2KsPiPi0_pion1_pz);
00540 status = m_tuple4->addItem ("DC2KsPiPi0_pion1_E", m_DC2KsPiPi0_pion1_E);
00541 status = m_tuple4->addItem ("DC2KsPiPi0_pion1_cos", m_DC2KsPiPi0_pion1_cos);
00542 status = m_tuple4->addItem ("DC2KsPiPi0_pion2_vx", m_DC2KsPiPi0_pion2_vx);
00543 status = m_tuple4->addItem ("DC2KsPiPi0_pion2_vy", m_DC2KsPiPi0_pion2_vy);
00544 status = m_tuple4->addItem ("DC2KsPiPi0_pion2_vz", m_DC2KsPiPi0_pion2_vz);
00545 status = m_tuple4->addItem ("DC2KsPiPi0_pion2_vr0", m_DC2KsPiPi0_pion2_vr0);
00546 status = m_tuple4->addItem ("DC2KsPiPi0_pion2_px", m_DC2KsPiPi0_pion2_px);
00547 status = m_tuple4->addItem ("DC2KsPiPi0_pion2_py", m_DC2KsPiPi0_pion2_py);
00548 status = m_tuple4->addItem ("DC2KsPiPi0_pion2_pz", m_DC2KsPiPi0_pion2_pz);
00549 status = m_tuple4->addItem ("DC2KsPiPi0_pion2_E", m_DC2KsPiPi0_pion2_E);
00550 status = m_tuple4->addItem ("DC2KsPiPi0_pion2_cos", m_DC2KsPiPi0_pion2_cos);
00551 status = m_tuple4->addItem ("DC2KsPiPi0_pion3_vx", m_DC2KsPiPi0_pion3_vx);
00552 status = m_tuple4->addItem ("DC2KsPiPi0_pion3_vy", m_DC2KsPiPi0_pion3_vy);
00553 status = m_tuple4->addItem ("DC2KsPiPi0_pion3_vz", m_DC2KsPiPi0_pion3_vz);
00554 status = m_tuple4->addItem ("DC2KsPiPi0_pion3_vr0", m_DC2KsPiPi0_pion3_vr0);
00555 status = m_tuple4->addItem ("DC2KsPiPi0_pion3_px", m_DC2KsPiPi0_pion3_px);
00556 status = m_tuple4->addItem ("DC2KsPiPi0_pion3_py", m_DC2KsPiPi0_pion3_py);
00557 status = m_tuple4->addItem ("DC2KsPiPi0_pion3_pz", m_DC2KsPiPi0_pion3_pz);
00558 status = m_tuple4->addItem ("DC2KsPiPi0_pion3_E", m_DC2KsPiPi0_pion3_E);
00559 status = m_tuple4->addItem ("DC2KsPiPi0_pion3_cos", m_DC2KsPiPi0_pion3_cos);
00560 status = m_tuple4->addItem ("DC2KsPiPi0_pi0mass", m_DC2KsPiPi0_pi0mass);
00561 status = m_tuple4->addItem ("DC2KsPiPi0_photon1_Id", m_DC2KsPiPi0_photon1_Id);
00562 status = m_tuple4->addItem ("DC2KsPiPi0_photon2_Id", m_DC2KsPiPi0_photon2_Id);
00563 status = m_tuple4->addItem ("DC2KsPiPi0_photon1_E", m_DC2KsPiPi0_photon1_E);
00564 status = m_tuple4->addItem ("DC2KsPiPi0_photon2_E", m_DC2KsPiPi0_photon2_E);
00565 status = m_tuple4->addItem ("DC2KsPiPi0_photon1_cos", m_DC2KsPiPi0_photon1_cos);
00566 status = m_tuple4->addItem ("DC2KsPiPi0_photon2_cos", m_DC2KsPiPi0_photon2_cos);
00567 status = m_tuple4->addItem ("DC2KsPiPi0_ks_mass", m_DC2KsPiPi0_ks_mass);
00568 status = m_tuple4->addItem ("DC2KsPiPi0_ks_vfitmass", m_DC2KsPiPi0_ks_vfitmass);
00569 status = m_tuple4->addItem ("DC2KsPiPi0_ks_pvchi2", m_DC2KsPiPi0_ks_pvchi2);
00570 status = m_tuple4->addItem ("DC2KsPiPi0_ks_svchi2", m_DC2KsPiPi0_ks_svchi2);
00571 status = m_tuple4->addItem ("DC2KsPiPi0_ks_dLength", m_DC2KsPiPi0_ks_dLength);
00572 status = m_tuple4->addItem ("DC2KsPiPi0_ks_dLengthErrorRatio", m_DC2KsPiPi0_ks_dLengthErrorRatio);
00573 status = m_tuple4->addItem ( "recNumDC2KsPiPiPi", m_recNumDC2KsPiPiPi);
00574 status = m_tuple4->addItem ("DC2KsPiPiPi_e", m_DC2KsPiPiPi_e);
00575 status = m_tuple4->addItem ("DC2KsPiPiPi_p", m_DC2KsPiPiPi_p);
00576 status = m_tuple4->addItem ("DC2KsPiPiPi_mBC", m_DC2KsPiPiPi_mBC);
00577 status = m_tuple4->addItem ("DC2KsPiPiPi_mass", m_DC2KsPiPiPi_mass);
00578 status = m_tuple4->addItem ("DC2KsPiPiPi_deltE", m_DC2KsPiPiPi_deltE);
00579 status = m_tuple4->addItem ("DC2KsPiPiPi_charge", m_DC2KsPiPiPi_charge);
00580 status = m_tuple4->addItem ("DC2KsPiPiPi_charm", m_DC2KsPiPiPi_charm);
00581 status = m_tuple4->addItem ("DC2KsPiPiPi_pion1_pp", m_DC2KsPiPiPi_pion1_pp);
00582 status = m_tuple4->addItem ("DC2KsPiPiPi_pion2_pp", m_DC2KsPiPiPi_pion2_pp);
00583 status = m_tuple4->addItem ("DC2KsPiPiPi_pion3_pp", m_DC2KsPiPiPi_pion3_pp);
00584 status = m_tuple4->addItem ("DC2KsPiPiPi_pion4_pp", m_DC2KsPiPiPi_pion4_pp);
00585 status = m_tuple4->addItem ("DC2KsPiPiPi_pion5_pp", m_DC2KsPiPiPi_pion5_pp);
00586 status = m_tuple4->addItem ("DC2KsPiPiPi_pion1_Id", m_DC2KsPiPiPi_pion1_Id);
00587 status = m_tuple4->addItem ("DC2KsPiPiPi_pion2_Id", m_DC2KsPiPiPi_pion2_Id);
00588 status = m_tuple4->addItem ("DC2KsPiPiPi_pion3_Id", m_DC2KsPiPiPi_pion3_Id);
00589 status = m_tuple4->addItem ("DC2KsPiPiPi_pion4_Id", m_DC2KsPiPiPi_pion4_Id);
00590 status = m_tuple4->addItem ("DC2KsPiPiPi_pion5_Id", m_DC2KsPiPiPi_pion5_Id);
00591 status = m_tuple4->addItem ("DC2KsPiPiPi_ks_mass", m_DC2KsPiPiPi_ks_mass);
00592 status = m_tuple4->addItem ("DC2KsPiPiPi_ks_vfitmass", m_DC2KsPiPiPi_ks_vfitmass);
00593 status = m_tuple4->addItem ("DC2KsPiPiPi_ks_pvchi2", m_DC2KsPiPiPi_ks_pvchi2);
00594 status = m_tuple4->addItem ("DC2KsPiPiPi_ks_svchi2", m_DC2KsPiPiPi_ks_svchi2);
00595 status = m_tuple4->addItem ("DC2KsPiPiPi_ks_dLength", m_DC2KsPiPiPi_ks_dLength);
00596 status = m_tuple4->addItem ("DC2KsPiPiPi_ks_dLengthErrorRatio", m_DC2KsPiPiPi_ks_dLengthErrorRatio);
00597 status = m_tuple4->addItem ( "recNumDC2KKPi", m_recNumDC2KKPi);
00598 status = m_tuple4->addItem ("DC2KKPi_e", m_DC2KKPi_e);
00599 status = m_tuple4->addItem ("DC2KKPi_p", m_DC2KKPi_p);
00600 status = m_tuple4->addItem ("DC2KKPi_mBC", m_DC2KKPi_mBC);
00601 status = m_tuple4->addItem ("DC2KKPi_mass", m_DC2KKPi_mass);
00602 status = m_tuple4->addItem ("DC2KKPi_deltE", m_DC2KKPi_deltE);
00603 status = m_tuple4->addItem ("DC2KKPi_charge", m_DC2KKPi_charge);
00604 status = m_tuple4->addItem ("DC2KKPi_charm", m_DC2KKPi_charm);
00605 status = m_tuple4->addItem ("DC2KKPi_kaon1_pp", m_DC2KKPi_kaon1_pp);
00606 status = m_tuple4->addItem ("DC2KKPi_kaon2_pp", m_DC2KKPi_kaon2_pp);
00607 status = m_tuple4->addItem ("DC2KKPi_pion_pp", m_DC2KKPi_pion_pp);
00608 status = m_tuple4->addItem ("DC2KKPi_kaon1_Id", m_DC2KKPi_kaon1_Id);
00609 status = m_tuple4->addItem ("DC2KKPi_kaon2_Id", m_DC2KKPi_kaon2_Id);
00610 status = m_tuple4->addItem ("DC2KKPi_pion_Id", m_DC2KKPi_pion_Id);
00611 status = m_tuple4->addItem ("D02KPi_kaon_Id_Dedx", m_D02KPi_kaon_Id_Dedx);
00612 status = m_tuple4->addItem ("D02KPi_pion_Id_Dedx", m_D02KPi_pion_Id_Dedx);
00613 status = m_tuple4->addItem ("D02KPi_kaon_chipi", m_D02KPi_kaon_chipi);
00614 status = m_tuple4->addItem ("D02KPi_kaon_chik", m_D02KPi_kaon_chik);
00615 status = m_tuple4->addItem ("D02KPi_kaon_ghit", m_D02KPi_kaon_ghit);
00616 status = m_tuple4->addItem ("D02KPi_kaon_thit", m_D02KPi_kaon_thit);
00617 status = m_tuple4->addItem ("D02KPi_kaon_probPH", m_D02KPi_kaon_probPH);
00618 status = m_tuple4->addItem ("D02KPi_kaon_normPH", m_D02KPi_kaon_normPH);
00619 status = m_tuple4->addItem ("D02KPi_pion_chipi", m_D02KPi_pion_chipi);
00620 status = m_tuple4->addItem ("D02KPi_pion_chik", m_D02KPi_pion_chik);
00621 status = m_tuple4->addItem ("D02KPi_pion_ghit", m_D02KPi_pion_ghit);
00622 status = m_tuple4->addItem ("D02KPi_pion_thit", m_D02KPi_pion_thit);
00623 status = m_tuple4->addItem ("D02KPi_pion_probPH", m_D02KPi_pion_probPH);
00624 status = m_tuple4->addItem ("D02KPi_pion_normPH", m_D02KPi_pion_normPH);
00625 status = m_tuple4->addItem ("D02KPiPi0_kaon_Id_Dedx", m_D02KPiPi0_kaon_Id_Dedx);
00626 status = m_tuple4->addItem ("D02KPiPi0_pion_Id_Dedx", m_D02KPiPi0_pion_Id_Dedx);
00627 status = m_tuple4->addItem ("D02KPiPi0_kaon_chipi", m_D02KPiPi0_kaon_chipi);
00628 status = m_tuple4->addItem ("D02KPiPi0_kaon_chik", m_D02KPiPi0_kaon_chik);
00629 status = m_tuple4->addItem ("D02KPiPi0_kaon_ghit", m_D02KPiPi0_kaon_ghit);
00630 status = m_tuple4->addItem ("D02KPiPi0_kaon_thit", m_D02KPiPi0_kaon_thit);
00631 status = m_tuple4->addItem ("D02KPiPi0_kaon_probPH", m_D02KPiPi0_kaon_probPH);
00632 status = m_tuple4->addItem ("D02KPiPi0_kaon_normPH", m_D02KPiPi0_kaon_normPH);
00633 status = m_tuple4->addItem ("D02KPiPi0_pion_chipi", m_D02KPiPi0_pion_chipi);
00634 status = m_tuple4->addItem ("D02KPiPi0_pion_chik", m_D02KPiPi0_pion_chik);
00635 status = m_tuple4->addItem ("D02KPiPi0_pion_ghit", m_D02KPiPi0_pion_ghit);
00636 status = m_tuple4->addItem ("D02KPiPi0_pion_thit", m_D02KPiPi0_pion_thit);
00637 status = m_tuple4->addItem ("D02KPiPi0_pion_probPH", m_D02KPiPi0_pion_probPH);
00638 status = m_tuple4->addItem ("D02KPiPi0_pion_normPH", m_D02KPiPi0_pion_normPH);
00639 status = m_tuple4->addItem ("D02KPi_kaon_Id_tof", m_D02KPi_kaon_Id_tof);
00640 status = m_tuple4->addItem ("D02KPi_pion_Id_tof", m_D02KPi_pion_Id_tof);
00641 status = m_tuple4->addItem ("D02KPi_kaon_ec_toff_mu", m_D02KPi_kaon_ec_toff_mu);
00642 status = m_tuple4->addItem ("D02KPi_kaon_ec_toff_pi", m_D02KPi_kaon_ec_toff_pi);
00643 status = m_tuple4->addItem ("D02KPi_kaon_ec_toff_k", m_D02KPi_kaon_ec_toff_k);
00644 status = m_tuple4->addItem ("D02KPi_kaon_ec_toff_isEast", m_D02KPi_kaon_ec_toff_isEast);
00645 status = m_tuple4->addItem ("D02KPi_kaon_br_toff_mu", 7,m_D02KPi_kaon_br_toff_mu);
00646 status = m_tuple4->addItem ("D02KPi_kaon_br_toff_pi", 7,m_D02KPi_kaon_br_toff_pi);
00647 status = m_tuple4->addItem ("D02KPi_kaon_br_toff_k", 7,m_D02KPi_kaon_br_toff_k);
00648 status = m_tuple4->addItem ("D02KPi_pion_ec_toff_pi", m_D02KPi_pion_ec_toff_mu);
00649 status = m_tuple4->addItem ("D02KPi_pion_ec_toff_mu", m_D02KPi_pion_ec_toff_pi);
00650 status = m_tuple4->addItem ("D02KPi_pion_ec_toff_k", m_D02KPi_pion_ec_toff_k);
00651 status = m_tuple4->addItem ("D02KPi_pion_ec_toff_isEast", m_D02KPi_pion_ec_toff_isEast);
00652 status = m_tuple4->addItem ("D02KPi_pion_br_toff_mu", 7,m_D02KPi_pion_br_toff_mu);
00653 status = m_tuple4->addItem ("D02KPi_pion_br_toff_pi", 7,m_D02KPi_pion_br_toff_pi);
00654 status = m_tuple4->addItem ("D02KPi_pion_br_toff_k", 7,m_D02KPi_pion_br_toff_k);
00655 status = m_tuple4->addItem ("D02KPiPi0_kaon_Id_tof", m_D02KPiPi0_kaon_Id_tof);
00656 status = m_tuple4->addItem ("D02KPiPi0_pion_Id_tof", m_D02KPiPi0_pion_Id_tof);
00657 status = m_tuple4->addItem ("D02KPiPi0_kaon_ec_toff_mu", m_D02KPiPi0_kaon_ec_toff_mu);
00658 status = m_tuple4->addItem ("D02KPiPi0_kaon_ec_toff_pi", m_D02KPiPi0_kaon_ec_toff_pi);
00659 status = m_tuple4->addItem ("D02KPiPi0_kaon_ec_toff_k", m_D02KPiPi0_kaon_ec_toff_k);
00660 status = m_tuple4->addItem ("D02KPiPi0_kaon_ec_toff_isEast", m_D02KPiPi0_kaon_ec_toff_isEast);
00661 status = m_tuple4->addItem ("D02KPiPi0_kaon_br_toff_mu", 7,m_D02KPiPi0_kaon_br_toff_mu);
00662 status = m_tuple4->addItem ("D02KPiPi0_kaon_br_toff_pi", 7,m_D02KPiPi0_kaon_br_toff_pi);
00663 status = m_tuple4->addItem ("D02KPiPi0_kaon_br_toff_k", 7,m_D02KPiPi0_kaon_br_toff_k);
00664 status = m_tuple4->addItem ("D02KPiPi0_pion_ec_toff_mu", m_D02KPiPi0_pion_ec_toff_mu);
00665 status = m_tuple4->addItem ("D02KPiPi0_pion_ec_toff_pi", m_D02KPiPi0_pion_ec_toff_pi);
00666 status = m_tuple4->addItem ("D02KPiPi0_pion_ec_toff_k", m_D02KPiPi0_pion_ec_toff_k);
00667 status = m_tuple4->addItem ("D02KPiPi0_pion_ec_toff_isEast", m_D02KPiPi0_pion_ec_toff_isEast);
00668 status = m_tuple4->addItem ("D02KPiPi0_pion_br_toff_mu", 7,m_D02KPiPi0_pion_br_toff_mu);
00669 status = m_tuple4->addItem ("D02KPiPi0_pion_br_toff_pi", 7,m_D02KPiPi0_pion_br_toff_pi);
00670 status = m_tuple4->addItem ("D02KPiPi0_pion_br_toff_k", 7,m_D02KPiPi0_pion_br_toff_k);
00671 status = m_tuple4->addItem ("DC2KPiPi_kaon_Id_tof", m_DC2KPiPi_kaon_Id_tof);
00672 status = m_tuple4->addItem ("DC2KPiPi_pion1_Id_tof", m_DC2KPiPi_pion1_Id_tof);
00673 status = m_tuple4->addItem ("DC2KPiPi_pion2_Id_tof", m_DC2KPiPi_pion2_Id_tof);
00674 status = m_tuple4->addItem ("DC2KPiPi_kaon_ec_toff_mu", m_DC2KPiPi_kaon_ec_toff_mu);
00675 status = m_tuple4->addItem ("DC2KPiPi_kaon_ec_toff_pi", m_DC2KPiPi_kaon_ec_toff_pi);
00676 status = m_tuple4->addItem ("DC2KPiPi_kaon_ec_toff_k", m_DC2KPiPi_kaon_ec_toff_k);
00677 status = m_tuple4->addItem ("DC2KPiPi_kaon_ec_toff_isEast", m_DC2KPiPi_kaon_ec_toff_isEast);
00678 status = m_tuple4->addItem ("DC2KPiPi_kaon_br_toff_mu", 7, m_DC2KPiPi_kaon_br_toff_mu);
00679 status = m_tuple4->addItem ("DC2KPiPi_kaon_br_toff_pi", 7, m_DC2KPiPi_kaon_br_toff_pi);
00680 status = m_tuple4->addItem ("DC2KPiPi_kaon_br_toff_k", 7, m_DC2KPiPi_kaon_br_toff_k);
00681 status = m_tuple4->addItem ("DC2KPiPi_pion1_ec_toff_mu", m_DC2KPiPi_pion1_ec_toff_mu);
00682 status = m_tuple4->addItem ("DC2KPiPi_pion1_ec_toff_pi", m_DC2KPiPi_pion1_ec_toff_pi);
00683 status = m_tuple4->addItem ("DC2KPiPi_pion1_ec_toff_k", m_DC2KPiPi_pion1_ec_toff_k);
00684 status = m_tuple4->addItem ("DC2KPiPi_pion1_ec_toff_isEast", m_DC2KPiPi_pion1_ec_toff_isEast);
00685 status = m_tuple4->addItem ("DC2KPiPi_pion1_br_toff_mu", 7, m_DC2KPiPi_pion1_br_toff_mu);
00686 status = m_tuple4->addItem ("DC2KPiPi_pion1_br_toff_pi", 7, m_DC2KPiPi_pion1_br_toff_pi);
00687 status = m_tuple4->addItem ("DC2KPiPi_pion1_br_toff_k", 7, m_DC2KPiPi_pion1_br_toff_k);
00688 status = m_tuple4->addItem ("DC2KPiPi_pion2_ec_toff_mu", m_DC2KPiPi_pion2_ec_toff_mu);
00689 status = m_tuple4->addItem ("DC2KPiPi_pion2_ec_toff_pi", m_DC2KPiPi_pion2_ec_toff_pi);
00690 status = m_tuple4->addItem ("DC2KPiPi_pion2_ec_toff_k", m_DC2KPiPi_pion2_ec_toff_k);
00691 status = m_tuple4->addItem ("DC2KPiPi_pion2_ec_toff_isEast", m_DC2KPiPi_pion2_ec_toff_isEast);
00692 status = m_tuple4->addItem ("DC2KPiPi_pion2_br_toff_mu", 7, m_DC2KPiPi_pion2_br_toff_mu);
00693 status = m_tuple4->addItem ("DC2KPiPi_pion2_br_toff_pi", 7, m_DC2KPiPi_pion2_br_toff_pi);
00694 status = m_tuple4->addItem ("DC2KPiPi_pion2_br_toff_k", 7, m_DC2KPiPi_pion2_br_toff_k);
00695 status = m_tuple4->addItem ("D02KPiPi0_photon1_Id_Emc", m_D02KPiPi0_photon1_Id_Emc);
00696 status = m_tuple4->addItem ("D02KPiPi0_photon1_numHits", m_D02KPiPi0_photon1_numHits);
00697 status = m_tuple4->addItem ("D02KPiPi0_photon1_secondmoment", m_D02KPiPi0_photon1_secondmoment);
00698 status = m_tuple4->addItem ("D02KPiPi0_photon1_x", m_D02KPiPi0_photon1_x);
00699 status = m_tuple4->addItem ("D02KPiPi0_photon1_y", m_D02KPiPi0_photon1_y);
00700 status = m_tuple4->addItem ("D02KPiPi0_photon1_z", m_D02KPiPi0_photon1_z);
00701 status = m_tuple4->addItem ("D02KPiPi0_photon2_Id_Emc", m_D02KPiPi0_photon2_Id_Emc);
00702 status = m_tuple4->addItem ("D02KPiPi0_photon2_numHits", m_D02KPiPi0_photon2_numHits);
00703 status = m_tuple4->addItem ("D02KPiPi0_photon2_secondmoment", m_D02KPiPi0_photon2_secondmoment);
00704 status = m_tuple4->addItem ("D02KPiPi0_photon2_x", m_D02KPiPi0_photon2_x);
00705 status = m_tuple4->addItem ("D02KPiPi0_photon2_y", m_D02KPiPi0_photon2_y);
00706 status = m_tuple4->addItem ("D02KPiPi0_photon2_z", m_D02KPiPi0_photon2_z);
00707 status = m_tuple4->addItem ("DC2KPiPi_kaon_chipi", m_DC2KPiPi_kaon_chipi);
00708 status = m_tuple4->addItem ("DC2KPiPi_kaon_chik", m_DC2KPiPi_kaon_chik);
00709 status = m_tuple4->addItem ("DC2KPiPi_kaon_ghit", m_DC2KPiPi_kaon_ghit);
00710 status = m_tuple4->addItem ("DC2KPiPi_kaon_thit", m_DC2KPiPi_kaon_thit);
00711 status = m_tuple4->addItem ("DC2KPiPi_kaon_probPH", m_DC2KPiPi_kaon_probPH);
00712 status = m_tuple4->addItem ("DC2KPiPi_kaon_normPH", m_DC2KPiPi_kaon_normPH);
00713 status = m_tuple4->addItem ("DC2KPiPi_pion1_chipi", m_DC2KPiPi_pion1_chipi);
00714 status = m_tuple4->addItem ("DC2KPiPi_pion1_chik", m_DC2KPiPi_pion1_chik);
00715 status = m_tuple4->addItem ("DC2KPiPi_pion1_ghit", m_DC2KPiPi_pion1_ghit);
00716 status = m_tuple4->addItem ("DC2KPiPi_pion1_thit", m_DC2KPiPi_pion1_thit);
00717 status = m_tuple4->addItem ("DC2KPiPi_pion1_probPH", m_DC2KPiPi_pion1_probPH);
00718 status = m_tuple4->addItem ("DC2KPiPi_pion1_normPH", m_DC2KPiPi_pion1_normPH);
00719 status = m_tuple4->addItem ("DC2KPiPi_pion2_chipi", m_DC2KPiPi_pion2_chipi);
00720 status = m_tuple4->addItem ("DC2KPiPi_pion2_chik", m_DC2KPiPi_pion2_chik);
00721 status = m_tuple4->addItem ("DC2KPiPi_pion2_ghit", m_DC2KPiPi_pion2_ghit);
00722 status = m_tuple4->addItem ("DC2KPiPi_pion2_thit", m_DC2KPiPi_pion2_thit);
00723 status = m_tuple4->addItem ("DC2KPiPi_pion2_probPH", m_DC2KPiPi_pion2_probPH);
00724 status = m_tuple4->addItem ("DC2KPiPi_pion2_normPH", m_DC2KPiPi_pion2_normPH);
00725 status = m_tuple4->addItem ("DC2KPiPi_kaon_Id_Dedx", m_DC2KPiPi_kaon_Id_Dedx);
00726 status = m_tuple4->addItem ("DC2KPiPi_pion1_Id_Dedx", m_DC2KPiPi_pion1_Id_Dedx);
00727 status = m_tuple4->addItem ("DC2KPiPi_pion2_Id_Dedx", m_DC2KPiPi_pion2_Id_Dedx);
00728 }
00729 else {
00730 log << MSG::ERROR << " Cannot book N-tuple:" << long(m_tuple4) << endmsg;
00731 return StatusCode::FAILURE;
00732 }
00733 }
00734
00735 NTuplePtr nt5(ntupleSvc(), "DQAFILE/Events");
00736 if ( nt5 ) m_tuple5 = nt5;
00737 else {
00738 m_tuple5 = ntupleSvc()->book ("DQAFILE/Events", CLID_ColumnWiseTuple, "ks N-Tuple example");
00739 if ( m_tuple5 ) {
00740 status = m_tuple5->addItem ("evtrun", m_evtrun);
00741 status = m_tuple5->addItem ("evtrec", m_evtrec);
00742 status = m_tuple5->addItem ("evtnch", m_evtnch);
00743 status = m_tuple5->addItem ("evtnneu", m_evtnneu);
00744 status = m_tuple5->addItem ("evtbeamE", m_evtbeamE);
00745 }
00746 else {
00747 log << MSG::ERROR << " Cannot book N-tuple:" << long(m_tuple5) << endmsg;
00748 return StatusCode::FAILURE;
00749 }
00750 }
00751 NTuplePtr nt11(ntupleSvc(), "DQAFILE/CheckDedxAll");
00752 if ( nt11 ) m_tuple11 = nt11;
00753 else {
00754 m_tuple11 = ntupleSvc()->book ("DQAFILE/CheckDedxAll", CLID_ColumnWiseTuple, "ks N-Tuple example");
00755 if ( m_tuple11 ) {
00756 status = m_tuple11->addItem ("ngch", m_ngch, 0, 10000);
00757 status = m_tuple11->addIndexedItem ("trkiddedx", m_ngch, m_trkiddedx);
00758 status = m_tuple11->addIndexedItem ("mptrk", m_ngch, m_ptrk);
00759 status = m_tuple11->addIndexedItem ("chie", m_ngch, m_chie);
00760 status = m_tuple11->addIndexedItem ("chimu", m_ngch,m_chimu);
00761 status = m_tuple11->addIndexedItem ("chipi", m_ngch,m_chipi);
00762 status = m_tuple11->addIndexedItem ("chik", m_ngch,m_chik);
00763 status = m_tuple11->addIndexedItem ("chip", m_ngch,m_chip);
00764 status = m_tuple11->addIndexedItem ("probPH", m_ngch,m_probPH);
00765 status = m_tuple11->addIndexedItem ("normPH", m_ngch,m_normPH);
00766 status = m_tuple11->addIndexedItem ("ghit", m_ngch,m_ghit);
00767 status = m_tuple11->addIndexedItem ("thit", m_ngch,m_thit);
00768 }
00769 else {
00770 log << MSG::ERROR << " Cannot book N-tuple:" << long(m_tuple11) << endmsg;
00771 return StatusCode::FAILURE;
00772 }
00773 }
00774
00775 NTuplePtr nt12(ntupleSvc(), "DQAFILE/CheckTofChAll");
00776 if ( nt12 ) m_tuple12 = nt12;
00777 else {
00778 m_tuple12 = ntupleSvc()->book ("DQAFILE/CheckTofChAll", CLID_ColumnWiseTuple, "ks N-Tuple example");
00779 if ( m_tuple12 ) {
00780 status = m_tuple12->addItem ("ngch2", m_ngch2, 0, 10000);
00781 status = m_tuple12->addIndexedItem ("trkidtof", m_ngch2,m_trkidtof);
00782 status = m_tuple12->addIndexedItem ("ptot_etof", m_ngch2,m_ptot_etof);
00783 status = m_tuple12->addIndexedItem ("cntr_etof", m_ngch2,m_cntr_etof);
00784 status = m_tuple12->addIndexedItem ("te_etof", m_ngch2,m_te_etof);
00785 status = m_tuple12->addIndexedItem ("tmu_etof", m_ngch2,m_tmu_etof);
00786 status = m_tuple12->addIndexedItem ("tpi_etof", m_ngch2,m_tpi_etof);
00787 status = m_tuple12->addIndexedItem ("tk_etof", m_ngch2,m_tk_etof);
00788 status = m_tuple12->addIndexedItem ("tp_etof", m_ngch2,m_tp_etof);
00789 status = m_tuple12->addIndexedItem ("ph_etof", m_ngch2,m_ph_etof);
00790 status = m_tuple12->addIndexedItem ("rhit_etof", m_ngch2,m_rhit_etof);
00791 status = m_tuple12->addIndexedItem ("qual_etof", m_ngch2,m_qual_etof);
00792 status = m_tuple12->addIndexedItem ("ec_toff_e", m_ngch2,m_ec_toff_e);
00793 status = m_tuple12->addIndexedItem ("ec_toff_mu",m_ngch2,m_ec_toff_mu);
00794 status = m_tuple12->addIndexedItem ("ec_toff_pi",m_ngch2,m_ec_toff_pi);
00795 status = m_tuple12->addIndexedItem ("ec_toff_k", m_ngch2,m_ec_toff_k);
00796 status = m_tuple12->addIndexedItem ("ec_toff_p", m_ngch2,m_ec_toff_p);
00797 status = m_tuple12->addIndexedItem ("ec_tsig_e", m_ngch2,m_ec_tsig_e);
00798 status = m_tuple12->addIndexedItem ("ec_tsig_mu",m_ngch2,m_ec_tsig_mu);
00799 status = m_tuple12->addIndexedItem ("ec_tsig_pi",m_ngch2,m_ec_tsig_pi);
00800 status = m_tuple12->addIndexedItem ("ec_tsig_k", m_ngch2,m_ec_tsig_k);
00801 status = m_tuple12->addIndexedItem ("ec_tsig_p", m_ngch2,m_ec_tsig_p);
00802 status = m_tuple12->addIndexedItem ("ec_tof", m_ngch2,m_ec_tof);
00803 status = m_tuple12->addIndexedItem ("ptot_btof1",m_ngch2,m_ptot_btof1);
00804 status = m_tuple12->addIndexedItem ("cntr_btof1",m_ngch2,m_cntr_btof1);
00805 status = m_tuple12->addIndexedItem ("te_btof1", m_ngch2,m_te_btof1);
00806 status = m_tuple12->addIndexedItem ("tmu_btof1", m_ngch2,m_tmu_btof1);
00807 status = m_tuple12->addIndexedItem ("tpi_btof1", m_ngch2,m_tpi_btof1);
00808 status = m_tuple12->addIndexedItem ("tk_btof1", m_ngch2,m_tk_btof1);
00809 status = m_tuple12->addIndexedItem ("tp_btof1", m_ngch2,m_tp_btof1);
00810 status = m_tuple12->addIndexedItem ("ph_btof1", m_ngch2,m_ph_btof1);
00811 status = m_tuple12->addIndexedItem ("zhit_btof1",m_ngch2,m_zhit_btof1);
00812 status = m_tuple12->addIndexedItem ("qual_btof1",m_ngch2,m_qual_btof1);
00813 status = m_tuple12->addIndexedItem ("b1_toff_e", m_ngch2,m_b1_toff_e);
00814 status = m_tuple12->addIndexedItem ("b1_toff_mu",m_ngch2,m_b1_toff_mu);
00815 status = m_tuple12->addIndexedItem ("b1_toff_pi",m_ngch2,m_b1_toff_pi);
00816 status = m_tuple12->addIndexedItem ("b1_toff_k", m_ngch2,m_b1_toff_k);
00817 status = m_tuple12->addIndexedItem ("b1_toff_p", m_ngch2,m_b1_toff_p);
00818 status = m_tuple12->addIndexedItem ("b1_tsig_e", m_ngch2,m_b1_tsig_e);
00819 status = m_tuple12->addIndexedItem ("b1_tsig_mu",m_ngch2,m_b1_tsig_mu);
00820 status = m_tuple12->addIndexedItem ("b1_tsig_pi",m_ngch2,m_b1_tsig_pi);
00821 status = m_tuple12->addIndexedItem ("b1_tsig_k", m_ngch2,m_b1_tsig_k);
00822 status = m_tuple12->addIndexedItem ("b1_tsig_p", m_ngch2,m_b1_tsig_p);
00823 status = m_tuple12->addIndexedItem ("b1_tof", m_ngch2,m_b1_tof);
00824
00825 status = m_tuple12->addIndexedItem ("mdedx_pid", m_ngch2,m_dedx_pid);
00826 status = m_tuple12->addIndexedItem ("mtof1_pid", m_ngch2,m_tof1_pid);
00827 status = m_tuple12->addIndexedItem ("mtof2_pid", m_ngch2,m_tof2_pid);
00828 status = m_tuple12->addIndexedItem ("mprob_pid", m_ngch2,m_prob_pid);
00829 status = m_tuple12->addIndexedItem ("mptrk_pid", m_ngch2,m_ptrk_pid);
00830 status = m_tuple12->addIndexedItem ("mcost_pid", m_ngch2,m_cost_pid);
00831 }
00832 else {
00833 log << MSG::ERROR << " Cannot book N-tuple:" << long(m_tuple12) << endmsg;
00834 return StatusCode::FAILURE;
00835 }
00836 }
00837
00838 NTuplePtr nt13(ntupleSvc(), "DQAFILE/CheckTofNeAll");
00839 if ( nt13 ) m_tuple13 = nt13;
00840 else {
00841 m_tuple13 = ntupleSvc()->book ("DQAFILE/CheckTofNeAll", CLID_ColumnWiseTuple, "ks N-Tuple example");
00842 if ( m_tuple13 ) {
00843 status = m_tuple13->addItem ("ngneu", m_nggneu, 0, 10000);
00844 status = m_tuple13->addIndexedItem ("shwidtof", m_nggneu,m_shwidtof);
00845 status = m_tuple13->addIndexedItem ("numHits", m_nggneu,m_numHits);
00846 status = m_tuple13->addIndexedItem ("secondmoment", m_nggneu,m_secondmoment);
00847 status = m_tuple13->addIndexedItem ("mx", m_nggneu,m_x);
00848 status = m_tuple13->addIndexedItem ("my", m_nggneu,m_y);
00849 status = m_tuple13->addIndexedItem ("mz", m_nggneu,m_z);
00850 status = m_tuple13->addIndexedItem ("cosemc", m_nggneu,m_cosemc);
00851 status = m_tuple13->addIndexedItem ("phiemc", m_nggneu,m_phiemc);
00852 status = m_tuple13->addIndexedItem ("energy", m_nggneu,m_energy);
00853 status = m_tuple13->addIndexedItem ("eseed", m_nggneu,m_eSeed);
00854 status = m_tuple13->addIndexedItem ("me9", m_nggneu,m_e3x3);
00855 status = m_tuple13->addIndexedItem ("me25", m_nggneu,m_e5x5);
00856 status = m_tuple13->addIndexedItem ("mlat", m_nggneu,m_lat);
00857 status = m_tuple13->addIndexedItem ("ma20", m_nggneu,m_a20);
00858 status = m_tuple13->addIndexedItem ("ma42", m_nggneu,m_a42);
00859 }
00860 else {
00861 log << MSG::ERROR << " Cannot book N-tuple:" << long(m_tuple13) << endmsg;
00862 return StatusCode::FAILURE;
00863 }
00864 }
00865
00866 if(service("THistSvc", m_thsvc).isFailure()) {
00867 log << MSG::ERROR << "Couldn't get THistSvc" << endreq;
00868 return StatusCode::FAILURE;
00869 }
00870
00871 string strdecaymode[11] = {"D02KPi","D02KPiPi0","D02KPiPiPi","D02KPiPiPiPi0","D02KsPiPi","D02KsPiPiPi0",\
00872 "DC2KPiPi","DC2KPiPiPi0","DC2KsPiPi0","DC2KsPiPiPi","DC2KKPi"};
00873 for (int i=0;i!=11;i++)
00874 {
00875 regDecayModeHistogram(m_thsvc,strdecaymode[i]);
00876 }
00877 string strDdecaymode[2] = {"D0","DC"};
00878 regDecayModeHistogram(m_thsvc,strDdecaymode[0]);
00879 regDecayModeHistogram(m_thsvc,strDdecaymode[1]);
00880 string strtrack[14] = {"D02KPi_kaon","D02KPi_pion","D02KPiPi0_kaon","D02KPiPi0_pion","D02KsPiPi_pion1",\
00881 "D02KsPiPi_pion2","D02KsPiPi_pion3","D02KsPiPi_pion4","DC2KPiPi_kaon","DC2KPiPi_pion1","DC2KPiPi_pion2",\
00882 "DC2KsPiPi0_pion1","DC2KsPiPi0_pion2","DC2KsPiPi0_pion3" };
00883 for (int i=0;i!=14;i++)
00884 {
00885 regTrackHistogram(m_thsvc,strtrack[i]);
00886 }
00887 string strphoton[2] = {"D02KPiPi0_photon1","D02KPiPi0_photon2"};
00888 regPhotonHistogram(m_thsvc,strphoton[0]);
00889 regPhotonHistogram(m_thsvc,strphoton[1]);
00890 string strtrackdedx[7] = {"D02KPi_kaon","D02KPi_pion","D02KPiPi0_kaon","D02KPiPi0_pion","DC2KPiPi_kaon","DC2KPiPi_pion1","DC2KPiPi_pion2"};
00891 for (int i=0;i!=7;i++)
00892 {
00893 regTrackDedxHistogram(m_thsvc,strtrackdedx[i]);
00894 }
00895 string strtracktof[7] = {"D02KPi_kaon","D02KPi_pion","D02KPiPi0_kaon","D02KPiPi0_pion", "DC2KPiPi_kaon", "DC2KPiPi_pion1", "DC2KPiPi_pion2"};
00896 for (int i=0;i!=7;i++)
00897 {
00898 regTrackTofHistogram(m_thsvc,strtracktof[i]);
00899 }
00900 string strpi0[2] = {"D02KPiPi0","DC2KsPiPi0"};
00901 for (int i=0;i!=2;i++)
00902 {
00903 regPi0Histogram(m_thsvc,strpi0[i]);
00904 }
00905 string strks[2] = {"D02KsPiPi","DC2KsPiPi0"};
00906 for (int i=0;i!=2;i++)
00907 {
00908 regKsHistogram(m_thsvc,strks[i]);
00909 }
00910
00911 StatusCode sc = service("BestDTagSvc", m_bestDSvc);
00912 if ( sc.isFailure() ){
00913 log << MSG::FATAL << "Could not load BestDTagSvc!" << endreq;
00914 return sc;
00915 }
00916
00917
00918
00919
00920 log << MSG::INFO << "successfully return from initialize()" <<endmsg;
00921 return StatusCode::SUCCESS;
00922
00923 }
00924
00925
00926 StatusCode DQADtag::execute() {
00927
00928
00929
00930 MsgStream log(msgSvc(), name());
00931 log << MSG::INFO << "in execute()" << endreq;
00932
00933 setFilterPassed(false);
00934
00935 SmartDataPtr<Event::EventHeader> eventHeader(eventSvc(),"/Event/EventHeader");
00936 int run=eventHeader->runNumber();
00937 int event=eventHeader->eventNumber();
00938 log << MSG::DEBUG <<"run, evtnum = "
00939 << run << " , "
00940 << event <<endreq;
00941
00942 m_run = eventHeader->runNumber();
00943 m_rec = eventHeader->eventNumber();
00944 m_evtrun = eventHeader->runNumber();
00945 m_evtrec = eventHeader->eventNumber();
00946
00948
00950 if(m_ReadBeamEFromDB&&m_irun!=run){
00951 m_irun=run;
00952 if(m_readDb.isRunValid(m_irun))
00953 m_beamE=m_readDb.getbeamE(m_irun);
00954 }
00955
00956 double beamE=m_beamE;
00957 m_evtbeamE = m_beamE;
00958
00959 if (m_debug)
00960 cout<<"event "<<event<<endl;
00961 Ncut_DQADTagAlg[0]++;
00962 if (Ncut_DQADTagAlg[0]%10000 == 0)
00963 {
00964 cout<<"Ncut_DQADTagAlg[0]: "<<Ncut_DQADTagAlg[0]<<endl;
00965 }
00966
00967
00968 SmartDataPtr<EvtRecEvent> evtRecEvent(eventSvc(), EventModel::EvtRec::EvtRecEvent);
00969 log << MSG::INFO << "get event tag OK" << endreq;
00970 log << MSG::DEBUG <<"ncharg, nneu, tottks = "
00971 << evtRecEvent->totalCharged() << " , "
00972 << evtRecEvent->totalNeutral() << " , "
00973 << evtRecEvent->totalTracks() <<endreq;
00974
00975 m_nch = evtRecEvent->totalCharged();
00976 m_nneu = evtRecEvent->totalNeutral();
00977 m_evtnch = evtRecEvent->totalCharged();
00978 m_evtnneu = evtRecEvent->totalNeutral();
00979
00980 SmartDataPtr<EvtRecTrackCol> evtRecTrkCol(eventSvc(), EventModel::EvtRec::EvtRecTrackCol);
00981
00982
00983 Hep3Vector xorigin(0,0,0);
00984 IVertexDbSvc* vtxsvc;
00985 HepPoint3D vx(0., 0., 0.);
00986 HepSymMatrix Evx(3, 0);
00987 Gaudi::svcLocator()->service("VertexDbSvc", vtxsvc);
00988 if (vtxsvc->isVertexValid()) {
00989 double* vertex = vtxsvc->PrimaryVertex();
00990 double* vertexsigma = vtxsvc->SigmaPrimaryVertex();
00991 xorigin.setX(vertex[0]);
00992 xorigin.setY(vertex[1]);
00993 xorigin.setZ(vertex[2]);
00994 vx[0] = vertex[0];
00995 vx[1] = vertex[1];
00996 vx[2] = vertex[2];
00997 Evx[0][0] = vertexsigma[0]*vertexsigma[0];
00998 Evx[1][1] = vertexsigma[1]*vertexsigma[1];
00999 Evx[2][2] = vertexsigma[2]*vertexsigma[2];
01000 m_privxpar.setVx(vx);
01001 m_privxpar.setEvx(Evx);
01002 }
01003
01004
01005
01006
01007
01008
01009
01010
01011
01012
01013
01014
01015
01016
01017
01018
01019
01020
01021
01022 SmartDataPtr<EvtRecDTagCol> evtRecDTagCol(eventSvc(), EventModel::EvtRec::EvtRecDTagCol);
01023 if ( ! evtRecDTagCol ) {
01024 cout << "Could not find EvtRecDTagCol" << endl;
01025 return StatusCode::SUCCESS;
01026 }
01027
01028 EvtRecDTag* bestDTag = NULL;
01029 bestDTag = m_bestDSvc->getSingleTag(-1);
01030 if (bestDTag == NULL )
01031 return StatusCode::SUCCESS;
01032 Ncut_DQADTagAlg[1]++;
01033
01034 m_rflag = m_bestDSvc->isCosmicOrLepton();
01035 SmartRefVector<EvtRecTrack> tracks=(bestDTag)->tracks();
01036 SmartRefVector<EvtRecTrack> othertracks=(bestDTag)->otherTracks();
01037 SmartRefVector<EvtRecTrack> othershowers=(bestDTag)->otherShowers();
01038 SmartRefVector<EvtRecTrack> showers=(bestDTag)->showers();
01039
01040
01041
01042
01043 double g_mBC=(bestDTag)->mBC();
01044 double g_deltE=(bestDTag)->deltaE();
01045
01046
01047
01048
01049 int nCharge = 0;
01050
01051 const int numMode = 11;
01052 int indexD[numMode], indexTof[numMode], indexDedx[numMode],numDCand[numMode];
01053 for (int i=0;i!=numMode;i++)
01054 {
01055 indexD[i] = 0;
01056 indexTof[i] = 0;
01057 indexDedx[i] = 0;
01058 numDCand[i] = 0;
01059 }
01060 int indexDAll = 0;
01061 int indexD0All = 0;
01062 int indexDCAll = 0;
01063
01064
01065 {
01066 bool iswritten = 1;
01067
01068
01069
01070
01071
01072
01073
01074 if (m_checkDecayMode < 3)
01075 {
01076
01077
01078
01079
01080
01081
01082
01083
01084
01085 m_dtagbeamE = m_beamE;
01086 m_mode =(bestDTag)->decayMode();
01087 m_charge =(bestDTag)->charge();
01088 m_charm =(bestDTag)->charm();
01089 m_numofchildren =(bestDTag)->numOfChildren();
01090 m_mass =(bestDTag)->mass();
01091 m_mBC =(bestDTag)->mBC();
01092 m_e =(bestDTag)->beamE();
01093 HepLorentzVector p4D =(bestDTag)->p4();
01094 m_p = p4D.rho();
01095 p4D.boost(-0.011,0,0);
01096 m_p_CMS = p4D.rho();
01097 fill(m_p4_CMS, p4D);
01098 m_deltae =(bestDTag)->deltaE();
01099
01100 SmartRefVector<EvtRecTrack> tracks=(bestDTag)->tracks();
01101 SmartRefVector<EvtRecTrack> othertracks=(bestDTag)->otherTracks();
01102 SmartRefVector<EvtRecTrack> othershowers=(bestDTag)->otherShowers();
01103 SmartRefVector<EvtRecTrack> showers=(bestDTag)->showers();
01104
01105
01106 m_nshower = showers.size();
01107 m_ntrk =tracks.size();
01108 m_nothertrk =othertracks.size();
01109 m_nothershower = othershowers.size();
01110
01111
01112
01113 indexDAll++;
01114 if((bestDTag)->decayMode()==EvtRecDTag::kD0toKPi) {
01115 const int MODE = 0;
01116 fillDecayModeItem(bestDTag,"D02KPi" );
01117 fillTrackItem(tracks[0],"D02KPi_kaon",3 ,xorigin);
01118 fillTrackItem(tracks[1],"D02KPi_pion",2 ,xorigin);
01119 indexD[MODE]++;
01120 if (m_checkDedx)
01121 {
01122
01123
01124 fillTrackDedxItem(tracks[0],"D02KPi_kaon",3 );
01125 fillTrackDedxItem(tracks[1],"D02KPi_pion",2 );
01126 }
01127 if (m_checkTof)
01128 {
01129
01130
01131 fillTrackTofItem(tracks[0],"D02KPi_kaon",3 );
01132 fillTrackTofItem(tracks[1],"D02KPi_pion",2 );
01133 }
01134 }
01135
01136 if((bestDTag)->decayMode()==EvtRecDTag::kD0toKPiPi0) {
01137 const int MODE = 1;
01138
01139 DQAPi0Info pi0info;
01140 pi0info.setchilds(showers[0],showers[1]);
01141 if (pi0info.calculate())
01142 {
01143 if (pi0info.m() >m_mpi0Max || pi0info.m() < m_mpi0Min)
01144 iswritten = 0;
01145
01146 fillPi0Item(showers,"D02KPiPi0" ,&pi0info );
01147 fillDecayModeItem(bestDTag,"D02KPiPi0" );
01148 fillTrackItem(tracks[0],"D02KPiPi0_kaon",3 ,xorigin);
01149 fillTrackItem(tracks[1],"D02KPiPi0_pion",2 ,xorigin);
01150 fillPhotonItem(showers[0],"D02KPiPi0_photon1" );
01151 fillPhotonItem(showers[1],"D02KPiPi0_photon2" );
01152 indexD[MODE]++;
01153 if (m_checkDedx)
01154 {
01155
01156
01157 fillTrackDedxItem(tracks[0],"D02KPiPi0_kaon",3 );
01158 fillTrackDedxItem(tracks[1],"D02KPiPi0_pion",2 );
01159 }
01160 if (m_checkTof)
01161 {
01162
01163
01164 fillTrackTofItem(tracks[0],"D02KPiPi0_kaon",3 );
01165 fillTrackTofItem(tracks[1],"D02KPiPi0_pion",2 );
01166 }
01167 }
01168 }
01169
01170
01171
01172
01173 if((bestDTag)->decayMode()==EvtRecDTag::kD0toKPiPiPi) {
01174 const int MODE = 2;
01175 fillDecayModeItem(bestDTag,"D02KPiPiPi" );
01176
01177 RecMdcKalTrack* mdcKalTrk1 = tracks[0]->mdcKalTrack();
01178 RecMdcKalTrack* mdcKalTrk2 = tracks[1]->mdcKalTrack();
01179 RecMdcKalTrack* mdcKalTrk3 = tracks[2]->mdcKalTrack();
01180 RecMdcKalTrack* mdcKalTrk4 = tracks[3]->mdcKalTrack();
01181 RecMdcKalTrack::setPidType (RecMdcKalTrack::kaon);
01182 HepLorentzVector p4kaon = mdcKalTrk1->p4(xmass[3]);
01183 RecMdcKalTrack::setPidType (RecMdcKalTrack::pion);
01184 HepLorentzVector p4pion1 = mdcKalTrk2->p4(xmass[2]);
01185 HepLorentzVector p4pion2 = mdcKalTrk3->p4(xmass[2]);
01186 HepLorentzVector p4pion3 = mdcKalTrk4->p4(xmass[2]);
01187 m_D02KPiPiPi_kaon_pp = p4kaon.rho();
01188 m_D02KPiPiPi_pion1_pp = p4pion1.rho();
01189 m_D02KPiPiPi_pion2_pp = p4pion2.rho();
01190 m_D02KPiPiPi_pion3_pp = p4pion3.rho();
01191 m_D02KPiPiPi_kaon_Id = tracks[0]->trackId();
01192 m_D02KPiPiPi_pion1_Id = tracks[1]->trackId();
01193 m_D02KPiPiPi_pion2_Id = tracks[2]->trackId();
01194 m_D02KPiPiPi_pion3_Id = tracks[3]->trackId();
01195 indexD[MODE]++;
01196 }
01197
01198
01199
01200 if((bestDTag)->decayMode()==EvtRecDTag::kD0toKPiPiPiPi0) {
01201 const int MODE = 3;
01202 DQAPi0Info pi0info;
01203 pi0info.setchilds(showers[0],showers[1]);
01204 if (pi0info.calculate()) {
01205 if (pi0info.m() >m_mpi0Max || pi0info.m() < m_mpi0Min)
01206 iswritten = 0;
01207 fillPi0Item(showers,"D02KPiPiPiPi0" ,&pi0info );
01208
01209
01210 fillDecayModeItem(bestDTag,"D02KPiPiPiPi0" );
01211
01212 RecMdcKalTrack* mdcKalTrk1 = tracks[0]->mdcKalTrack();
01213 RecMdcKalTrack* mdcKalTrk2 = tracks[1]->mdcKalTrack();
01214 RecMdcKalTrack* mdcKalTrk3 = tracks[2]->mdcKalTrack();
01215 RecMdcKalTrack* mdcKalTrk4 = tracks[3]->mdcKalTrack();
01216 RecMdcKalTrack::setPidType (RecMdcKalTrack::kaon);
01217 HepLorentzVector p4kaon = mdcKalTrk1->p4(xmass[3]);
01218 RecMdcKalTrack::setPidType (RecMdcKalTrack::pion);
01219 HepLorentzVector p4pion1 = mdcKalTrk2->p4(xmass[2]);
01220 HepLorentzVector p4pion2 = mdcKalTrk3->p4(xmass[2]);
01221 HepLorentzVector p4pion3 = mdcKalTrk4->p4(xmass[2]);
01222 m_D02KPiPiPiPi0_kaon_pp = p4kaon.rho();
01223 m_D02KPiPiPiPi0_pion1_pp = p4pion1.rho();
01224 m_D02KPiPiPiPi0_pion2_pp = p4pion2.rho();
01225 m_D02KPiPiPiPi0_pion3_pp = p4pion3.rho();
01226 m_D02KPiPiPiPi0_kaon_Id = tracks[0]->trackId();
01227 m_D02KPiPiPiPi0_pion1_Id = tracks[1]->trackId();
01228 m_D02KPiPiPiPi0_pion2_Id = tracks[2]->trackId();
01229 m_D02KPiPiPiPi0_pion3_Id = tracks[3]->trackId();
01230 indexD[MODE]++;
01231 }
01232 }
01233
01234
01235
01236 if((bestDTag)->decayMode()==EvtRecDTag::kD0toKsPiPi) {
01237 const int MODE = 4;
01238 DQAKsInfo ksinfo;
01239 ksinfo.setchilds(tracks[0],tracks[1]);
01240 ksinfo.setVtxPar(m_vxpar);
01241 ksinfo.setPrimaryVtxPar(m_privxpar);
01242 if (ksinfo.calculate()) {
01243
01244 fillDecayModeItem(bestDTag,"D02KsPiPi" );
01245 fillTrackItem(tracks[0],"D02KsPiPi_pion1",2 ,xorigin);
01246 fillTrackItem(tracks[1],"D02KsPiPi_pion2",2 ,xorigin);
01247 fillTrackItem(tracks[2],"D02KsPiPi_pion3",2 ,xorigin);
01248 fillTrackItem(tracks[3],"D02KsPiPi_pion4",2 ,xorigin);
01249 fillKsItem(tracks,"D02KsPiPi" ,&ksinfo);
01250 indexD[MODE]++;
01251
01252
01253
01254
01255 }
01256 }
01257
01258
01259
01260 if((bestDTag)->decayMode()==EvtRecDTag::kD0toKsPiPiPi0) {
01261 const int MODE = 5;
01262 DQAKsInfo ksinfo;
01263 ksinfo.setchilds(tracks[0],tracks[1]);
01264 ksinfo.setVtxPar(m_vxpar);
01265 ksinfo.setPrimaryVtxPar(m_privxpar);
01266 if (ksinfo.calculate()) {
01267 DQAPi0Info pi0info;
01268 pi0info.setchilds(showers[0],showers[1]);
01269 if (pi0info.calculate()) {
01270 if (pi0info.m() >m_mpi0Max || pi0info.m() < m_mpi0Min)
01271 iswritten = 0;
01272 fillPi0Item(showers,"D02KsPiPiPi0" ,&pi0info );
01273
01274 fillKsItem(tracks,"D02KsPiPiPi0" ,&ksinfo);
01275
01276
01277
01278 fillDecayModeItem(bestDTag,"D02KsPiPiPi0" );
01279
01280 RecMdcKalTrack* mdcKalTrk1 = tracks[0]->mdcKalTrack();
01281 RecMdcKalTrack* mdcKalTrk2 = tracks[1]->mdcKalTrack();
01282 RecMdcKalTrack* mdcKalTrk3 = tracks[2]->mdcKalTrack();
01283 RecMdcKalTrack* mdcKalTrk4 = tracks[3]->mdcKalTrack();
01284 RecMdcKalTrack::setPidType (RecMdcKalTrack::pion);
01285 HepLorentzVector p4pion1 = mdcKalTrk1->p4(xmass[2]);
01286 HepLorentzVector p4pion2 = mdcKalTrk2->p4(xmass[2]);
01287 HepLorentzVector p4pion3 = mdcKalTrk3->p4(xmass[2]);
01288 HepLorentzVector p4pion4 = mdcKalTrk4->p4(xmass[2]);
01289 m_D02KsPiPiPi0_pion1_pp = p4pion1.rho();
01290 m_D02KsPiPiPi0_pion2_pp = p4pion2.rho();
01291 m_D02KsPiPiPi0_pion3_pp = p4pion3.rho();
01292 m_D02KsPiPiPi0_pion4_pp = p4pion4.rho();
01293 m_D02KsPiPiPi0_pion1_Id = tracks[0]->trackId();
01294 m_D02KsPiPiPi0_pion2_Id = tracks[1]->trackId();
01295 m_D02KsPiPiPi0_pion3_Id = tracks[2]->trackId();
01296 m_D02KsPiPiPi0_pion4_Id = tracks[3]->trackId();
01297 indexD[MODE]++;
01298 }
01299 }
01300 }
01301
01302
01303
01304 if((bestDTag)->decayMode()==EvtRecDTag::kDptoKPiPi) {
01305 const int MODE = 6;
01306 fillDecayModeItem(bestDTag,"DC2KPiPi" );
01307 fillTrackItem(tracks[0],"DC2KPiPi_kaon",3 ,xorigin);
01308 fillTrackItem(tracks[1],"DC2KPiPi_pion1",2 ,xorigin);
01309 fillTrackItem(tracks[2],"DC2KPiPi_pion2",2 ,xorigin);
01310 if (m_checkTof)
01311 {
01312
01313
01314 fillTrackTofItem(tracks[0],"DC2KPiPi_kaon",3 );
01315 fillTrackTofItem(tracks[1],"DC2KPiPi_pion1",2 );
01316 fillTrackTofItem(tracks[2],"DC2KPiPi_pion2",2 );
01317 }
01318 if (m_checkDedx)
01319 {
01320 fillTrackDedxItem(tracks[0],"DC2KPiPi_kaon",3 );
01321 fillTrackDedxItem(tracks[1],"DC2KPiPi_pion1",2 );
01322 fillTrackDedxItem(tracks[2],"DC2KPiPi_pion2",2 );
01323 }
01324 indexD[MODE]++;
01325 }
01326
01327
01328
01329
01330 if((bestDTag)->decayMode()==EvtRecDTag::kDptoKPiPiPi0) {
01331 const int MODE = 7;
01332 DQAPi0Info pi0info;
01333 pi0info.setchilds(showers[0],showers[1]);
01334 if (pi0info.calculate()) {
01335 if (pi0info.m() >m_mpi0Max || pi0info.m() < m_mpi0Min)
01336 iswritten = 0;
01337 fillPi0Item(showers,"DC2KPiPiPi0" ,&pi0info );
01338
01339 fillDecayModeItem(bestDTag,"DC2KPiPiPi0" );
01340
01341 fillTrackItem(tracks[0],"DC2KPiPiPi0_kaon",3 ,xorigin);
01342 fillTrackItem(tracks[1],"DC2KPiPiPi0_pion1",2 ,xorigin);
01343 fillTrackItem(tracks[2],"DC2KPiPiPi0_pion2",2 ,xorigin);
01344 indexD[MODE]++;
01345 }
01346 }
01347
01348
01349
01350 if((bestDTag)->decayMode()==EvtRecDTag::kDptoKsPiPi0) {
01351 const int MODE = 8;
01352 DQAPi0Info pi0info;
01353 pi0info.setchilds(showers[0],showers[1]);
01354 if (pi0info.calculate()) {
01355 DQAKsInfo ksinfo;
01356 ksinfo.setchilds(tracks[0],tracks[1]);
01357 ksinfo.setVtxPar(m_vxpar);
01358 ksinfo.setPrimaryVtxPar(m_privxpar);
01359 if (ksinfo.calculate()) {
01360 if (pi0info.m() >m_mpi0Max || pi0info.m() < m_mpi0Min)
01361 iswritten = 0;
01362 fillPi0Item(showers,"DC2KsPiPi0" ,&pi0info );
01363 fillDecayModeItem(bestDTag,"DC2KsPiPi0" );
01364 fillTrackItem(tracks[0],"DC2KsPiPi0_pion1",2 ,xorigin);
01365 fillTrackItem(tracks[1],"DC2KsPiPi0_pion2",2 ,xorigin);
01366 fillTrackItem(tracks[2],"DC2KsPiPi0_pion3",2 ,xorigin);
01367 fillKsItem(tracks,"DC2KsPiPi0" ,&ksinfo);
01368
01369
01370
01371 indexD[MODE]++;
01372 }
01373 }
01374 }
01375
01376
01377
01378 if((bestDTag)->decayMode()==EvtRecDTag::kDptoKsPiPiPi) {
01379 const int MODE = 9;
01380 DQAKsInfo ksinfo;
01381 ksinfo.setchilds(tracks[0],tracks[1]);
01382 ksinfo.setVtxPar(m_vxpar);
01383 ksinfo.setPrimaryVtxPar(m_privxpar);
01384 if (ksinfo.calculate()) {
01385
01386 fillKsItem(tracks,"DC2KsPiPiPi" ,&ksinfo);
01387
01388
01389
01390 fillDecayModeItem(bestDTag,"DC2KsPiPiPi" );
01391
01392 RecMdcKalTrack* mdcKalTrk1 = tracks[0]->mdcKalTrack();
01393 RecMdcKalTrack* mdcKalTrk2 = tracks[1]->mdcKalTrack();
01394 RecMdcKalTrack* mdcKalTrk3 = tracks[2]->mdcKalTrack();
01395 RecMdcKalTrack* mdcKalTrk4 = tracks[3]->mdcKalTrack();
01396 RecMdcKalTrack* mdcKalTrk5 = tracks[4]->mdcKalTrack();
01397 RecMdcKalTrack::setPidType (RecMdcKalTrack::pion);
01398 HepLorentzVector p4pion1 = mdcKalTrk1->p4(xmass[2]);
01399 HepLorentzVector p4pion2 = mdcKalTrk2->p4(xmass[2]);
01400 HepLorentzVector p4pion3 = mdcKalTrk3->p4(xmass[2]);
01401 HepLorentzVector p4pion4 = mdcKalTrk4->p4(xmass[2]);
01402 HepLorentzVector p4pion5 = mdcKalTrk5->p4(xmass[2]);
01403 m_DC2KsPiPiPi_pion1_pp = p4pion1.rho();
01404 m_DC2KsPiPiPi_pion2_pp = p4pion2.rho();
01405 m_DC2KsPiPiPi_pion3_pp = p4pion3.rho();
01406 m_DC2KsPiPiPi_pion4_pp = p4pion4.rho();
01407 m_DC2KsPiPiPi_pion5_pp = p4pion5.rho();
01408 m_DC2KsPiPiPi_pion1_Id = tracks[0]->trackId();
01409 m_DC2KsPiPiPi_pion2_Id = tracks[1]->trackId();
01410 m_DC2KsPiPiPi_pion3_Id = tracks[2]->trackId();
01411 m_DC2KsPiPiPi_pion4_Id = tracks[3]->trackId();
01412 m_DC2KsPiPiPi_pion5_Id = tracks[4]->trackId();
01413 indexD[MODE]++;
01414 }
01415 }
01416 if((bestDTag)->decayMode()==EvtRecDTag::kDptoKKPi) {
01417 const int MODE = 10;
01418 fillDecayModeItem(bestDTag,"DC2KKPi" );
01419
01420 RecMdcKalTrack* mdcKalTrk1 = tracks[0]->mdcKalTrack();
01421 RecMdcKalTrack* mdcKalTrk2 = tracks[1]->mdcKalTrack();
01422 RecMdcKalTrack* mdcKalTrk3 = tracks[2]->mdcKalTrack();
01423 RecMdcKalTrack::setPidType (RecMdcKalTrack::kaon);
01424 HepLorentzVector p4kaon1 = mdcKalTrk1->p4(xmass[3]);
01425 HepLorentzVector p4kaon2 = mdcKalTrk2->p4(xmass[3]);
01426 RecMdcKalTrack::setPidType (RecMdcKalTrack::pion);
01427 HepLorentzVector p4pion = mdcKalTrk3->p4(xmass[2]);
01428 m_DC2KKPi_kaon1_pp = p4kaon1.rho();
01429 m_DC2KKPi_kaon2_pp = p4kaon2.rho();
01430 m_DC2KKPi_pion_pp = p4pion.rho();
01431 m_DC2KKPi_kaon1_Id = tracks[0]->trackId();
01432 m_DC2KKPi_kaon2_Id = tracks[1]->trackId();
01433 m_DC2KKPi_pion_Id = tracks[2]->trackId();
01434 indexD[MODE]++;
01435 }
01436 if ((bestDTag)->charge() == 0)
01437 {
01438 m_D0_mBC = (bestDTag)->mBC();
01439 m_D0_deltE = (bestDTag)->deltaE();
01440 m_D0_mass = (bestDTag)->mass();
01441 indexD0All++;
01442 }
01443 if ((bestDTag)->charge() != 0)
01444 {
01445 m_DC_mBC = (bestDTag)->mBC();
01446 m_DC_deltE = (bestDTag)->deltaE();
01447 m_DC_mass = (bestDTag)->mass();
01448 indexDCAll++;
01449 }
01450 }
01451 }
01452 m_numAllMode = indexDAll;
01453 m_numD0Mode = indexD0All;
01454 m_numDCMode = indexDCAll;
01455 m_recNumD02KPi = indexD[0];
01456 m_recNumD02KPiPi0 = indexD[1];
01457 m_recNumD02KPiPiPi = indexD[2];
01458 m_recNumD02KPiPiPiPi0 = indexD[3];
01459 m_recNumD02KsPiPi = indexD[4];
01460 m_recNumD02KsPiPiPi0 = indexD[5];
01461 m_recNumDC2KPiPi = indexD[6];
01462 m_recNumDC2KPiPiPi0 = indexD[7];
01463 m_recNumDC2KsPiPi0 = indexD[8];
01464 m_recNumDC2KsPiPiPi = indexD[9];
01465 m_recNumDC2KKPi = indexD[10];
01466 int taggedMode = -1;
01467 for (int i=0; i!=11; i++)
01468 {
01469 if (indexD[i] == 1 )
01470 {
01471 taggedMode = i;
01472 }
01473 }
01474
01475 Vint iGood;
01476
01477 for(int i = 0; i < evtRecEvent->totalCharged(); i++){
01478 EvtRecTrackIterator itTrk=evtRecTrkCol->begin() + i;
01479 if(!(*itTrk)->isMdcTrackValid()) continue;
01480 if (!(*itTrk)->isMdcKalTrackValid()) continue;
01481 RecMdcTrack *mdcTrk = (*itTrk)->mdcTrack();
01482 RecMdcKalTrack *mdcKalTrk = (*itTrk)->mdcKalTrack();
01483
01484 double pch =mdcTrk->p();
01485 double x0 =mdcTrk->x();
01486 double y0 =mdcTrk->y();
01487 double z0 =mdcTrk->z();
01488 double phi0=mdcTrk->helix(1);
01489 double xv=xorigin.x();
01490 double yv=xorigin.y();
01491 double Rxy=fabs((x0-xv)*cos(phi0)+(y0-yv)*sin(phi0));
01492 m_vtxTrkId = (*itTrk)->trackId();
01493 m_vx0 = x0;
01494 m_vy0 = y0;
01495 m_vz0 = z0-xorigin.z();
01496 m_vr0 = Rxy;
01497 m_Vct=cos(mdcTrk->theta());
01498 if (m_writeTuple && m_checkVtx)
01499
01500 if(fabs(m_vz0) >= m_vz0cut) continue;
01501 if(m_vr0 >= m_vr0cut) continue;
01502 if(fabs(m_Vct)>=m_cthcut) continue;
01503
01504 iGood.push_back((*itTrk)->trackId());
01505 nCharge += mdcTrk->charge();
01506 }
01507 int nGood = iGood.size();
01508
01512
01513 if ( m_writeTuple && (m_checkDedx || m_checkTof))
01514 {
01515 Vint iGam;
01516 iGam.clear();
01517 for(int i = evtRecEvent->totalCharged(); i< evtRecEvent->totalTracks(); i++) {
01518 EvtRecTrackIterator itTrk=evtRecTrkCol->begin() + i;
01519 if(!(*itTrk)->isEmcShowerValid()) continue;
01520 RecEmcShower *emcTrk = (*itTrk)->emcShower();
01521 Hep3Vector emcpos(emcTrk->x(), emcTrk->y(), emcTrk->z());
01522
01523 double dthe = 200.;
01524 double dphi = 200.;
01525 double dang = 200.;
01526 for(int j = 0; j < evtRecEvent->totalCharged(); j++) {
01527 EvtRecTrackIterator jtTrk = evtRecTrkCol->begin() + j;
01528 if(!(*jtTrk)->isExtTrackValid()) continue;
01529 RecExtTrack *extTrk = (*jtTrk)->extTrack();
01530 if(extTrk->emcVolumeNumber() == -1) continue;
01531 Hep3Vector extpos = extTrk->emcPosition();
01532
01533 double angd = extpos.angle(emcpos);
01534 double thed = extpos.theta() - emcpos.theta();
01535 double phid = extpos.deltaPhi(emcpos);
01536 thed = fmod(thed+CLHEP::twopi+CLHEP::twopi+pi, CLHEP::twopi) - CLHEP::pi;
01537 phid = fmod(phid+CLHEP::twopi+CLHEP::twopi+pi, CLHEP::twopi) - CLHEP::pi;
01538
01539 if(fabs(thed) < fabs(dthe)) dthe = thed;
01540 if(fabs(phid) < fabs(dphi)) dphi = phid;
01541 if(angd < dang) dang = angd;
01542 }
01543 if(dang>=200) continue;
01544 double eraw = emcTrk->energy();
01545 dthe = dthe * 180 / (CLHEP::pi);
01546 dphi = dphi * 180 / (CLHEP::pi);
01547 dang = dang * 180 / (CLHEP::pi);
01548 double m_dthe = dthe;
01549 double m_dphi = dphi;
01550 double m_dang = dang;
01551 double m_eraw = eraw;
01552 double theta=cos(emcpos.theta());
01553 if ((fabs(theta) > m_Barrel_th && fabs(theta) < m_Endcap_th_1) || fabs(theta) > m_Endcap_th_2 ) continue;
01554
01555 if((emcTrk->module()==0 || emcTrk->module()==2)&&eraw < m_energyThreshold_e) continue;
01556 else if( emcTrk->module()==1 && eraw < m_energyThreshold_b) continue;
01557
01558 if(dang < m_gammaAngCut) continue;
01559
01560
01561
01562 iGam.push_back((*itTrk)->trackId());
01563 }
01564
01565
01566
01567
01568 int nGam = iGam.size();
01569
01570
01571
01572
01573
01574 Vp4 pGam;
01575 pGam.clear();
01576 for(int i = 0; i < nGam; i++) {
01577 EvtRecTrackIterator itTrk = evtRecTrkCol->begin() + iGam[i];
01578 RecEmcShower* emcTrk = (*itTrk)->emcShower();
01579 double eraw = emcTrk->energy();
01580 double phi = emcTrk->phi();
01581 double the = emcTrk->theta();
01582 HepLorentzVector ptrk;
01583 ptrk.setPx(eraw*sin(the)*cos(phi));
01584 ptrk.setPy(eraw*sin(the)*sin(phi));
01585 ptrk.setPz(eraw*cos(the));
01586 ptrk.setE(eraw);
01587
01588 pGam.push_back(ptrk);
01589 }
01590
01591
01592
01593
01594 if (m_checkDedx)
01595 {
01596 m_ngch = nGood;
01597 for(int ii = 0; ii < nGood; ii++) {
01598
01599 m_ptrk[ii] = 999.0;
01600 m_chie[ii] = 999.0;
01601 m_chimu[ii] = 999.0;
01602 m_chipi[ii] = 999.0;
01603 m_chik[ii] = 999.0;
01604 m_chip[ii] = 999.0;
01605 m_ghit[ii] = 999.0;
01606 m_thit[ii] = 999.0;
01607 m_probPH[ii] = 1999.0;
01608 m_normPH[ii] = 999.0;
01609 }
01610 int indx0=0;
01611 for(int i = 0; i < nGood; i++) {
01612 EvtRecTrackIterator itTrk = evtRecTrkCol->begin() + iGood[i];
01613 if(!(*itTrk)->isMdcTrackValid()) continue;
01614 if(!(*itTrk)->isMdcDedxValid())continue;
01615 RecMdcTrack* mdcTrk = (*itTrk)->mdcTrack();
01616 RecMdcDedx* dedxTrk = (*itTrk)->mdcDedx();
01617 m_trkiddedx[indx0] = (*itTrk)->trackId();
01618 m_ptrk[indx0] = mdcTrk->p();
01619 m_chie[indx0] = dedxTrk->chiE();
01620 m_chimu[indx0] = dedxTrk->chiMu();
01621 m_chipi[indx0] = dedxTrk->chiPi();
01622 m_chik[indx0] = dedxTrk->chiK();
01623 m_chip[indx0] = dedxTrk->chiP();
01624 m_ghit[indx0] = dedxTrk->numGoodHits();
01625 m_thit[indx0] = dedxTrk->numTotalHits();
01626 m_probPH[indx0] = dedxTrk->probPH();
01627 m_normPH[indx0] = dedxTrk->normPH();
01628 indx0++;
01629 }
01630
01631 }
01632
01633
01634
01635 if (m_checkTof)
01636 {
01637 m_ngch2 = nGood;
01638 for(int ii = 0; ii < nGood; ii++) {
01639
01640 m_cntr_etof[ii] = 999.0;
01641 m_ptot_etof[ii] = 999.0;
01642 m_ph_etof[ii] = 999.0;
01643 m_rhit_etof[ii] = 999.0;
01644 m_qual_etof[ii] = 999.0;
01645 m_te_etof[ii] = 999.0;
01646 m_tmu_etof[ii] = 999.0;
01647 m_tpi_etof[ii] = 999.0;
01648 m_tk_etof[ii] = 999.0;
01649 m_tp_etof[ii] = 999.0;
01650 m_ec_tof[ii] = 999.0;
01651 m_ec_toff_e[ii] = 999.0;
01652 m_ec_toff_mu[ii] = 999.0;
01653 m_ec_toff_pi[ii] = 999.0;
01654 m_ec_toff_k[ii] = 999.0;
01655 m_ec_toff_p[ii] = 999.0;
01656 m_ec_tsig_e[ii] = 999.0;
01657 m_ec_tsig_mu[ii] = 999.0;
01658 m_ec_tsig_pi[ii] = 999.0;
01659 m_ec_tsig_k[ii] = 999.0;
01660 m_ec_tsig_p[ii] = 999.0;
01661
01662
01663 m_cntr_btof1[ii] = 999.0;
01664 m_ptot_btof1[ii] = 999.0;
01665 m_ph_btof1[ii] = 999.0;
01666 m_zhit_btof1[ii] = 999.0;
01667 m_qual_btof1[ii] = 999.0;
01668 m_te_btof1[ii] = 999.0;
01669 m_tmu_btof1[ii] = 999.0;
01670 m_tpi_btof1[ii] = 999.0;
01671 m_tk_btof1[ii] = 999.0;
01672 m_tp_btof1[ii] = 999.0;
01673 m_b1_tof[ii] = 999.0;
01674 m_b1_toff_e[ii] = 999.0;
01675 m_b1_toff_mu[ii] = 999.0;
01676 m_b1_toff_pi[ii] = 999.0;
01677 m_b1_toff_k[ii] = 999.0;
01678 m_b1_toff_p[ii] = 999.0;
01679 m_b1_tsig_e[ii] = 999.0;
01680 m_b1_tsig_mu[ii] = 999.0;
01681 m_b1_tsig_pi[ii] = 999.0;
01682 m_b1_tsig_k[ii] = 999.0;
01683 m_b1_tsig_p[ii] = 999.0;
01684
01685
01686
01687
01688
01689
01690
01691 }
01692 int indx1=0;
01693 for(int i = 0; i < nGood; i++) {
01694 EvtRecTrackIterator itTrk = evtRecTrkCol->begin() + iGood[i];
01695 if(!(*itTrk)->isMdcTrackValid()) continue;
01696 if(!(*itTrk)->isTofTrackValid()) continue;
01697
01698 RecMdcTrack * mdcTrk = (*itTrk)->mdcTrack();
01699 SmartRefVector<RecTofTrack> tofTrkCol = (*itTrk)->tofTrack();
01700
01701 double ptrk = mdcTrk->p();
01702 SmartRefVector<RecTofTrack>::iterator iter_tof = tofTrkCol.begin();
01703 for(;iter_tof != tofTrkCol.end(); iter_tof++ ) {
01704 TofHitStatus *status = new TofHitStatus;
01705 status->setStatus((*iter_tof)->status());
01706 if(!(status->is_barrel())){
01707 if( !(status->is_counter()) ) continue;
01708 if( status->layer()!=1 ) continue;
01709 double path=(*iter_tof)->path();
01710 double tof = (*iter_tof)->tof();
01711 double ph = (*iter_tof)->ph();
01712 double rhit = (*iter_tof)->zrhit();
01713 double qual = 0.0 + (*iter_tof)->quality();
01714 double cntr = 0.0 + (*iter_tof)->tofID();
01715 double texp[5];
01716 double tsig[5];
01717 for(int j = 0; j < 5; j++) {
01718 texp[j] = (*iter_tof)->texp(j);
01719
01720
01721 }
01722 m_trkidtof[indx1] = (*itTrk)->trackId();
01723 m_cntr_etof[indx1] = cntr;
01724 m_ptot_etof[indx1] = ptrk;
01725 m_ph_etof[indx1] = ph;
01726 m_rhit_etof[indx1] = rhit;
01727 m_qual_etof[indx1] = qual;
01728 m_te_etof[indx1] = tof - texp[0];
01729 m_tmu_etof[indx1] = tof - texp[1];
01730 m_tpi_etof[indx1] = tof - texp[2];
01731 m_tk_etof[indx1] = tof - texp[3];
01732 m_tp_etof[indx1] = tof - texp[4];
01733
01734 m_ec_tof[indx1] = tof;
01735
01736 m_ec_toff_e[indx1] = (*iter_tof)->toffset(0);
01737 m_ec_toff_mu[indx1] = (*iter_tof)->toffset(1);
01738 m_ec_toff_pi[indx1] = (*iter_tof)->toffset(2);
01739 m_ec_toff_k[indx1] = (*iter_tof)->toffset(3);
01740 m_ec_toff_p[indx1] = (*iter_tof)->toffset(4);
01741
01742 m_ec_tsig_e[indx1] = (*iter_tof)->sigma(0);
01743 m_ec_tsig_mu[indx1] = (*iter_tof)->sigma(1);
01744 m_ec_tsig_pi[indx1] = (*iter_tof)->sigma(2);
01745 m_ec_tsig_k[indx1] = (*iter_tof)->sigma(3);
01746 m_ec_tsig_p[indx1] = (*iter_tof)->sigma(4);
01747
01748 }
01749 else {
01750 if( !(status->is_cluster()) ) continue;
01751 double path=(*iter_tof)->path();
01752 double tof = (*iter_tof)->tof();
01753 double ph = (*iter_tof)->ph();
01754 double rhit = (*iter_tof)->zrhit();
01755 double qual = 0.0 + (*iter_tof)->quality();
01756 double cntr = 0.0 + (*iter_tof)->tofID();
01757 double texp[5];
01758 for(int j = 0; j < 5; j++) {
01759 texp[j] = (*iter_tof)->texp(j);
01760 }
01761 m_cntr_btof1[indx1] = cntr;
01762 m_ptot_btof1[indx1] = ptrk;
01763 m_ph_btof1[indx1] = ph;
01764 m_zhit_btof1[indx1] = rhit;
01765 m_qual_btof1[indx1] = qual;
01766 m_te_btof1[indx1] = tof - texp[0];
01767 m_tmu_btof1[indx1] = tof - texp[1];
01768 m_tpi_btof1[indx1] = tof - texp[2];
01769 m_tk_btof1[indx1] = tof - texp[3];
01770 m_tp_btof1[indx1] = tof - texp[4];
01771
01772 m_b1_tof[indx1] = tof;
01773
01774 m_b1_toff_e[indx1] = (*iter_tof)->toffset(0);
01775 m_b1_toff_mu[indx1] = (*iter_tof)->toffset(1);
01776 m_b1_toff_pi[indx1] = (*iter_tof)->toffset(2);
01777 m_b1_toff_k[indx1] = (*iter_tof)->toffset(3);
01778 m_b1_toff_p[indx1] = (*iter_tof)->toffset(4);
01779
01780 m_b1_tsig_e[indx1] = (*iter_tof)->sigma(0);
01781 m_b1_tsig_mu[indx1] = (*iter_tof)->sigma(1);
01782 m_b1_tsig_pi[indx1] = (*iter_tof)->sigma(2);
01783 m_b1_tsig_k[indx1] = (*iter_tof)->sigma(3);
01784 m_b1_tsig_p[indx1] = (*iter_tof)->sigma(4);
01785
01786 }
01787 delete status;
01788 }
01789 indx1++;
01790 }
01791
01792
01793 m_nggneu = nGam;
01794 int iphoton = 0;
01795 for (int i=0; i<nGam; i++)
01796 {
01797 EvtRecTrackIterator itTrk=evtRecTrkCol->begin() + iGam[i];
01798 if (!(*itTrk)->isEmcShowerValid()) continue;
01799 RecEmcShower *emcTrk = (*itTrk)->emcShower();
01800 m_shwidtof[iphoton] = (*itTrk)->trackId();
01801 m_numHits[iphoton] = emcTrk->numHits();
01802 m_secondmoment[iphoton] = emcTrk->secondMoment();
01803 m_x[iphoton] = emcTrk->x();
01804 m_y[iphoton]= emcTrk->y();
01805 m_z[iphoton]= emcTrk->z();
01806 m_cosemc[iphoton] = cos(emcTrk->theta());
01807 m_phiemc[iphoton] = emcTrk->phi();
01808 m_energy[iphoton] = emcTrk->energy();
01809 m_eSeed[iphoton] = emcTrk->eSeed();
01810 m_e3x3[iphoton] = emcTrk->e3x3();
01811 m_e5x5[iphoton] = emcTrk->e5x5();
01812 m_lat[iphoton] = emcTrk->latMoment();
01813 m_a20[iphoton] = emcTrk->a20Moment();
01814 m_a42[iphoton] = emcTrk->a42Moment();
01815 iphoton++;
01816 }
01817
01818 }
01819 }
01820
01821
01822 if (m_regHist)
01823 {
01824 if (taggedMode != -1 )
01825 {
01826 string strdecaymode[11] = {"D02KPi","D02KPiPi0","D02KPiPiPi","D02KPiPiPiPi0","D02KsPiPi","D02KsPiPiPi0",\
01827 "DC2KPiPi","DC2KPiPiPi0","DC2KsPiPi0","DC2KsPiPiPi","DC2KKPi"};
01828 int pi0cut[11] = {0,1,0,1,0,1,0,1,1,0,0};
01829 int kscut[11] = {0,0,0,0,1,1,0,0,1,1,0};
01830 string strtrack[14] = {"D02KPi_kaon","D02KPi_pion","D02KPiPi0_kaon","D02KPiPi0_pion","D02KsPiPi_pion1",\
01831 "D02KsPiPi_pion2","D02KsPiPi_pion3","D02KsPiPi_pion4","DC2KPiPi_kaon","DC2KPiPi_pion1","DC2KPiPi_pion2",\
01832 "DC2KsPiPi0_pion1","DC2KsPiPi0_pion2","DC2KsPiPi0_pion3" };
01833
01834
01835
01836
01837 fillHistogram(m_thsvc,strdecaymode[taggedMode],3,m_decayModeHistName,m_tuple4,pi0cut[taggedMode],kscut[taggedMode]);
01838 string strDdecaymode[2] = {"D0","DC"};
01839
01840
01841 if (taggedMode < 6)
01842 fillHistogram(m_thsvc,strDdecaymode[0],3,m_decayModeHistName,m_tuple4);
01843 else
01844 fillHistogram(m_thsvc,strDdecaymode[1],3,m_decayModeHistName,m_tuple4);
01845
01846 string strtrackdedx[7] = {"D02KPi_kaon","D02KPi_pion","D02KPiPi0_kaon","D02KPiPi0_pion","DC2KPiPi_kaon","DC2KPiPi_pion1","DC2KPiPi_pion2"};
01847 string strtracktof[7] = {"D02KPi_kaon","D02KPi_pion","D02KPiPi0_kaon","D02KPiPi0_pion", "DC2KPiPi_kaon", "DC2KPiPi_pion1", "DC2KPiPi_pion2"};
01848 string strphoton[2] = {"D02KPiPi0_photon1","D02KPiPi0_photon2"};
01849 string strpi0[2] = {"D02KPiPi0","DC2KsPiPi0"};
01850 string strks[2] = {"D02KsPiPi_ks","DC2KsPiPi0_ks"};
01851 if (taggedMode == 0)
01852 {
01853 if (g_mBC > 1.86 && g_mBC < 1.87 && fabs(g_deltE) < 0.03)
01854 {
01855 fillHistogram(m_thsvc,strtrack[0],10,m_trackHistName,m_tuple4);
01856 fillHistogram(m_thsvc,strtrack[1],10,m_trackHistName,m_tuple4);
01857 fillHistogram(m_thsvc,strtrackdedx[0],6,m_trackDedxHistName,m_tuple4);
01858 fillHistogram(m_thsvc,strtrackdedx[1],6,m_trackDedxHistName,m_tuple4);
01859 fillTofHistogram(m_thsvc,strtracktof[0]);
01860 fillTofHistogram(m_thsvc,strtracktof[1]);
01861 }
01862 }
01863 if (taggedMode == 1)
01864 {
01865 if (g_mBC > 1.86 && g_mBC < 1.87 && g_deltE > -0.0583 && g_deltE < 0.035 )
01866 {
01867 fillHistogram(m_thsvc,strtrack[2],10,m_trackHistName,m_tuple4);
01868 fillHistogram(m_thsvc,strtrack[3],10,m_trackHistName,m_tuple4);
01869
01870 fillHistogram(m_thsvc,strtrackdedx[2],6,m_trackDedxHistName,m_tuple4);
01871 fillHistogram(m_thsvc,strtrackdedx[3],6,m_trackDedxHistName,m_tuple4);
01872 fillTofHistogram(m_thsvc,strtracktof[2]);
01873 fillTofHistogram(m_thsvc,strtracktof[3]);
01874 fillHistogram(m_thsvc,strphoton[0],5,m_photonHistName,m_tuple4);
01875 fillHistogram(m_thsvc,strphoton[1],5,m_photonHistName,m_tuple4);
01876
01877 fillHistogram(m_thsvc,strpi0[0],5,m_Pi0HistName,m_tuple4);
01878 }
01879 }
01880 if (taggedMode == 4)
01881 {
01882 if (g_mBC > 1.86 && g_mBC < 1.87 && fabs(g_deltE) < 0.03 )
01883 {
01884 fillHistogram(m_thsvc,strtrack[4],10,m_trackHistName,m_tuple4);
01885 fillHistogram(m_thsvc,strtrack[5],10,m_trackHistName,m_tuple4);
01886 fillHistogram(m_thsvc,strtrack[6],10,m_trackHistName,m_tuple4);
01887 fillHistogram(m_thsvc,strtrack[7],10,m_trackHistName,m_tuple4);
01888
01889 fillHistogram(m_thsvc,strks[0],4,m_KsHistName,m_tuple4);
01890 }
01891 }
01892 if (taggedMode == 6)
01893 {
01894 if (g_mBC > 1.86 && g_mBC < 1.87 && fabs(g_deltE) < 0.0218 )
01895 {
01896 fillHistogram(m_thsvc,strtrack[8],10,m_trackHistName,m_tuple4);
01897 fillHistogram(m_thsvc,strtrack[9],10,m_trackHistName,m_tuple4);
01898 fillHistogram(m_thsvc,strtrack[10],10,m_trackHistName,m_tuple4);
01899 fillTofHistogram(m_thsvc,strtracktof[4]);
01900 fillTofHistogram(m_thsvc,strtracktof[5]);
01901 fillTofHistogram(m_thsvc,strtracktof[6]);
01902 fillHistogram(m_thsvc,strtrackdedx[4],6,m_trackDedxHistName,m_tuple4);
01903 fillHistogram(m_thsvc,strtrackdedx[5],6,m_trackDedxHistName,m_tuple4);
01904 fillHistogram(m_thsvc,strtrackdedx[6],6,m_trackDedxHistName,m_tuple4);
01905 }
01906 }
01907 if (taggedMode == 8)
01908 {
01909 if (g_mBC > 1.86 && g_mBC < 1.87 && g_deltE < 0.0423 && g_deltE > -0.0455 )
01910 {
01911 fillHistogram(m_thsvc,strtrack[11],10,m_trackHistName,m_tuple4);
01912 fillHistogram(m_thsvc,strtrack[12],10,m_trackHistName,m_tuple4);
01913 fillHistogram(m_thsvc,strtrack[13],10,m_trackHistName,m_tuple4);
01914
01915 fillHistogram(m_thsvc,strpi0[1],5,m_Pi0HistName,m_tuple4);
01916 fillHistogram(m_thsvc,strks[1],4,m_KsHistName,m_tuple4);
01917 }
01918 }
01919 }
01920 }
01921 if (m_writeTuple)
01922 {
01923 m_tuple4->write();
01924 }
01925 if (m_writeTuple && m_checkEvt)
01926 {
01927
01928 }
01929
01930
01931
01932
01933
01934 setFilterPassed(true);
01935
01936 return StatusCode::SUCCESS;
01937 }
01938
01939
01940 void DQADtag::regTrackHistogram(ITHistSvc*& , string &str)
01941 {
01942 MsgStream log(msgSvc(), name());
01943 const int NUM = 10;
01944 TString hisname[NUM];
01945 TString strHisReg[NUM];
01946 TString strHisLog[NUM];
01947 for (int i=0;i!=NUM;i++)
01948 {
01949 hisname[i] = str + "_" + m_trackHistName[i];
01950 strHisLog[i] = "Couldn't register " + hisname[i];
01951 strHisReg[i] = "/DQAHist/Dtag/" + hisname[i];
01952 if (m_debug) cout<<"hisname: "<<hisname[i]<<endl;
01953 if (m_debug) cout<<"strHisReg: "<<strHisReg[i]<<endl;
01954 }
01955 TH1F* hist[10];
01956 hist[0] = new TH1F(hisname[0] , hisname[0], 100,-1.1,1.1);
01957 hist[1] = new TH1F(hisname[1] , hisname[1], 100,-1.1,1.1);
01958 hist[2] = new TH1F(hisname[2] , hisname[2], 100,-1.1,1.1);
01959 hist[3] = new TH1F(hisname[3] , hisname[3], 200,0.,1.2);
01960 hist[4] = new TH1F(hisname[4] , hisname[4], 100,-1.,1.);
01961 hist[5] = new TH1F(hisname[5] , hisname[5], 100,-1.,1.);
01962 hist[6] = new TH1F(hisname[6] , hisname[6], 100,-10.,10.);
01963 hist[7] = new TH1F(hisname[7] , hisname[7], 100,-1.,1.);
01964 hist[8] = new TH1F(hisname[8] , hisname[8], 100,-1.,1.);
01965 hist[9] = new TH1F(hisname[9] , hisname[9], 200,0.,1.4);
01966 for (int i=0;i!=NUM;i++)
01967 {
01968 if(m_thsvc->regHist((string)strHisReg[i], hist[i]).isFailure()) {
01969 log << MSG::ERROR << strHisLog[i] << endreq;
01970 }
01971 }
01972 }
01973 void DQADtag::regPhotonHistogram(ITHistSvc*& , string &str)
01974 {
01975 MsgStream log(msgSvc(), name());
01976 const int NUM = 5;
01977 TString hisname[NUM];
01978 TString strHisReg[NUM];
01979 TString strHisLog[NUM];
01980 for (int i=0;i!=NUM;i++)
01981 {
01982 hisname[i] = str + "_" + m_photonHistName[i];
01983 strHisLog[i] = "Couldn't register " + hisname[i];
01984 strHisReg[i] = "/DQAHist/Dtag/" + hisname[i];
01985 if (m_debug) cout<<"hisname: "<<hisname[i]<<endl;
01986 if (m_debug) cout<<"strHisReg: "<<strHisReg[i]<<endl;
01987 }
01988 TH1F* hist[5];
01989 hist[0] = new TH1F(hisname[0] , hisname[0], 80,0,40);
01990 hist[1] = new TH1F(hisname[1] , hisname[1], 160,0,80);
01991 hist[2] = new TH1F(hisname[2] , hisname[2], 100,-100.,100.);
01992 hist[3] = new TH1F(hisname[3] , hisname[3], 100,-100.,100.);
01993 hist[4] = new TH1F(hisname[4] , hisname[4], 100,-150.,150.);
01994 for (int i=0;i!=NUM;i++)
01995 {
01996 if(m_thsvc->regHist((string)strHisReg[i], hist[i]).isFailure()) {
01997 log << MSG::ERROR << strHisLog[i] << endreq;
01998 }
01999 }
02000 }
02001
02002 void DQADtag::regTrackDedxHistogram(ITHistSvc*& , string& str)
02003 {
02004 MsgStream log(msgSvc(), name());
02005 const int NUM = 6;
02006 TString hisname[NUM];
02007 TString strHisReg[NUM];
02008 TString strHisLog[NUM];
02009 for (int i=0;i!=NUM;i++)
02010 {
02011 hisname[i] = str + "_" + m_trackDedxHistName[i];
02012 strHisLog[i] = "Couldn't register " + hisname[i];
02013 strHisReg[i] = "/DQAHist/Dtag/" + hisname[i];
02014 if (m_debug) cout<<"hisname: "<<hisname[i]<<endl;
02015 if (m_debug) cout<<"strHisReg: "<<strHisReg[i]<<endl;
02016 }
02017 TH1F* hist[6];
02018 hist[0] = new TH1F(hisname[0] , hisname[0], 200,-3.,5.);
02019 hist[1] = new TH1F(hisname[1] , hisname[1], 200,-2.,15.);
02020 hist[2] = new TH1F(hisname[2] , hisname[2], 80,0,40);
02021 hist[3] = new TH1F(hisname[3] , hisname[3], 120,0,60);
02022 hist[4] = new TH1F(hisname[4] , hisname[4], 100,200,1400);
02023 hist[5] = new TH1F(hisname[5] , hisname[5], 100,0.6,1.5);
02024 for (int i=0;i!=NUM;i++)
02025 {
02026 if(m_thsvc->regHist((string)strHisReg[i], hist[i]).isFailure()) {
02027 log << MSG::ERROR << strHisLog[i] << endreq;
02028 }
02029 }
02030 }
02031 void DQADtag::regTrackTofHistogram(ITHistSvc*& , string& str)
02032 {
02033 MsgStream log(msgSvc(), name());
02034 const int NUM = 24;
02035 TString hisname[NUM];
02036 TString strHisReg[NUM];
02037 TString strHisLog[NUM];
02038 string tofReadOutID[7] = {"1","2","3","4","12","34","1234"};
02039 int num(0);
02040 for (int i=0;i!=3;i++)
02041 {
02042 for (int j=0;j!=7;j++)
02043 {
02044 num = i*7+j;
02045 hisname[num] = str + "_" + m_trackTofHistName[i] + "_" + tofReadOutID[j];
02046 strHisLog[num] = "Couldn't register " + hisname[num];
02047 strHisReg[num] = "/DQAHist/Dtag/" + hisname[num];
02048
02049
02050 if (m_debug) cout<<"hisname: "<<hisname[num]<<endl;
02051 if (m_debug) cout<<"strHisReg: "<<strHisReg[num]<<endl;
02052 }
02053 }
02054 for (int i=3;i!=6;i++)
02055 {
02056 num = 3*6+i;
02057 hisname[num] = str + "_" + m_trackTofHistName[i];
02058 strHisLog[num] = "Couldn't register " + hisname[num];
02059 strHisReg[num] = "/DQAHist/Dtag/" + hisname[num];
02060 }
02061 TH1F* hist[24];
02062 for (int i=0;i!=24;i++)
02063 {
02064 hist[i] = new TH1F(hisname[i] , hisname[i], 100,-4.0,4.);
02065 }
02066 for (int i=0;i!=NUM;i++)
02067 {
02068 if(m_thsvc->regHist((string)strHisReg[i], hist[i]).isFailure()) {
02069 log << MSG::ERROR << strHisLog[i] << endreq;
02070 }
02071 }
02072 }
02073 void DQADtag::regDecayModeHistogram(ITHistSvc*& , string& str)
02074 {
02075 MsgStream log(msgSvc(), name());
02076 const int NUM = 3;
02077 TString hisname[NUM];
02078 TString strHisReg[NUM];
02079 TString strHisLog[NUM];
02080 for (int i=0;i!=NUM;i++)
02081 {
02082 hisname[i] = str + "_" + m_decayModeHistName[i];
02083 strHisLog[i] = "Couldn't register " + hisname[i];
02084 strHisReg[i] = "/DQAHist/Dtag/" + hisname[i];
02085 if (m_debug) cout<<"hisname: "<<hisname[i]<<endl;
02086 if (m_debug) cout<<"strHisReg: "<<strHisReg[i]<<endl;
02087 }
02088 TH1F* hist[3];
02089 hist[0] = new TH1F(hisname[0] , hisname[0], 100,1.83,1.89);
02090 hist[1] = new TH1F(hisname[1] , hisname[1], 100,-0.1,0.1);
02091 hist[2] = new TH1F(hisname[2] , hisname[2], 100,1.83,1.89);
02092 for (int i=0;i!=NUM;i++)
02093 {
02094 if(m_thsvc->regHist((string)strHisReg[i], hist[i]).isFailure()) {
02095 log << MSG::ERROR << strHisLog[i] << endreq;
02096 }
02097 }
02098 }
02099 void DQADtag::regKsHistogram(ITHistSvc*& , string& str)
02100 {
02101 MsgStream log(msgSvc(), name());
02102 const int NUM = 4;
02103 TString hisname[NUM];
02104 TString strHisReg[NUM];
02105 TString strHisLog[NUM];
02106 TH1F* hist[4];
02107 for (int i=0;i!=NUM;i++)
02108 {
02109 hisname[i] = str + "_ks_" + m_KsHistName[i];
02110 strHisLog[i] = "Couldn't register " + hisname[i];
02111 strHisReg[i] = "/DQAHist/Dtag/" + hisname[i];
02112 if (m_debug) cout<<"hisname: "<<hisname[i]<<endl;
02113 if (m_debug) cout<<"strHisReg: "<<strHisReg[i]<<endl;
02114 }
02115 hist[0] = new TH1F(hisname[0] , hisname[0], 100,0.46,0.54);
02116 hist[1] = new TH1F(hisname[1] , hisname[1], 100,0.46,0.54);
02117 hist[2] = new TH1F(hisname[2] , hisname[2], 100,0,30);
02118 hist[3] = new TH1F(hisname[3] , hisname[3], 100,0,30);
02119 for (int i=0;i!=NUM;i++)
02120 {
02121 if(m_thsvc->regHist((string)strHisReg[i], hist[i]).isFailure()) {
02122 log << MSG::ERROR << strHisLog[i] << endreq;
02123 }
02124 }
02125 }
02126 void DQADtag::regPi0Histogram(ITHistSvc*& , string& str)
02127 {
02128 MsgStream log(msgSvc(), name());
02129 const int NUM = 5;
02130 TString hisname[NUM];
02131 TString strHisReg[NUM];
02132 TString strHisLog[NUM];
02133 TH1F* hist[5];
02134 for (int i=0;i!=NUM;i++)
02135 {
02136 hisname[i] = str + "_" + m_Pi0HistName[i];
02137 strHisLog[i] = "Couldn't register " + hisname[i];
02138 strHisReg[i] = "/DQAHist/Dtag/" + hisname[i];
02139 if (m_debug) cout<<"hisname: "<<hisname[i]<<endl;
02140 if (m_debug) cout<<"strHisReg: "<<strHisReg[i]<<endl;
02141 }
02142 hist[0] = new TH1F(hisname[0] , hisname[0], 100,0.08,0.18);
02143 hist[1] = new TH1F(hisname[1] , hisname[1], 100,0.0,1.0);
02144 hist[2] = new TH1F(hisname[2] , hisname[2], 100,-1.0,1.0);
02145 hist[3] = new TH1F(hisname[3] , hisname[3], 100,0.0,1.0);
02146 hist[4] = new TH1F(hisname[4] , hisname[4], 100,-1.0,1.0);
02147 for (int i=0;i!=NUM;i++)
02148 {
02149 if(m_thsvc->regHist((string)strHisReg[i], hist[i]).isFailure()) {
02150 log << MSG::ERROR << strHisLog[i] << endreq;
02151 }
02152 }
02153 }
02154 void DQADtag::fillHistogram(ITHistSvc*& , string str, int NUM, string* fillHistName, NTuple::Tuple*& m_tuple)
02155 {
02156 MsgStream log(msgSvc(), name());
02157 string* strVarName = new string[NUM];
02158 string* strHisGet = new string[NUM];
02159 string* strHisLog = new string[NUM];
02160 TH1* hist;
02161 for (int i=0;i!=NUM;i++)
02162 {
02163 strVarName[i] = str + "_" + fillHistName[i];
02164 strHisLog[i] = "Couldn't retrieve " + strVarName[i];
02165 strHisGet[i] = "/DQAHist/Dtag/" + strVarName[i];
02166
02167
02168 NTuple::Item<double> m_Variable;
02169 m_tuple->item(strVarName[i],m_Variable);
02170 if (m_thsvc->getHist(strHisGet[i], hist).isSuccess()) {
02171 hist->Fill(m_Variable);
02172 }
02173 else {
02174 log << MSG::ERROR << strHisLog[i] << endreq;
02175 }
02176 }
02177
02178 delete [] strVarName;
02179 delete [] strHisGet;
02180 delete [] strHisLog;
02181 }
02182 void DQADtag::fillHistogram(ITHistSvc*& , string str, int NUM, string* fillHistName, NTuple::Tuple*& m_tuple, int pi0cut, int kscut)
02183 {
02184 MsgStream log(msgSvc(), name());
02185 string* strVarName = new string[NUM];
02186 string* strHisGet = new string[NUM];
02187 string* strHisLog = new string[NUM];
02188 TH1* hist;
02189 NTuple::Item<double> m_Variable0;
02190 NTuple::Item<double> m_Variable1;
02191 NTuple::Item<double> m_Variable2;
02192 NTuple::Item<double> m_Variable3;
02193 if (pi0cut)
02194 m_tuple->item(str+"_pi0mass",m_Variable0);
02195 if (kscut)
02196 m_tuple->item(str+"_ks_vfitmass",m_Variable1);
02197 m_tuple->item(str+"_deltE",m_Variable2);
02198 m_tuple->item(str+"_mBC",m_Variable3);
02199 for (int i=0;i!=NUM;i++)
02200 {
02201 strVarName[i] = str + "_" + fillHistName[i];
02202 strHisLog[i] = "Couldn't retrieve " + strVarName[i];
02203 strHisGet[i] = "/DQAHist/Dtag/" + strVarName[i];
02204
02205
02206 NTuple::Item<double> m_Variable;
02207 m_tuple->item(strVarName[i],m_Variable);
02208 if (m_thsvc->getHist(strHisGet[i], hist).isSuccess()) {
02209 bool isfill = 1;
02210 if (pi0cut)
02211 {
02212 if (m_Variable0>m_mpi0MaxCut||m_Variable0<m_mpi0MinCut) isfill = 0;
02213 }
02214 if (kscut)
02215 {
02216 if (m_Variable1>m_mKsMaxCut||m_Variable1<m_mKsMinCut) isfill = 0;
02217 }
02218 if (i==0)
02219 {
02220 if (fabs(m_Variable2)>0.03) isfill = 0;
02221 }
02222 if (i==1)
02223 {
02224 if (m_Variable3 > 1.87 || m_Variable3 < 1.86 ) isfill = 0;
02225 }
02226 if (i==2)
02227 {
02228 if (m_Variable3 > 1.87 || m_Variable3 < 1.86 || fabs(m_Variable2)>0.03 ) isfill = 0;
02229 }
02230 if (isfill == 1)
02231 {
02232 hist->Fill(m_Variable);
02233 }
02234 }
02235 else {
02236 log << MSG::ERROR << strHisLog[i] << endreq;
02237 }
02238 }
02239
02240 delete [] strVarName;
02241 delete [] strHisGet;
02242 delete [] strHisLog;
02243 }
02244 void DQADtag::fillTofHistogram(ITHistSvc*& , string str )
02245 {
02246 MsgStream log(msgSvc(), name());
02247 string strVarName[6];
02248 string strHisGet[24];
02249 string strHisLog[24];
02250 TH1* hist;
02251 string tofReadOutID[7] = {"1","2","3","4","12","34","1234"};
02252 for (int i=0;i!=3;i++)
02253 {
02254 strVarName[i] = str + "_" + m_trackTofHistName[i];
02255
02256
02257 NTuple::Array<double> m_Variable;
02258 m_tuple4->item(strVarName[i],m_Variable);
02259 for (int j=0;j!=7;j++)
02260 {
02261 int num = i*7+j;
02262 strHisLog[num] = "Couldn't retrieve " + strVarName[i] + "_" + tofReadOutID[j];
02263 strHisGet[num] = "/DQAHist/Dtag/" + strVarName[i] + "_" + tofReadOutID[j];
02264 if (m_thsvc->getHist(strHisGet[num], hist).isSuccess()) {
02265 hist->Fill(m_Variable[j]);
02266 }
02267 else {
02268 log << MSG::ERROR << strHisLog[num] << endreq;
02269 }
02270 }
02271 }
02272 for (int i=3;i!=6;i++)
02273 {
02274 int num = 3*6+ i;
02275 strVarName[i] = str + "_" + m_trackTofHistName[i];
02276 strHisLog[num] = "Couldn't retrieve " + strVarName[i];
02277 strHisGet[num] = "/DQAHist/Dtag/" + strVarName[i];
02278
02279
02280 NTuple::Item<double> m_Variable;
02281 m_tuple4->item(strVarName[i],m_Variable);
02282 if (m_thsvc->getHist(strHisGet[num], hist).isSuccess()) {
02283 hist->Fill(m_Variable);
02284 }
02285 else {
02286 log << MSG::ERROR << strHisLog[num] << endreq;
02287 }
02288 }
02289
02290 }
02291 void DQADtag::fillHistogram(ITHistSvc*& , string str, int NUM, string* fillHistName, int tuplenum, bool cut)
02292 {
02293 MsgStream log(msgSvc(), name());
02294 string* strVarName = new string[NUM];
02295 string* strHisGet = new string[NUM];
02296 string* strHisLog = new string[NUM];
02297 TH1* hist;
02298 string pi0VarName = str + "_pi0mass";
02299 NTuple::Item<double> m_pi0Variable;
02300 m_tuple4->item(pi0VarName,m_pi0Variable);
02301 for (int i=0;i!=NUM;i++)
02302 {
02303 strVarName[i] = str + "_" + fillHistName[i];
02304 strHisLog[i] = "Couldn't retrieve " + strVarName[i];
02305 strHisGet[i] = "/DQAHist/Dtag/" + strVarName[i];
02306
02307
02308 NTuple::Item<double> m_Variable;
02309 m_tuple4->item(strVarName[i],m_Variable);
02310 if (m_thsvc->getHist(strHisGet[i], hist).isSuccess()) {
02311 if(! (m_pi0Variable >m_mpi0Max || m_pi0Variable < m_mpi0Min))
02312 {
02313 hist->Fill(m_Variable);
02314 }
02315 }
02316 else {
02317 log << MSG::ERROR << strHisLog[i] << endreq;
02318 }
02319 }
02320 delete [] strVarName;
02321 delete [] strHisGet;
02322 delete [] strHisLog;
02323 }
02324 void DQADtag::fillDecayModeItem(EvtRecDTag* bestDTag, string str)
02325 {
02326 string strVarName[6];
02327
02328
02330
02331 for (int i=0;i!=6;i++ )
02332 {
02333 strVarName[i] = str + "_" + m_DecayModeItemName[i];
02334
02335 }
02336 NTuple::Item<double> m_Variable0;
02337 NTuple::Item<double> m_Variable1;
02338 NTuple::Item<double> m_Variable2;
02339 NTuple::Item<double> m_Variable3;
02340 NTuple::Item<double> m_Variable4;
02341 NTuple::Item<double> m_Variable5;
02342 m_tuple4->item(strVarName[0],m_Variable0);
02343 m_tuple4->item(strVarName[1],m_Variable1);
02344 m_tuple4->item(strVarName[2],m_Variable2);
02345 m_tuple4->item(strVarName[3],m_Variable3);
02346 m_tuple4->item(strVarName[4],m_Variable4);
02347 m_tuple4->item(strVarName[5],m_Variable5);
02348 m_Variable0=(bestDTag)->mBC();
02349 m_Variable1=(bestDTag)->deltaE();
02350 m_Variable2=(bestDTag)->p4().rho();
02351 m_Variable3=(bestDTag)->charm();
02352 m_Variable4=(bestDTag)->mass();
02353 m_Variable5=(bestDTag)->beamE();
02354 }
02355 void DQADtag::fillTrackItem(EvtRecTrack* track, string str, int type, Hep3Vector& xorigin)
02356 {
02357 string strVarName[11];
02358 for (int i=0;i!=11;i++ )
02359 {
02360 strVarName[i] = str + "_" + m_TrackItemName[i];
02361
02362 }
02363 NTuple::Item<double> m_Variable0;
02364 NTuple::Item<double> m_Variable1;
02365 NTuple::Item<double> m_Variable2;
02366 NTuple::Item<double> m_Variable3;
02367 NTuple::Item<double> m_Variable4;
02368 NTuple::Item<double> m_Variable5;
02369 NTuple::Item<double> m_Variable6;
02370 NTuple::Item<double> m_Variable7;
02371 NTuple::Item<double> m_Variable8;
02372 NTuple::Item<double> m_Variable9;
02373 NTuple::Item<long> m_Variable10;
02374 m_tuple4->item(strVarName[0],m_Variable0);
02375 m_tuple4->item(strVarName[1],m_Variable1);
02376 m_tuple4->item(strVarName[2],m_Variable2);
02377 m_tuple4->item(strVarName[3],m_Variable3);
02378 m_tuple4->item(strVarName[4],m_Variable4);
02379 m_tuple4->item(strVarName[5],m_Variable5);
02380 m_tuple4->item(strVarName[6],m_Variable6);
02381 m_tuple4->item(strVarName[7],m_Variable7);
02382 m_tuple4->item(strVarName[8],m_Variable8);
02383 m_tuple4->item(strVarName[9],m_Variable9);
02384 m_tuple4->item(strVarName[10],m_Variable10);
02385 RecMdcKalTrack* mdcKalTrk = track->mdcKalTrack();
02386 if (type==2)
02387 RecMdcKalTrack::setPidType (RecMdcKalTrack::pion);
02388 else if (type==3)
02389 RecMdcKalTrack::setPidType (RecMdcKalTrack::kaon);
02390 HepLorentzVector p4trk = mdcKalTrk->p4(xmass[type]);
02391
02392 HepVector a = mdcKalTrk->helix();
02393 HepSymMatrix Ea = mdcKalTrk->err();
02394 HepPoint3D point0(0., 0., 0.);
02395 HepPoint3D IP(xorigin[0], xorigin[1], xorigin[2]);
02396 VFHelix helixip(point0, a, Ea);
02397 helixip.pivot(IP);
02398 HepVector vecipa = helixip.a();
02399
02400 m_Variable0 = p4trk.px();
02401 m_Variable1 = p4trk.py();
02402 m_Variable2 = p4trk.pz();
02403 m_Variable3 = p4trk.rho();
02404 m_Variable4 = mdcKalTrk->dr() * cos(mdcKalTrk->fi0());
02405 m_Variable5 = mdcKalTrk->dr() * sin(mdcKalTrk->fi0());
02406 m_Variable6 = mdcKalTrk->dz();
02407 m_Variable7 = fabs(vecipa[0]);
02408 m_Variable8 = p4trk.cosTheta();
02409 m_Variable9 = p4trk.e();
02410 m_Variable10 = track->trackId();
02411 }
02412 void DQADtag::fillPhotonItem(EvtRecTrack* shower, string str)
02413 {
02414 string strVarName[6];
02415 for (int i=0;i!=6;i++ )
02416 {
02417 strVarName[i] = str + "_" + m_PhotonItemName[i];
02418
02419 }
02420 NTuple::Item<double> m_Variable0;
02421 NTuple::Item<double> m_Variable1;
02422 NTuple::Item<double> m_Variable2;
02423 NTuple::Item<double> m_Variable3;
02424 NTuple::Item<double> m_Variable4;
02425 NTuple::Item<long> m_Variable5;
02426 m_tuple4->item(strVarName[0],m_Variable0);
02427 m_tuple4->item(strVarName[1],m_Variable1);
02428 m_tuple4->item(strVarName[2],m_Variable2);
02429 m_tuple4->item(strVarName[3],m_Variable3);
02430 m_tuple4->item(strVarName[4],m_Variable4);
02431 m_tuple4->item(strVarName[5],m_Variable5);
02432 RecEmcShower* emcTrk = shower->emcShower();
02433 m_Variable0 = emcTrk->numHits();
02434 m_Variable1 = emcTrk->secondMoment();
02435 m_Variable2 = emcTrk->x();
02436 m_Variable3 = emcTrk->y();
02437 m_Variable4 = emcTrk->z();
02438 m_Variable5 = shower->trackId();
02439 }
02440 void DQADtag::fillPi0Item(SmartRefVector<EvtRecTrack> showers, string str, DQAPi0Info* pi0info)
02441 {
02442 string strVarName[7];
02443 for (int i=0;i!=7;i++ )
02444 {
02445 strVarName[i] = str + "_" + m_Pi0ItemName[i];
02446
02447 }
02448
02449
02450
02451
02452
02453 NTuple::Item<double> m_Variable0;
02454 NTuple::Item<double> m_Variable1;
02455 NTuple::Item<double> m_Variable2;
02456 NTuple::Item<double> m_Variable3;
02457 NTuple::Item<double> m_Variable4;
02458 NTuple::Item<long> m_Variable5;
02459 NTuple::Item<long> m_Variable6;
02460 m_tuple4->item(strVarName[0],m_Variable0);
02461 m_tuple4->item(strVarName[1],m_Variable1);
02462 m_tuple4->item(strVarName[2],m_Variable2);
02463 m_tuple4->item(strVarName[3],m_Variable3);
02464 m_tuple4->item(strVarName[4],m_Variable4);
02465 m_tuple4->item(strVarName[5],m_Variable5);
02466 m_tuple4->item(strVarName[6],m_Variable6);
02467 m_Variable0 = pi0info->m();
02468 m_Variable1 = showers[0]->emcShower()->energy();
02469 m_Variable2 = cos(showers[0]->emcShower()->theta());
02470 m_Variable3 = showers[1]->emcShower()->energy();
02471 m_Variable4 = cos(showers[1]->emcShower()->theta());
02472 m_Variable5 = showers[0]->trackId();
02473 m_Variable6 = showers[1]->trackId();
02474 }
02475 void DQADtag::fillKsItem(SmartRefVector<EvtRecTrack> tracks, string str, DQAKsInfo* ksinfo)
02476 {
02477 string strVarName[6];
02478 for (int i=0;i!=6;i++ )
02479 {
02480 strVarName[i] = str + "_ks_" + m_KsItemName[i];
02481
02482 }
02483
02484
02485
02486
02487
02488 NTuple::Item<double> m_Variable0;
02489 NTuple::Item<double> m_Variable1;
02490 NTuple::Item<double> m_Variable2;
02491 NTuple::Item<double> m_Variable3;
02492 NTuple::Item<double> m_Variable4;
02493 NTuple::Item<double> m_Variable5;
02494 m_tuple4->item(strVarName[0],m_Variable0);
02495 m_tuple4->item(strVarName[1],m_Variable1);
02496 m_tuple4->item(strVarName[2],m_Variable2);
02497 m_tuple4->item(strVarName[3],m_Variable3);
02498 m_tuple4->item(strVarName[4],m_Variable4);
02499 m_tuple4->item(strVarName[5],m_Variable5);
02500 m_Variable0 = ksinfo->m();
02501 m_Variable1 = ksinfo->mksp4();
02502 m_Variable2 = ksinfo->vtxChi2();
02503 m_Variable3 = ksinfo->chi2();
02504 m_Variable4 = ksinfo->decayLength();
02505 m_Variable5 = ksinfo->decayLengthRatio();
02506 }
02507 int DQADtag::fillTrackTofItem(EvtRecTrack* track, string str, int type)
02508 {
02509 string strVarName[8];
02510 int numtag(0);
02511 for (int i=0;i!=8;i++ )
02512 {
02513 strVarName[i] = str + "_" + m_TrackTofItemName[i];
02514
02515 }
02516 NTuple::Array<double> m_Variable0;
02517 NTuple::Array<double> m_Variable1;
02518 NTuple::Array<double> m_Variable2;
02519 NTuple::Item<double> m_Variable3;
02520 NTuple::Item<double> m_Variable4;
02521 NTuple::Item<double> m_Variable5;
02522 NTuple::Item<long> m_Variable6;
02523 NTuple::Item<long> m_Variable7;
02524 m_tuple4->item(strVarName[0],m_Variable0);
02525 m_tuple4->item(strVarName[1],m_Variable1);
02526 m_tuple4->item(strVarName[2],m_Variable2);
02527 m_tuple4->item(strVarName[3],m_Variable3);
02528 m_tuple4->item(strVarName[4],m_Variable4);
02529 m_tuple4->item(strVarName[5],m_Variable5);
02530 m_tuple4->item(strVarName[6],m_Variable6);
02531 m_tuple4->item(strVarName[7],m_Variable7);
02532 m_Variable6 = track->trackId();
02533 m_Variable7 = 10;
02534 for (int i=0;i!=7;i++)
02535 {
02536 m_Variable0[i] = 999.9;
02537 m_Variable1[i] = 999.9;
02538 m_Variable2[i] = 999.9;
02539 }
02540 m_Variable3 = 999.9;
02541 m_Variable4 = 999.9;
02542 m_Variable5 = 999.9;
02543 if(!track->isTofTrackValid()) return 0;
02544 SmartRefVector<RecTofTrack> tofTrkCol = track->tofTrack();
02545 SmartRefVector<RecTofTrack>::iterator iter_tof = tofTrkCol.begin();
02546 for(;iter_tof != tofTrkCol.end(); iter_tof++ ) {
02547 TofHitStatus *status = new TofHitStatus;
02548 status->setStatus((*iter_tof)->status());
02549 if(!(status->is_barrel())){
02550 if( !(status->is_counter()) ) continue;
02551 if( status->layer()!=1 ) continue;
02552 m_Variable3 = (*iter_tof)->tof() - (*iter_tof)->texp(1);
02553 m_Variable4 = (*iter_tof)->tof() - (*iter_tof)->texp(2);
02554 m_Variable5 = (*iter_tof)->tof() - (*iter_tof)->texp(3);
02555 m_Variable7 = (status->is_east() + 1);
02556 }
02557 else {
02558 if (status->is_cluster()) numtag = 6;
02559 else if (status->is_counter() && status->layer()!=1) numtag = 5;
02560 else if (status->is_counter() && status->layer()==1) numtag = 4;
02561 else if (status->is_readout() && status->layer()==1 && status->is_east()==1) numtag = 0;
02562 else if (status->is_readout() && status->layer()==1 && status->is_east()!=1) numtag = 1;
02563 else if (status->is_readout() && status->layer()!=1 && status->is_east()==1) numtag = 2;
02564 else if (status->is_readout() && status->layer()!=1 && status->is_east()!=1) numtag = 3;
02565 m_Variable0[numtag] = (*iter_tof)->tof() - (*iter_tof)->texp(1);
02566 m_Variable1[numtag] = (*iter_tof)->tof() - (*iter_tof)->texp(2);
02567 m_Variable2[numtag] = (*iter_tof)->tof() - (*iter_tof)->texp(3);
02568 }
02569 delete status;
02570 }
02571 }
02572 int DQADtag::fillTrackDedxItem(EvtRecTrack* track, string str, int type)
02573 {
02574 string strVarName[7];
02575 for (int i=0;i!=7;i++ )
02576 {
02577 strVarName[i] = str + "_" + m_TrackDedxItemName[i];
02578
02579 }
02580 NTuple::Item<double> m_Variable0;
02581 NTuple::Item<double> m_Variable1;
02582 NTuple::Item<double> m_Variable2;
02583 NTuple::Item<double> m_Variable3;
02584 NTuple::Item<double> m_Variable4;
02585 NTuple::Item<double> m_Variable5;
02586 NTuple::Item<long> m_Variable6;
02587 m_tuple4->item(strVarName[0],m_Variable0);
02588 m_tuple4->item(strVarName[1],m_Variable1);
02589 m_tuple4->item(strVarName[2],m_Variable2);
02590 m_tuple4->item(strVarName[3],m_Variable3);
02591 m_tuple4->item(strVarName[4],m_Variable4);
02592 m_tuple4->item(strVarName[5],m_Variable5);
02593 m_tuple4->item(strVarName[6],m_Variable6);
02594 m_Variable0 = 999.9;
02595 m_Variable1 = 999.9;
02596 m_Variable2 = 1000;
02597 m_Variable3 = 1000;
02598 m_Variable4 = 9999.9;
02599 m_Variable5 = 999.9;
02600 m_Variable6 = 999.9;
02601 if (!track->isMdcDedxValid()) return 0;
02602 RecMdcDedx* dedxTrk = track->mdcDedx();
02603 m_Variable0 = dedxTrk->chiK();
02604 m_Variable1 = dedxTrk->chiPi();
02605 m_Variable2 = dedxTrk->numGoodHits();
02606 m_Variable3 = dedxTrk->numTotalHits();
02607 m_Variable4 = dedxTrk->probPH();
02608 m_Variable5 = dedxTrk->normPH();
02609 m_Variable6 = track->trackId();
02610 }
02611
02612
02613 StatusCode DQADtag::finalize() {
02614 cout<<"* * * * * * * Begin DQADTag * * * * * * * *"<<endl;
02615 cout<<"total number: "<<Ncut_DQADTagAlg[0]<<endl;
02616 cout<<"Has DTag: "<<Ncut_DQADTagAlg[1]<<endl;
02617 cout<<"* * * * * * * End DQADTag * * * * * * * *"<<endl;
02618 MsgStream log(msgSvc(), name());
02619 log << MSG::INFO << "in finalize()" << endmsg;
02620 return StatusCode::SUCCESS;
02621 }
02622