• Main Page
  • Namespaces
  • Classes
  • Files
  • File List
  • File Members

/Users/jmonk/Physics/ForIA/src/D3PD/D3PDConverter.cxx

Go to the documentation of this file.
00001 #include "ForIA/D3PD/D3PDConverter.hh"
00002 #include "ForIA/D3PDTree/TreeFactory.hh"
00003 #include "ForIA/JetKey.hh"
00004 #include <fstream>
00005 #include <iostream>
00006 #include <cmath>
00007 
00008 
00009 
00010 namespace ForIA{
00011  
00012   using std::ifstream;
00013   
00014   D3PDConverter::D3PDConverter(const string &txtFile):
00015   m_txtFile(txtFile), m_event(this){
00016     
00017   }
00018   
00019   D3PDConverter::D3PDConverter(const string &txtFile, const string &goodRunList):
00020   m_txtFile(txtFile), m_event(this), m_goodRunsList(goodRunList){
00021   
00022   }
00023   
00024   D3PDConverter::~D3PDConverter(){
00025     if(m_treeFactory) delete m_treeFactory;
00026   }
00027   
00029   void D3PDConverter::initialise(){
00030 
00031     ifstream input(m_txtFile.c_str(), ifstream::in);
00032     
00033     char buf[500];
00034     
00035     while(input.good()){
00036       input.getline(buf, 500);
00037       if(strcmp(buf, "") != 0){
00038         m_rootFiles.push_back(buf);
00039       }
00040     }
00041     
00042     std::cout<<"Using "<<m_rootFiles.size()<<" root file";
00043     if(m_rootFiles.size() > 1) std::cout<<"s";
00044     std::cout<<std::endl;
00045     
00046     m_treeFactory = new D3PDTree::TreeFactory(m_rootFiles);
00047     
00048     m_clusterTree        = m_treeFactory->createTree<D3PDTree::ClusterTree>();
00049     m_dbKeysTree         = m_treeFactory->createTree<D3PDTree::DBKeysTree>();
00050     m_detectorErrorsTree = m_treeFactory->createTree<D3PDTree::DetectorErrorsTree>();
00051     m_etmissTree         = m_treeFactory->createTree<D3PDTree::MetTree>();
00052     m_eventTree          = m_treeFactory->createTree<D3PDTree::EventTree>();
00053     m_truthJetTree       = m_treeFactory->createTree<D3PDTree::TruthJetTree>();
00054     m_trackTree          = m_treeFactory->createTree<D3PDTree::TrackTree>();
00055     m_trackVtxTree       = m_treeFactory->createTree<D3PDTree::TrackVertexAssociationTree>();
00056     m_trigConfTree       = m_treeFactory->createTree<D3PDTree::TrigConfTree>();
00057     m_trigDecisionTree   = m_treeFactory->createTree<D3PDTree::TrigDecisionTree>();
00058     m_truthTree          = m_treeFactory->createTree<D3PDTree::TruthTree>();
00059     m_truthEnergyTree    = m_treeFactory->createTree<D3PDTree::TruthEnergyTree>();
00060     m_truthMassTree      = m_treeFactory->createTree<D3PDTree::TruthMassTree>();
00061     m_truthVertexTree    = m_treeFactory->createTree<D3PDTree::TruthVertexTree>();
00062     m_vertexTree         = m_treeFactory->createTree<D3PDTree::VertexTree>();
00063     m_l1TriggerTree      = m_treeFactory->createTree<D3PDTree::L1TriggerTree>(); 
00064     m_l2SpacePointsTree  = m_treeFactory->createTree<D3PDTree::L2SpacePointsTree>();
00065 
00066     m_jetTrees           = m_treeFactory->createAllTrees<D3PDTree::JetTree>();
00067 
00068     return;
00069   }
00070   
00072   bool D3PDConverter::nextEvent(){
00073     return m_treeFactory->nextEvent();
00074   }
00075   
00076   void D3PDConverter::storeEvent(){
00077     m_treeFactory->storeEvent();
00078     return;
00079   }
00080   
00082   const TrackVector &D3PDConverter::loadTracks(const Event *evt){
00083       
00084     m_tracks.clear();
00085     
00086     if(!m_trackTree || !m_treeFactory->checkTree(m_trackTree)){
00087       return m_tracks;
00088     }
00089     
00090     map<int, vector<float> > assocData;
00091     
00092     if(m_trackVtxTree && m_treeFactory->checkTree(m_trackVtxTree) && m_trackVtxTree->haveUnBiasedCoords()){
00093       
00094       size_t nVertices = m_trackVtxTree->trackIndices->size();
00095       for(size_t ii=0; ii != nVertices; ++ii){
00096         
00097         size_t nTracks = m_trackVtxTree->trackIndices->at(ii).size();
00098         
00099         for(size_t jj = 0; jj != nTracks; ++jj){
00100           
00101           size_t trkIndex = m_trackVtxTree->trackIndices->at(ii).at(jj);
00102           
00103           float ar[4] = {m_trackVtxTree->d0->at(ii)[jj],
00104             m_trackVtxTree->z0->at(ii)[jj],
00105             m_trackVtxTree->theta->at(ii)[jj],
00106             m_trackVtxTree->phi->at(ii)[jj]};
00107           assocData[trkIndex]= vector<float>(ar, ar + 4);
00108           
00109         }
00110       }
00111     }
00112     
00113     for(int ii=0; ii != m_trackTree->n; ++ii){
00114       
00115       TrackPtr track(new Track());
00116       
00117       setVar(*track, m_eta, m_trackTree->eta->at(ii));
00118       setVar(*track, m_theta, m_trackTree->theta->at(ii));
00119 
00120       setVar(*track, m_phi_wrt_pvtx, m_trackTree->phi_wrtPV->at(ii));
00121       setVar(*track, m_PT, m_trackTree->pt->at(ii));
00122       setVar(*track, m_d0_wrt_pvtx, m_trackTree->d0_wrtPV->at(ii));
00123       setVar(*track, m_z0_wrt_pvtx, m_trackTree->z0_wrtPV->at(ii));
00124       setVar(*track, m_nPix, m_trackTree->nPixHits->at(ii));
00125       setVar(*track, m_nSCT, m_trackTree->nSCTHits->at(ii));
00126       setVar(*track, m_nTRT, m_trackTree->nTRTHits->at(ii));
00127       setVar(*track, m_expectBLayer, m_trackTree->expectHitInBLayer->at(ii));
00128       setVar(*track, m_nBLayer, m_trackTree->nBLHits->at(ii));
00129       setVar(*track, m_chi2, m_trackTree->chi2->at(ii));
00130       setVar(*track, m_dof, m_trackTree->ndof->at(ii));
00131       setVar(*track, m_event, evt);
00132       
00133       if(m_trackTree->haveSeedFinder()){
00134         setVar(*track, m_author, Track::TrackAuthor(m_trackTree->seedFinder->at(ii)));
00135       }
00136       setVar(*track, m_id, ii);
00137       
00138       map<int, vector<float> >::const_iterator trkAssoc = assocData.find(ii);
00139       
00140       if(trkAssoc != assocData.end()){
00141         setVar(*track, m_d0_wrt_tv,   (trkAssoc->second)[0]);
00142         setVar(*track, m_z0_wrt_tv,   (trkAssoc->second)[1]);
00143         setVar(*track, m_theta_wrt_tv,(trkAssoc->second)[2]);
00144         setVar(*track, m_phi_wrt_tv,(trkAssoc->second)[3]);
00145         
00146         setVar(*track, m_haveTV, true);
00147       }
00148       
00149       if(m_trackTree->haveThetaOrigins()){
00150         setVar(*track, m_haveThetaOrigins, true);
00151         setVar(*track, m_theta_wrt_bs, m_trackTree->theta_wrtBS->at(ii));
00152         setVar(*track, m_theta_wrt_pvtx, m_trackTree->theta_wrtPV->at(ii));
00153       }else{
00154         setVar(*track, m_haveThetaOrigins, false);
00155       }
00156       
00157       if(m_trackTree->haveOrigins()){
00158         setVar(*track, m_phi_wrt_bs, m_trackTree->phi_wrtBS->at(ii));
00159         setVar(*track, m_d0, m_trackTree->d0->at(ii));
00160         setVar(*track, m_d0_wrt_bs, m_trackTree->d0_wrtBS->at(ii));
00161         setVar(*track, m_z0, m_trackTree->z0->at(ii));
00162         setVar(*track, m_z0_wrt_bs, m_trackTree->z0_wrtBS->at(ii));
00163         setVar(*track, m_phi, m_trackTree->phi->at(ii));
00164 
00165         
00166 
00167       }
00168       
00169       if(m_truthTree){
00170         setVar(*track, m_isMC, true);
00171       }else{
00172         setVar(*track, m_isMC, false);
00173       }
00174       
00175       m_tracks.push_back(track);
00176     }
00177     
00178     
00179     
00180     return m_tracks;
00181   }
00182   
00184   
00185   const ClusterVector &D3PDConverter::loadClusters(){
00186     
00187     bool isMC = m_truthTree && m_treeFactory->checkTree(m_truthTree);
00188     
00189     
00190     m_clusters.clear();
00191     
00192     if(!m_clusterTree || !m_treeFactory->checkTree(m_clusterTree)){
00193       return m_clusters;
00194     }
00195     
00196     size_t n = 0;
00197     bool extraMaterial = false; //true;
00198     
00199     if(!extraMaterial) n = m_clusterTree->cl_had_n;
00200     else n = m_clusterTree->cl_n;
00201     
00202     //    std::cout<<"D3PDConverter: " << n <<std::endl;
00203     
00204     for(size_t  ii=0; ii != n; ++ii){
00205       
00206       /*      std::cout << "m_E_calib = " << m_clusterTree->cl_had_pt->at(ii)/sin( 2.*atan(exp(-1.*m_clusterTree->cl_had_eta->at(ii))) )
00207        << "m_E_em = " << m_clusterTree->cl_had_E_em->at(ii)
00208        << "m_E_had = " << m_clusterTree->cl_had_E_had->at(ii)
00209        << "m_ET = " << m_clusterTree->cl_had_pt->at(ii)
00210        << "m_eta = " << m_clusterTree->cl_had_eta->at(ii)
00211        << "m_phi = " << m_clusterTree->cl_had_phi->at(ii)
00212        << std::endl;
00213        */
00214       ClusterPtr cluster(new Cluster());
00215       //      std::cout << "iteration number " << ii << std::endl;
00216       //      std::cout << m_clusterTree->cl_pt->at(0) << std::endl;
00217       
00218       float ET_calib;
00219       float eta;
00220       float phi;
00221       float E_calib;
00222       float E_em;
00223       float E_had;
00224       
00225       if(!extraMaterial){
00226         // variable names in standard D3PDs
00227         ET_calib =  m_clusterTree->cl_had_pt->at(ii);   
00228         eta =  m_clusterTree->cl_had_eta->at(ii);
00229         phi =  m_clusterTree->cl_had_phi->at(ii);
00230         E_calib = ET_calib/sin( 2.*atan(exp(-1.*eta)));
00231         E_em = m_clusterTree->cl_had_E_em->at(ii);
00232         E_had = m_clusterTree->cl_had_E_had->at(ii);
00233         
00234       } else {
00235         // variable names in Oldrich/Pavel's D3PDs
00236         ET_calib =  m_clusterTree->cl_pt->at(ii);       
00237         eta =  m_clusterTree->cl_eta->at(ii);
00238         phi =  m_clusterTree->cl_phi->at(ii);
00239         E_calib = ET_calib/sin( 2.*atan(exp(-1.*eta)));
00240         E_em = m_clusterTree->cl_E_em->at(ii);
00241         E_had = m_clusterTree->cl_E_had->at(ii);
00242         
00243         
00244       }
00245       
00246       setVar(*cluster, m_clusIsMC, isMC );
00247       
00248       setVar(*cluster, m_E_calib, E_calib );
00249       
00250       setVar(*cluster, m_E_em, E_em);
00251       setVar(*cluster, m_E_had, E_had);
00252       
00253       setVar(*cluster, m_ET, ET_calib);
00254       
00255       setVar(*cluster, m_eta, eta);
00256       setVar(*cluster, m_phi, phi);
00257       //setVar(*cluster, m_M, m_clusterTree->cl_had_m->at(ii));
00258       
00259       
00260       
00261       if(m_clusterTree->hasCaloLayerEnergies()){
00262         setVar(*cluster, m_hasCaloLayerEnergies, true);
00263         setVar(*cluster, m_E_EMB1, m_clusterTree->cl_had_E_EMB1->at(ii));
00264         setVar(*cluster, m_E_EMB2, m_clusterTree->cl_had_E_EMB2->at(ii));
00265         setVar(*cluster, m_E_EMB3, m_clusterTree->cl_had_E_EMB3->at(ii));
00266         setVar(*cluster, m_E_EME1, m_clusterTree->cl_had_E_EME1->at(ii));
00267         setVar(*cluster, m_E_EME2, m_clusterTree->cl_had_E_EME2->at(ii));
00268         setVar(*cluster, m_E_EME3, m_clusterTree->cl_had_E_EME3->at(ii));
00269         setVar(*cluster, m_E_HEC0, m_clusterTree->cl_had_E_HEC0->at(ii));
00270         setVar(*cluster, m_E_HEC1, m_clusterTree->cl_had_E_HEC1->at(ii));
00271         setVar(*cluster, m_E_HEC2, m_clusterTree->cl_had_E_HEC2->at(ii));
00272         setVar(*cluster, m_E_HEC3, m_clusterTree->cl_had_E_HEC3->at(ii));
00273         setVar(*cluster, m_E_FCAL0, m_clusterTree->cl_had_E_FCAL0->at(ii));
00274         setVar(*cluster, m_E_FCAL1, m_clusterTree->cl_had_E_FCAL1->at(ii));
00275         setVar(*cluster, m_E_FCAL2, m_clusterTree->cl_had_E_FCAL2->at(ii));
00276         setVar(*cluster, m_E_PreSamplerB, m_clusterTree->cl_had_E_PreSamplerB->at(ii));
00277         setVar(*cluster, m_E_PreSamplerE, m_clusterTree->cl_had_E_PreSamplerE->at(ii));
00278         setVar(*cluster, m_E_TileBar0, m_clusterTree->cl_had_E_TileBar0->at(ii));
00279         setVar(*cluster, m_E_TileBar1, m_clusterTree->cl_had_E_TileBar1->at(ii));
00280         setVar(*cluster, m_E_TileBar2, m_clusterTree->cl_had_E_TileBar2->at(ii));
00281         setVar(*cluster, m_E_TileExt0, m_clusterTree->cl_had_E_TileExt0->at(ii));
00282         setVar(*cluster, m_E_TileExt1, m_clusterTree->cl_had_E_TileExt1->at(ii));
00283         setVar(*cluster, m_E_TileExt2, m_clusterTree->cl_had_E_TileExt2->at(ii));
00284         setVar(*cluster, m_E_TileGap1, m_clusterTree->cl_had_E_TileGap1->at(ii));
00285         setVar(*cluster, m_E_TileGap2, m_clusterTree->cl_had_E_TileGap2->at(ii));
00286         setVar(*cluster, m_E_TileGap3, m_clusterTree->cl_had_E_TileGap3->at(ii));
00287         
00288         setVar(*cluster, m_phi_EMB1, m_clusterTree->cl_had_phi_EMB1->at(ii));
00289         setVar(*cluster, m_phi_EMB2, m_clusterTree->cl_had_phi_EMB2->at(ii));
00290         setVar(*cluster, m_phi_EMB3, m_clusterTree->cl_had_phi_EMB3->at(ii));
00291         setVar(*cluster, m_phi_EME1, m_clusterTree->cl_had_phi_EME1->at(ii));
00292         setVar(*cluster, m_phi_EME2, m_clusterTree->cl_had_phi_EME2->at(ii));
00293         setVar(*cluster, m_phi_EME3, m_clusterTree->cl_had_phi_EME3->at(ii));
00294         setVar(*cluster, m_phi_HEC0, m_clusterTree->cl_had_phi_HEC0->at(ii));
00295         setVar(*cluster, m_phi_HEC1, m_clusterTree->cl_had_phi_HEC1->at(ii));
00296         setVar(*cluster, m_phi_HEC2, m_clusterTree->cl_had_phi_HEC2->at(ii));
00297         setVar(*cluster, m_phi_HEC3, m_clusterTree->cl_had_phi_HEC3->at(ii));
00298         setVar(*cluster, m_phi_FCAL0, m_clusterTree->cl_had_phi_FCAL0->at(ii));
00299         setVar(*cluster, m_phi_FCAL1, m_clusterTree->cl_had_phi_FCAL1->at(ii));
00300         setVar(*cluster, m_phi_FCAL2, m_clusterTree->cl_had_phi_FCAL2->at(ii));
00301         setVar(*cluster, m_phi_PreSamplerB, m_clusterTree->cl_had_phi_PreSamplerB->at(ii));
00302         setVar(*cluster, m_phi_PreSamplerE, m_clusterTree->cl_had_phi_PreSamplerE->at(ii));
00303         setVar(*cluster, m_phi_TileBar0, m_clusterTree->cl_had_phi_TileBar0->at(ii));
00304         setVar(*cluster, m_phi_TileBar1, m_clusterTree->cl_had_phi_TileBar1->at(ii));
00305         setVar(*cluster, m_phi_TileBar2, m_clusterTree->cl_had_phi_TileBar2->at(ii));
00306         setVar(*cluster, m_phi_TileExt0, m_clusterTree->cl_had_phi_TileExt0->at(ii));
00307         setVar(*cluster, m_phi_TileExt1, m_clusterTree->cl_had_phi_TileExt1->at(ii));
00308         setVar(*cluster, m_phi_TileExt2, m_clusterTree->cl_had_phi_TileExt2->at(ii));
00309         setVar(*cluster, m_phi_TileGap1, m_clusterTree->cl_had_phi_TileGap1->at(ii));
00310         setVar(*cluster, m_phi_TileGap2, m_clusterTree->cl_had_phi_TileGap2->at(ii));
00311         setVar(*cluster, m_phi_TileGap3, m_clusterTree->cl_had_phi_TileGap3->at(ii));
00312         
00313         setVar(*cluster, m_eta_EMB1, m_clusterTree->cl_had_eta_EMB1->at(ii));
00314         setVar(*cluster, m_eta_EMB2, m_clusterTree->cl_had_eta_EMB2->at(ii));
00315         setVar(*cluster, m_eta_EMB3, m_clusterTree->cl_had_eta_EMB3->at(ii));
00316         setVar(*cluster, m_eta_EME1, m_clusterTree->cl_had_eta_EME1->at(ii));
00317         setVar(*cluster, m_eta_EME2, m_clusterTree->cl_had_eta_EME2->at(ii));
00318         setVar(*cluster, m_eta_EME3, m_clusterTree->cl_had_eta_EME3->at(ii));
00319         setVar(*cluster, m_eta_HEC0, m_clusterTree->cl_had_eta_HEC0->at(ii));
00320         setVar(*cluster, m_eta_HEC1, m_clusterTree->cl_had_eta_HEC1->at(ii));
00321         setVar(*cluster, m_eta_HEC2, m_clusterTree->cl_had_eta_HEC2->at(ii));
00322         setVar(*cluster, m_eta_HEC3, m_clusterTree->cl_had_eta_HEC3->at(ii));
00323         setVar(*cluster, m_eta_FCAL0, m_clusterTree->cl_had_eta_FCAL0->at(ii));
00324         setVar(*cluster, m_eta_FCAL1, m_clusterTree->cl_had_eta_FCAL1->at(ii));
00325         setVar(*cluster, m_eta_FCAL2, m_clusterTree->cl_had_eta_FCAL2->at(ii));
00326         setVar(*cluster, m_eta_PreSamplerB, m_clusterTree->cl_had_eta_PreSamplerB->at(ii));
00327         setVar(*cluster, m_eta_PreSamplerE, m_clusterTree->cl_had_eta_PreSamplerE->at(ii));
00328         setVar(*cluster, m_eta_TileBar0, m_clusterTree->cl_had_eta_TileBar0->at(ii));
00329         setVar(*cluster, m_eta_TileBar1, m_clusterTree->cl_had_eta_TileBar1->at(ii));
00330         setVar(*cluster, m_eta_TileBar2, m_clusterTree->cl_had_eta_TileBar2->at(ii));
00331         setVar(*cluster, m_eta_TileExt0, m_clusterTree->cl_had_eta_TileExt0->at(ii));
00332         setVar(*cluster, m_eta_TileExt1, m_clusterTree->cl_had_eta_TileExt1->at(ii));
00333         setVar(*cluster, m_eta_TileExt2, m_clusterTree->cl_had_eta_TileExt2->at(ii));
00334         setVar(*cluster, m_eta_TileGap1, m_clusterTree->cl_had_eta_TileGap1->at(ii));
00335         setVar(*cluster, m_eta_TileGap2, m_clusterTree->cl_had_eta_TileGap2->at(ii));
00336         setVar(*cluster, m_eta_TileGap3, m_clusterTree->cl_had_eta_TileGap3->at(ii));
00337         
00338       }else{
00339         setVar(*cluster, m_hasCaloLayerEnergies, false);
00340       }
00341       
00342       if(m_clusterTree->hasClusterMoments()){
00343         //std::cout<<"D3PDConverter: setting cluster moments"<<std::endl;
00344         setVar(*cluster, m_hasClusterMoments, true);
00345         setVar(*cluster, m_cellmaxfrac,  m_clusterTree->cl_had_cellmaxfrac->at(ii)  );
00346         setVar(*cluster, m_centerlambda, m_clusterTree->cl_had_centerlambda->at(ii) );
00347         setVar(*cluster, m_firstEdens,   m_clusterTree->cl_had_firstEdens->at(ii)   );
00348         setVar(*cluster, m_lateral,      m_clusterTree->cl_had_lateral->at(ii)      );
00349         setVar(*cluster, m_longitudinal, m_clusterTree->cl_had_longitudinal->at(ii) );
00350         setVar(*cluster, m_secondR,      m_clusterTree->cl_had_secondR->at(ii)      );
00351         setVar(*cluster, m_secondlambda, m_clusterTree->cl_had_secondlambda->at(ii) );
00352         setVar(*cluster, m_time,         m_clusterTree->cl_had_time->at(ii)         );
00353         setVar(*cluster, m_deltaPhi,     m_clusterTree->cl_had_deltaPhi->at(ii)     );
00354         setVar(*cluster, m_deltaTheta,   m_clusterTree->cl_had_deltaTheta->at(ii)   );
00355       }else{
00356         setVar(*cluster, m_hasClusterMoments, false);
00357       }
00358       
00359       m_clusters.push_back(cluster);
00360     }
00361     
00362     return m_clusters;
00363   }
00365   const JetVector &D3PDConverter::loadJets(const JetKey &jetKey, const Event *evt){
00366     
00367     boost::unordered_map<JetKey, JetVector>::iterator jetIt = m_jets.find(jetKey);
00368     
00369     if(jetIt == m_jets.end()){
00370       jetIt = (m_jets.insert(std::make_pair(jetKey, JetVector()))).first;
00371     }
00372     
00373     (jetIt->second).clear();
00374     
00375     D3PDTree::JetTreePtr jetTree = m_usedJetTrees[jetKey];
00376     
00377     if(!jetTree){
00378       for(vector<D3PDTree::JetTreePtr>::iterator tree = m_jetTrees.begin();
00379           tree != m_jetTrees.end(); ++tree){
00380         if((*tree)->matchesJetDefn(jetKey)){
00381           jetTree = *tree;
00382           m_usedJetTrees[jetKey] = *tree;
00383         }
00384       }
00385     }
00386     
00387     if(!jetTree || !m_treeFactory->checkTree(jetTree)){
00388       return jetIt->second;
00389     }
00390     
00391     JetKeyConstPtr key(new JetKey(jetKey));
00392     
00393     for(int ii=0; ii != jetTree->jet_n; ++ii){
00394       
00395       JetPtr jet(new Jet(key,
00396                          jetTree->jet_E->at(ii), jetTree->jet_pt->at(ii),
00397                          jetTree->jet_m->at(ii),
00398                          jetTree->jet_eta->at(ii), jetTree->jet_phi->at(ii)));
00399 
00400       setVar(*jet, m_hecFraction, jetTree->hecFraction->at(ii)    );
00401       setVar(*jet, m_hecQuality, jetTree->hecQuality->at(ii)      );
00402       setVar(*jet, m_larQuality, jetTree->larQuality->at(ii)      );
00403       setVar(*jet, m_averageLARQualityFraction, jetTree->averageLArQualityFraction->at(ii));
00404       setVar(*jet, m_negEnergy, jetTree->negEnergy->at(ii)        );
00405       setVar(*jet, m_trackPTSum, jetTree->trackPTSum->at(ii)      );
00406       setVar(*jet, m_fracSamplingMax, jetTree->fracSamplingMax->at(ii));
00407       setVar(*jet, m_emScaleEta, jetTree->emScaleEta->at(ii)      );
00408       setVar(*jet, m_emFrac, jetTree->emFrac->at(ii)              );
00409       
00410       setVar(*jet, m_tileGap3, jetTree->tileGap3->at(ii)          );
00411       setVar(*jet, m_bchCorrCell, jetTree->bChCorrCell->at(ii)    );
00412       
00413       setVar(*jet, m_isBadLoose, jetTree->jet_isBadLoose->at(ii)  );
00414       setVar(*jet, m_isBadMedium,jetTree->jet_isBadMedium->at(ii) );
00415       setVar(*jet, m_isBadTight, jetTree->jet_isBadTight->at(ii)  );
00416       
00417       setVar(*jet, m_event, evt);
00418       (jetIt->second).push_back(jet);
00419     }
00420     return jetIt->second;
00421   }
00423   const TruthJetVector &D3PDConverter::loadTruthJets(){
00424     
00425     m_truthJets.clear();
00426     
00427     if(!m_truthJetTree || !m_treeFactory->checkTree(m_truthJetTree)){
00428       return m_truthJets;
00429     }
00430     
00431     for(int ii=0; ii != m_truthJetTree->truthJet_n; ++ii){
00432       TruthJetPtr truthJet(new TruthJet());
00433       
00434       //      double ushe = m_truthJetTree->truthJet_E->at(ii);
00435       
00436       setVar(*truthJet, m_E,          m_truthJetTree->truthJet_E->at(ii)           );
00437       setVar(*truthJet, m_PT,         m_truthJetTree->truthJet_pt->at(ii)          );
00438       setVar(*truthJet, m_eta,        m_truthJetTree->truthJet_eta->at(ii)         );
00439       setVar(*truthJet, m_phi,        m_truthJetTree->truthJet_phi->at(ii)         );
00440       
00441       m_truthJets.push_back(truthJet);
00442       
00443     }
00444     return m_truthJets;
00445   }
00447   EtMissPtr D3PDConverter::loadEtMiss(){
00448     
00449     EtMiss *met = new EtMiss();
00450     
00451     if(!m_etmissTree || !m_treeFactory->checkTree(m_etmissTree)){
00452       return EtMissPtr(met);
00453     }
00454     
00455     setVar(*met, m_nocalSumEt, m_etmissTree->MET_Topo_sumet); 
00456     setVar(*met, m_nocalMet, m_etmissTree->MET_Topo_et); 
00457     setVar(*met, m_nocalMetx, m_etmissTree->MET_Topo_etx);
00458     setVar(*met, m_nocalMety, m_etmissTree->MET_Topo_ety);
00459     
00460     setVar(*met, m_calibSumEt, m_etmissTree->MET_LocHadTopo_sumet); 
00461     setVar(*met, m_calibMet, m_etmissTree->MET_LocHadTopo_et); 
00462     setVar(*met, m_calibMetx, m_etmissTree->MET_LocHadTopo_etx); 
00463     setVar(*met, m_calibMety, m_etmissTree->MET_LocHadTopo_ety); 
00464     
00465     setVar(*met, m_intTruthSumEt, m_etmissTree->MET_Truth_Int_sumet);
00466     setVar(*met, m_intTruthMet, m_etmissTree->MET_Truth_Int_et);
00467     setVar(*met, m_intTruthMetx, m_etmissTree->MET_Truth_Int_etx);
00468     setVar(*met, m_intTruthMety, m_etmissTree->MET_Truth_Int_ety);
00469     
00470     setVar(*met, m_ninTruthSumEt, m_etmissTree->MET_Truth_NonInt_sumet);
00471     setVar(*met, m_ninTruthMet, m_etmissTree->MET_Truth_NonInt_et);
00472     setVar(*met, m_ninTruthMetx, m_etmissTree->MET_Truth_NonInt_etx);
00473     setVar(*met, m_ninTruthMety, m_etmissTree->MET_Truth_NonInt_ety);
00474     
00475     return EtMissPtr(met);
00476     
00477   }
00478   
00480   const VertexVector &D3PDConverter::loadVertices(const Event *evt){
00481     
00482     m_vertices.clear();
00483     
00484     if(!m_vertexTree || !m_treeFactory->checkTree(m_vertexTree)) {
00485       return m_vertices;
00486     }
00487     
00488     for(int ii=0; ii != m_vertexTree->n; ++ii){
00489       VertexPtr vertex(new Vertex());
00490       setVar(*vertex, m_x, m_vertexTree->x->at(ii));
00491       setVar(*vertex, m_y, m_vertexTree->y->at(ii));
00492       setVar(*vertex, m_z, m_vertexTree->z->at(ii));
00493       setVar(*vertex, m_nTracks, m_vertexTree->nTracks->at(ii));
00494       setVar(*vertex, m_type, Vertex::VertexType(m_vertexTree->type->at(ii)));
00495       
00496       if(m_trackVtxTree && m_treeFactory->checkTree(m_trackVtxTree)){
00497         setVar(*vertex, m_haveTrackIDs, true);
00498         setVar(*vertex, m_event, evt);
00499         setVar(*vertex, m_trackIDs, m_trackVtxTree->trackIndices->at(ii));
00500       }
00501       
00502       m_vertices.push_back(vertex);
00503     }
00504      
00505     return m_vertices;
00506   }
00507   
00509   TriggerDecisionPtr D3PDConverter::loadTriggerDecision(){
00510   
00511     TriggerDecision *td = new TriggerDecision();
00512 
00513     if(!m_trigDecisionTree || !m_treeFactory->checkTree(m_trigDecisionTree)){
00514       return TriggerDecisionPtr(td);
00515     }
00516     
00517     setVar(*td, m_ctpBits, m_trigDecisionTree->L1_TAV);
00518     setVar(*td, m_efPassedPhysics, m_trigDecisionTree->EF_passedPhysics);
00519     setVar(*td, m_l2PassedPhysics, m_trigDecisionTree->L2_passedPhysics);
00520 //    td->m_efPassedPhysics = m_trigDecisionTree->EF_passedPhysics;
00521     return TriggerDecisionPtr(td);
00522   }
00523   
00525   L1TriggerBitPtr D3PDConverter::loadL1Trigger(){
00526     L1TriggerBit * l1 = new L1TriggerBit();
00527     
00528     
00529     if(!m_l1TriggerTree || !m_treeFactory->checkTree(m_l1TriggerTree)){
00530       
00531       return L1TriggerBitPtr(l1);
00532     }
00533     
00534     setVar(*l1, m_lvl1aBC, m_l1TriggerTree->RDO_lvl1aBC);
00535     setVar(*l1, m_rdo_TAV, m_l1TriggerTree->RDO_tav);
00536     
00537     return L1TriggerBitPtr(l1);
00538   }
00539   
00541   DetectorErrorsConstPtr D3PDConverter::loadDetectorErrors(){
00542     
00543     if(!m_detectorErrorsTree || !m_treeFactory->checkTree(m_detectorErrorsTree)){
00544       return DetectorErrorsConstPtr((DetectorErrors*)0);
00545     }
00546     
00547     DetectorErrorsConstPtr ers
00548     (new DetectorErrors(m_detectorErrorsTree->pixelError,
00549                         m_detectorErrorsTree->sctError, 
00550                         m_detectorErrorsTree->trtError,
00551                         m_detectorErrorsTree->larError,
00552                         m_detectorErrorsTree->tileError,
00553                         m_detectorErrorsTree->muonError,
00554                         m_detectorErrorsTree->fwdError));
00555     
00556     return ers;
00557   }
00558   
00560 
00561   /*
00562   const L2J7JetVector &D3PDConverter::loadL2J7Jets(){
00563     m_l2J7Jets.clear();
00564     
00565     if(!m_l2J7JetTree || !m_treeFactory->checkTree(m_l2J7JetTree)){
00566             
00567       return m_l2J7Jets;
00568     }
00569         
00570     for(int ii=0; ii != m_l2J7JetTree->n; ++ii){
00571       L2J7JetPtr l2Jet(new L2J7Jet());
00572       
00573       setVar(*l2Jet, m_eta,    m_l2J7JetTree->eta->at(ii));
00574       setVar(*l2Jet, m_phi,    m_l2J7JetTree->phi->at(ii));
00575       setVar(*l2Jet, m_e,      m_l2J7JetTree->e->at(ii));
00576       setVar(*l2Jet, m_mass,   m_l2J7JetTree->m->at(ii));
00577       setVar(*l2Jet, m_eHad,   m_l2J7JetTree->eHad0->at(ii));
00578       setVar(*l2Jet, m_eEM,    m_l2J7JetTree->eEM0->at(ii));
00579       setVar(*l2Jet, m_l1Word, m_l2J7JetTree->RoIWord->at(ii));
00580       
00581       m_l2J7Jets.push_back(l2Jet);
00582     }
00583     
00584     return m_l2J7Jets;
00585   }
00586   */
00588   L2SpacePointsConstPtr D3PDConverter::loadL2SpacePoints(){
00589     L2SpacePoints * l2sp = new L2SpacePoints();
00590     
00591     if(!m_l2SpacePointsTree || !m_treeFactory->checkTree(m_l2SpacePointsTree)){
00592       return L2SpacePointsConstPtr(l2sp);      
00593     }
00594     
00595     setVar(*l2sp, m_sctEndCapA, m_l2SpacePointsTree->sctSpEndCapA);
00596     setVar(*l2sp, m_sctEndCapC, m_l2SpacePointsTree->sctSpEndCapC);
00597     setVar(*l2sp, m_sctBarrel, m_l2SpacePointsTree->sctSpBarrel);
00598     
00599     return L2SpacePointsConstPtr(l2sp);
00600   }
00601   
00603   const TriggerConfiguration &D3PDConverter::loadTriggerConfiguration(){
00604     
00605     if(!m_dbKeysTree || !m_treeFactory->checkTree(m_dbKeysTree)){
00606       m_trigConfiguration.clear();
00607       return m_trigConfiguration;
00608     }
00609     
00610     setVar(m_trigConfiguration, m_smk, m_dbKeysTree->DB_SMK);
00611     setVar(m_trigConfiguration, m_l1PSK, m_dbKeysTree->DB_L1PSK);
00612     setVar(m_trigConfiguration, m_hltPSK, m_dbKeysTree->DB_HLTPSK);
00613     
00614     if(!m_trigConfTree){
00615       
00616       setVar(m_trigConfiguration, m_status, TriggerConfiguration::EMPTY);
00617       return m_trigConfiguration;
00618     }
00619     
00620     bool changed = m_trigConfTree->setKeys(m_dbKeysTree->DB_SMK, m_dbKeysTree->DB_L1PSK, m_dbKeysTree->DB_HLTPSK);
00621     
00622     if(!m_treeFactory->checkTree(m_trigConfTree)){
00623       setVar(m_trigConfiguration, m_status, TriggerConfiguration::EMPTY);
00624       return m_trigConfiguration;
00625     }
00626     
00627     if(!changed) return m_trigConfiguration;
00628     
00629     std::cout<<"Filling m_trigConfiguration"<<std::endl;
00630     
00631     m_trigConfiguration.resetChainNames();
00632 
00633     setVar(m_trigConfiguration, m_l1Names, *(m_trigConfTree->lvl1NameMap));
00634     setVar(m_trigConfiguration, m_hltNames, *(m_trigConfTree->hltNameMap));
00635     setVar(m_trigConfiguration, m_hltPrescales, *(m_trigConfTree->hltPrescaleMap));
00636     setVar(m_trigConfiguration, m_l1Prescales, *(m_trigConfTree->lvl1PrescaleMap));
00637     
00638     setVar(m_trigConfiguration, m_lowerChainNames, *(m_trigConfTree->hltLowerChainName));
00639     setVar(m_trigConfiguration, m_status, TriggerConfiguration::FILLED);
00640     
00641     return m_trigConfiguration;
00642   }
00643   
00645   const TruthParticleVector &D3PDConverter::loadTruthParticles(){
00646     m_truthParticles.clear();
00647     
00648     if(!m_truthTree || !m_treeFactory->checkTree(m_truthTree)){
00649       return m_truthParticles;
00650     }
00651     
00652     for(int ii=0; ii!= m_truthTree->n; ++ii){
00653       TruthParticlePtr particle(new TruthParticle());
00654       setVar(*particle, m_pdg,       m_truthTree->pdg->at(ii));
00655       setVar(*particle, m_charge,    m_truthTree->charge->at(ii));
00656       setVar(*particle, m_barcode,   m_truthTree->barcode->at(ii));
00657       setVar(*particle, m_status,    m_truthTree->status->at(ii));
00658       
00659       setVar(*particle, m_eta, m_truthTree->gen_eta->at(ii));
00660       setVar(*particle, m_haveEta, true);
00661       setVar(*particle, m_phi, m_truthTree->gen_phi->at(ii));
00662       setVar(*particle, m_pt,  m_truthTree->gen_pt->at(ii));
00663 
00664       if(m_truthEnergyTree && m_treeFactory->checkTree(m_truthEnergyTree)){
00665         setVar(*particle, m_e, m_truthEnergyTree->gen_energy->at(ii));
00666         setVar(*particle, m_motherPdg, m_truthEnergyTree->mother_pdg->at(ii));
00667         setVar(*particle, m_haveE, true);
00668         setVar(*particle, m_haveMotherPdgId, true);
00669       }
00670       
00671       if(m_truthMassTree && m_treeFactory->checkTree(m_truthMassTree)){
00672         setVar(*particle, m_mass, m_truthMassTree->gen_mass->at(ii));
00673         setVar(*particle, m_haveMass, true);
00674       }
00675       
00676       m_truthParticles.push_back(particle);
00677     }
00678     
00679     return m_truthParticles;
00680   }
00681   
00683   const VertexVector &D3PDConverter::loadTruthVertices(){
00684     m_truthVertices.clear();
00685     
00686     if(!m_truthVertexTree || !m_treeFactory->checkTree(m_truthVertexTree)){
00687       return m_truthVertices;
00688     }
00689         
00690     for(int ii=0; ii != m_truthVertexTree->vx_n; ++ii){
00691       VertexPtr vertex(new Vertex());
00692       setVar(*vertex, m_x, m_truthVertexTree->vx_x->at(ii));
00693       setVar(*vertex, m_y, m_truthVertexTree->vx_y->at(ii));
00694       setVar(*vertex, m_z, m_truthVertexTree->vx_z->at(ii));
00695       setVar(*vertex, m_type, Vertex::TRUTH);
00696             
00697       m_truthVertices.push_back(vertex);
00698     }
00699     
00700     
00701     return m_truthVertices;
00702   }
00703   
00705   const Event &D3PDConverter::loadEvent(){
00706     
00707     m_event.clear();
00708         
00709     if(!m_eventTree || !m_treeFactory->checkTree(m_eventTree)){
00710       return m_event;
00711     }
00712 
00713     setVar(m_event, m_runNumber, m_eventTree->RunNumber);
00714     setVar(m_event, m_eventNumber, m_eventTree->EventNumber);
00715     setVar(m_event, m_lumiBlock, m_eventTree->lbn);
00716     setVar(m_event, m_weight, 1.0);
00717     
00718     if(m_goodRunsList.isEnabled() && !m_truthTree){
00719       setVar(m_event, m_goodRun, m_goodRunsList.checkRun(m_event));
00720       setVar(m_event, m_goodLumiBlock, m_goodRunsList.checkLBN(m_event));
00721     }
00722     
00723     //bool isMC = (m_simpleTruthTree && m_treeFactory->checkTree(m_simpleTruthTree)) || (m_truthTree && m_treeFactory->checkTree(m_truthTree));
00724     //setVar(m_event, m_eventIsMC, isMC);
00725     
00726     return m_event;
00727   }
00728   
00729 }

Generated on Mon Jul 30 2012 16:56:35 for ForIA by  doxygen 1.7.2