NtupleReader/src/NtupleReader.cxx

00001 //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
00002 // 11.12.2006, AUTHOR: OLIVER KORTNER, STEFFEN KAISER, THIES EHRICH
00003 //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
00004 
00005 //:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
00006 //:: IMPLEMENTATION OF METHODS DEFINED IN THE CLASS NtupleReader ::
00007 //:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
00008 
00009 //::::::::::::::::::
00010 //:: HEADER FILES ::
00011 //::::::::::::::::::
00012 
00013 #include "NtupleReader/NtupleReader.h"
00014 #include "NtupleReader/MyEvent.h"
00015 #include "NtupleReader/MyTrigger.h"
00016 
00017 
00018 //::::::::::::::::::::::::
00019 //:: NAMESPACE SETTINGS ::
00020 //::::::::::::::::::::::::
00021 
00022 using namespace std;
00023 
00024 //*****************************************************************************
00025 
00026 //:::::::::::::::::
00027 //:: METHOD init ::
00028 //:::::::::::::::::
00029 
00030 void NtupleReader::init(const std::vector<std::string> & file_name,
00031         const std::string & tree_name,
00032         MyAnalysis * analysis) {
00033 
00035     // INITIAL CHECKS //
00037 
00038     if (file_name.size()<1) {
00039         cerr << endl
00040             << "Class NtupleReader, method init: ERROR!\n"
00041             << "No file name given!\n";
00042         exit(1);
00043     }
00044 
00045     if (analysis==0) {
00046         cerr << endl
00047             << "Class NtupleReader, method init: ERROR!\n"
00048             << "No analysis class given!\n";
00049         exit(1);
00050     }
00051 
00052 
00054     // CREATE AN MYDATASETINFO OBJECT //
00056 
00057     // open first file //
00058     TFile *first_file = new TFile(file_name[0].c_str() , "READ");
00059 
00060     // create MyDatasetInfo //
00061     m_dataset_info = &MyDatasetInfo::Instance();
00062     //MyDatasetInfo &dataset_info = MyDatasetInfo::Instance();
00063 
00064     // set variables //
00065     m_dataset_info->set_scale(double(m_gev));
00066     m_dataset_info->set_TFile(first_file); 
00067 
00068     // AtlFastFlag // 
00069     TTree *new_aodcontainer_tree = m_dataset_info->get_tree("aod_container_keys")->CloneTree();
00070     TBranch* b_AtlFast_flag = new_aodcontainer_tree->GetBranch("AtlFastFlag");
00071     Bool_t  AtlFastFlag;
00072     b_AtlFast_flag->SetAddress(&AtlFastFlag);
00073     b_AtlFast_flag->GetEntry(0);
00074 
00075     m_dataset_info->set_AtlFastFlag(AtlFastFlag);
00076 
00077 
00078     //track jet flag //
00079     TBranch* b_trackjet_flag = new_aodcontainer_tree->GetBranch("doTrackJets");
00080     Bool_t  trackjet_flag;
00081     b_trackjet_flag->SetAddress(&trackjet_flag);
00082     b_trackjet_flag->GetEntry(0);
00083 
00084     m_dataset_info->set_trackjet_flag(trackjet_flag);
00085 
00086 
00087 
00088     //release and svn revision
00089 
00090     char char_helper[50] = "";
00091 
00092     TString string_release = "0";
00093     TBranch* b_release = new_aodcontainer_tree->GetBranch("release");
00094     if(b_release!=NULL){
00095         b_release->SetAddress(&char_helper);
00096         b_release->GetEntry(0);
00097         string_release = char_helper;
00098     }
00099 
00100     string_release.Resize(2);
00101     m_release = string_release.Atoi();
00102 
00103     m_dataset_info->set_release(m_release);
00104     cout << "release: " << m_release << endl;
00105 
00106     TString string_svnversion = "0";
00107     TBranch* b_svnversion = new_aodcontainer_tree->GetBranch("svnversion");
00108     if(b_svnversion!=NULL){
00109         b_svnversion->SetAddress(&char_helper);
00110         b_svnversion->GetEntry(0);
00111         string_svnversion = char_helper;
00112     }
00113 
00114     string_svnversion.Resize(2);
00115     m_svnversion = string_svnversion.Atoi();
00116 
00117     m_dataset_info->set_svnversion(m_svnversion);
00118     cout << "svnversion: " << m_svnversion << endl;
00119 
00120 
00122     // OPEN THE ROOT FILE AND SET UP THE TREE //
00124 
00125     // chain of ROOT files //
00126     m_chain = new TChain(tree_name.c_str());
00127     for (unsigned int k=0; k<file_name.size(); k++) {
00128         m_chain->Add(file_name[k].c_str());
00129     }
00130 
00131     // set pointer to 0 //
00132     RunNumber = 0;
00133     EventNumber = 0;
00134     StreamATLFAST_ref = 0;
00135     Stream1_ref[153] = 0;
00136     Token[153] = 0;
00137     Run = 0;
00138     Event = 0;
00139     Time = 0;
00140     Weight = 0.;
00141     IEvent = 0;
00142 
00143     trigger_keys_l1 = 0;
00144     trigger_keys_status_l1 = 0;
00145     trigger_keys_l2 = 0;
00146     trigger_keys_status_l2 = 0;
00147     trigger_keys_ef = 0;
00148     trigger_keys_status_ef = 0;
00149 
00150     nb_trigger_mu_lvl1 = 0;
00151     trigger_mu_lvl1_eta = 0;
00152     trigger_mu_lvl1_phi = 0;
00153     trigger_mu_lvl1_threshold_number = 0;
00154     trigger_mu_lvl1_threshold_value = 0;
00155     trigger_mu_lvl1_threshold_name = 0;
00156     nb_trigger_mu_lvl2 = 0;
00157     trigger_mu_lvl2_eta = 0;
00158     trigger_mu_lvl2_phi = 0;
00159     trigger_mu_lvl2_pt = 0;
00160     trigger_mu_lvl2_sigma_pt = 0;
00161     nb_trigger_mu_ef = 0;
00162     trigger_mu_ef_eta = 0;
00163     trigger_mu_ef_phi = 0;
00164     trigger_mu_ef_pt = 0;
00165     trigger_mu_ef_charge1 = 0;
00166     trigger_mu_ef_code = 0;
00167     trigger_met_ex = 0;
00168     trigger_met_ey = 0;
00169     trigger_met_et = 0;
00170     trigger_met_sumEt = 0;
00171 
00172     
00173     nb_rec_tracks                = 0;   
00174     track_p_x                    = 0;    
00175     track_p_y                    = 0;
00176     track_p_z                    = 0;
00177     track_E                      = 0;
00178     track_charge                 = 0;
00179     track_vertex_index           = 0;
00180     track_SCThit                 = 0;
00181     track_Phit                   = 0;
00182     track_BLayerhit              = 0;
00183     track_TRThit                 = 0;
00184     track_MDThit                 = 0;
00185     track_CSChit_eta             = 0;
00186     track_TGChit_eta             = 0;
00187     track_RPChit_eta             = 0;
00188     track_CSChit_phi             = 0;
00189     track_TGChit_phi             = 0;
00190     track_RPChit_phi             = 0;
00191     track_d0                     = 0;
00192     track_z0                     = 0;
00193     track_chi2                   = 0;
00194     track_nDoF                   = 0;
00195     track_trackIsolationEnergy_s = 0;
00196     track_trackIsolationEnergy_0 = 0;
00197     track_trackIsolationEnergy_1 = 0;
00198     track_trackIsolationEnergy_2 = 0;
00199     track_trackIsolationEnergy_3 = 0;
00200 
00201     nb_rec_electrons = 0;
00202     e_p_x = 0;
00203     e_p_y = 0;
00204     e_p_z = 0;
00205     e_E = 0;
00206     e_calo_p_x = 0;
00207     e_calo_p_y = 0;
00208     e_calo_p_z = 0;
00209     e_calo_E = 0;
00210     e_charge = 0;
00211     e_NeuralNet = 0;
00212     e_isEM = 0;
00213     e_id_flag = 0;
00214     e_egamma_flag = 0;
00215     e_softe_flag = 0;
00216     e_E_over_p = 0;
00217     e_TRTHighThresholdHits = 0;
00218     e_TRTHits = 0;
00219     e_Et_in_cone_0 = 0;
00220     e_Et_in_cone_1 = 0;
00221     e_Et_in_cone_2 = 0;
00222     e_Et_in_cone_3 = 0;
00223     e_ethad1 = 0;
00224     e_vertex_index = 0;
00225     e_track_Et_in_cone_0 = 0;
00226     e_track_Et_in_cone_1 = 0;
00227     e_track_Et_in_cone_2 = 0;
00228     e_track_Et_in_cone_3 = 0;
00229     e_trackIsolationEnergy_0 = 0;
00230     e_trackIsolationEnergy_1 = 0;
00231     e_trackIsolationEnergy_2 = 0;
00232     e_trackIsolationEnergy_3 = 0;
00233 
00234     nb_rec_photons = 0;
00235     p_calo_p_x = 0;
00236     p_calo_p_y = 0;
00237     p_calo_p_z = 0;
00238     p_calo_E = 0;
00239     p_charge = 0;
00240     p_NeuralNet = 0;
00241     p_isEM = 0;
00242     p_egamma_flag = 0;
00243     p_Et_in_cone_0 = 0;
00244     p_Et_in_cone_1 = 0;
00245     p_Et_in_cone_2 = 0;
00246     p_Et_in_cone_3 = 0;
00247 
00248     nb_rec_muons = 0;
00249     mu_alg_flag = 0;
00250     mu_p_x = 0;
00251     mu_p_y = 0;
00252     mu_p_z = 0;
00253     mu_E = 0;
00254     mu_charge = 0;
00255     mu_rec_flag = 0;
00256     mu_hasCombinedMuonTrackParticle = 0;
00257     mu_Et_in_cone_0 = 0;
00258     mu_Et_in_cone_1 = 0;
00259     mu_Et_in_cone_2 = 0;
00260     mu_Et_in_cone_3 = 0;
00261     mu_Et_in_cone_4 = 0;
00262     mu_Et_in_cone_5 = 0;
00263     mu_Et_in_cone_6 = 0;
00264     mu_Et_in_cone_7 = 0;
00265     mu_nb_tracks_in_cone_0 = 0;
00266     mu_nb_tracks_in_cone_1 = 0;
00267     mu_nb_tracks_in_cone_2 = 0;
00268     mu_nb_tracks_in_cone_3 = 0;
00269     mu_nb_tracks_in_cone_4 = 0;
00270     mu_nb_tracks_in_cone_5 = 0;
00271     mu_nb_tracks_in_cone_6 = 0;
00272     mu_nb_tracks_in_cone_7 = 0;
00273     mu_fitChi2 = 0;
00274     mu_fitNumberDoF = 0;
00275     mu_fitChi2OverDoF = 0;
00276     mu_matchChi2 = 0;
00277     mu_matchNumberDoF = 0;
00278     mu_matchChi2OverDoF = 0;
00279     mu_vertex_index = 0;
00280     mu_track_Et_in_cone_0 = 0;
00281     mu_track_Et_in_cone_1 = 0;
00282     mu_track_Et_in_cone_2 = 0;
00283     mu_track_Et_in_cone_3 = 0;
00284     mu_track_Et_in_cone_4 = 0;
00285     mu_track_Et_in_cone_5 = 0;
00286     mu_track_Et_in_cone_6 = 0;
00287     mu_track_Et_in_cone_7 = 0;
00288     mu_trackIsolationEnergy_0 = 0;
00289     mu_trackIsolationEnergy_1 = 0;
00290     mu_trackIsolationEnergy_2 = 0;
00291     mu_trackIsolationEnergy_3 = 0;
00292     mu_trackIsolationEnergy_4 = 0;
00293     mu_trackIsolationEnergy_5 = 0;
00294     mu_trackIsolationEnergy_6 = 0;
00295     mu_trackIsolationEnergy_7 = 0;
00296 
00297 
00298     nb_rec_jets = 0;
00299     jet_p_x = 0;
00300     jet_p_y = 0;
00301     jet_p_z = 0;
00302     jet_E = 0;
00303     jet_flag = 0;
00304     jet_btag_weight = 0;
00305     jet_truthflavor = 0;
00306     jet_nb_tracks = 0;
00307     jet_tracks_charge = 0;
00308     jet_tracks_p_x = 0;
00309     jet_tracks_p_y = 0;
00310     jet_tracks_p_z = 0;
00311     jet_tracks_E = 0;
00312     jet_tracks_vertex_index = 0;
00313 
00314     nb_tau_jets = 0;
00315     taujet_p_x = 0;
00316     taujet_p_y = 0;
00317     taujet_p_z = 0;
00318     taujet_E = 0;
00319     taujet_flag = 0;
00320     taujet_charge = 0;
00321     taujet_emRadius = 0;
00322     taujet_isolationFraction = 0;
00323     taujet_centralityFraction = 0;
00324     taujet_nStripCells = 0;
00325     taujet_stripWidth2 = 0;
00326     taujet_llh = 0;
00327     taujet_lowPtTauEleDiscriminant = 0;
00328     taujet_tauENeuralNetwork = 0;
00329     taujet_tauJetNeuralnetwork = 0;
00330     taujet_etHadCalib = 0;
00331     taujet_etEMCalib = 0;
00332     taujet_nb_tracks = 0;
00333     taujet_track_px_1 = 0;
00334     taujet_track_py_1 = 0;
00335     taujet_track_pz_1 = 0;
00336     taujet_track_e_1 = 0;
00337     taujet_track_TRTHighThresholdHits_1 = 0;
00338     taujet_track_TRTHits_1 = 0;
00339     taujet_track_px_2 = 0;
00340     taujet_track_py_2 = 0;
00341     taujet_track_pz_2 = 0;
00342     taujet_track_e_2 = 0;
00343     taujet_track_TRTHighThresholdHits_2 = 0;
00344     taujet_track_TRTHits_2 = 0;
00345     taujet_track_px_3 = 0;
00346     taujet_track_py_3 = 0;
00347     taujet_track_pz_3 = 0;
00348     taujet_track_e_3 = 0;
00349     taujet_track_TRTHighThresholdHits_3 = 0;
00350     taujet_track_TRTHits_3 = 0;
00351 
00352     nb_truth_jets = 0;
00353     truth_jet_p_x = 0;
00354     truth_jet_p_y = 0;
00355     truth_jet_p_z = 0;
00356     truth_jet_E = 0;
00357     truth_jet_flag = 0;
00358     truth_jet_btag_weight = 0;
00359 
00360     nb_truth_particle_all = 0;
00361     nb_truth_particle = 0;
00362     truth_particle_pt = 0;
00363     truth_particle_status = 0;
00364     truth_particle_barcode = 0;
00365     truth_particle_pdgId = 0;
00366     truth_particle_nDaughters = 0;
00367     truth_particle_p_x = 0;
00368     truth_particle_p_y = 0;
00369     truth_particle_p_z = 0;
00370     truth_particle_E = 0;
00371     truth_particle_charge = 0;
00372     truth_particle_nParents = 0;
00373     truth_particle_mother0_barcode = 0;
00374     truth_particle_mother0_pdgId = 0;
00375     truth_particle_vertex_index = 0;
00376     truth_particle_Et_in_cone_0 = 0;
00377     truth_particle_Et_in_cone_1 = 0;
00378     truth_particle_Et_in_cone_2 = 0;
00379     truth_particle_Et_in_cone_3 = 0;
00380     truth_particle_Et_in_cone_4 = 0;
00381 
00382     nb_vertices = 0;
00383     vertex_position_x = 0;
00384     vertex_position_y = 0;
00385     vertex_position_z = 0;
00386     vertex_pos_error_x = 0;
00387     vertex_pos_error_y = 0;
00388     vertex_pos_error_z = 0;
00389     vertex_chi2 = 0;
00390     vertex_ndof = 0;
00391     vertex_Et = 0;
00392     vertex_nb_tracks = 0;
00393 
00394     nb_truth_vertices = 0;
00395     truth_vertex_position_x = 0;
00396     truth_vertex_position_y = 0;
00397     truth_vertex_position_z = 0;
00398     truth_vertex_Et = 0;
00399     truth_vertex_nb_tracks = 0;
00400 
00401     nb_track_jets = 0;
00402     track_jet_p_x = 0;
00403     track_jet_p_y = 0;
00404     track_jet_p_z = 0;
00405     track_jet_E = 0;
00406 
00407     nb_truth_track_jets = 0;
00408     truth_track_jet_p_x = 0;
00409     truth_track_jet_p_y = 0;
00410     truth_track_jet_p_z = 0;
00411     truth_track_jet_E = 0;
00412 
00413 
00414     // set up the tree //
00415     m_chain->SetBranchAddress("trigger_keys_l1",&trigger_keys_l1);
00416     m_chain->SetBranchAddress("trigger_keys_status_l1",&trigger_keys_status_l1);
00417     m_chain->SetBranchAddress("trigger_keys_l2",&trigger_keys_l2);
00418     m_chain->SetBranchAddress("trigger_keys_status_l2",&trigger_keys_status_l2);
00419     m_chain->SetBranchAddress("trigger_keys_ef",&trigger_keys_ef);
00420     m_chain->SetBranchAddress("trigger_keys_status_ef",&trigger_keys_status_ef);
00421 
00422     m_chain->SetBranchAddress("nb_trigger_mu_lvl1",&nb_trigger_mu_lvl1);
00423     m_chain->SetBranchAddress("trigger_mu_lvl1_eta",&trigger_mu_lvl1_eta);
00424     m_chain->SetBranchAddress("trigger_mu_lvl1_phi",&trigger_mu_lvl1_phi);
00425     m_chain->SetBranchAddress("trigger_mu_lvl1_threshold_name",&trigger_mu_lvl1_threshold_name);
00426     m_chain->SetBranchAddress("trigger_mu_lvl1_threshold_number",&trigger_mu_lvl1_threshold_number);
00427     m_chain->SetBranchAddress("trigger_mu_lvl1_threshold_value",&trigger_mu_lvl1_threshold_value);
00428     m_chain->SetBranchAddress("nb_trigger_mu_lvl2",&nb_trigger_mu_lvl2);
00429     m_chain->SetBranchAddress("trigger_mu_lvl2_eta",&trigger_mu_lvl2_eta);
00430     m_chain->SetBranchAddress("trigger_mu_lvl2_phi",&trigger_mu_lvl2_phi);
00431     m_chain->SetBranchAddress("trigger_mu_lvl2_pt",&trigger_mu_lvl2_pt);
00432     m_chain->SetBranchAddress("trigger_mu_lvl2_sigma_pt",&trigger_mu_lvl2_sigma_pt);
00433     m_chain->SetBranchAddress("nb_trigger_mu_ef",&nb_trigger_mu_ef);
00434     m_chain->SetBranchAddress("trigger_mu_ef_eta",&trigger_mu_ef_eta);
00435     m_chain->SetBranchAddress("trigger_mu_ef_phi",&trigger_mu_ef_phi);
00436     m_chain->SetBranchAddress("trigger_mu_ef_pt",&trigger_mu_ef_pt);
00437     m_chain->SetBranchAddress("trigger_mu_ef_charge1",&trigger_mu_ef_charge1);
00438     m_chain->SetBranchAddress("trigger_mu_ef_code",&trigger_mu_ef_code);
00439     m_chain->SetBranchAddress("trigger_met_ex",&trigger_met_ex);
00440     m_chain->SetBranchAddress("trigger_met_ey",&trigger_met_ey);
00441     m_chain->SetBranchAddress("trigger_met_et",&trigger_met_et);
00442     m_chain->SetBranchAddress("trigger_met_sumEt",&trigger_met_sumEt);
00443 
00444     //m_chain->SetBranchAddress("RunNumber",&RunNumber);
00445     m_chain->SetBranchAddress("RunNumber",&RunNumber);
00446     m_chain->SetBranchAddress("EventNumber",&EventNumber);
00447     m_chain->SetBranchAddress("StreamATLFAST_ref",&StreamATLFAST_ref);
00448     m_chain->SetBranchAddress("Stream1_ref",Stream1_ref);
00449     m_chain->SetBranchAddress("Token",Token);
00450     m_chain->SetBranchAddress("Run",&Run);
00451     m_chain->SetBranchAddress("Event",&Event);
00452     m_chain->SetBranchAddress("Time",&Time);
00453     m_chain->SetBranchAddress("Weight",&Weight);
00454     m_chain->SetBranchAddress("IEvent",&IEvent);
00455     
00456     m_chain->SetBranchAddress("nb_rec_tracks",&nb_rec_tracks);
00457     m_chain->SetBranchAddress("track_p_x",&track_p_x);
00458     m_chain->SetBranchAddress("track_p_y",&track_p_y);        
00459     m_chain->SetBranchAddress("track_p_z",&track_p_z);     
00460     m_chain->SetBranchAddress("track_E",&track_E);       
00461     m_chain->SetBranchAddress("track_charge",&track_charge);  
00462     m_chain->SetBranchAddress("track_vertex_index",&track_vertex_index);   
00463     m_chain->SetBranchAddress("track_SCThit",&track_SCThit);  
00464     m_chain->SetBranchAddress("track_Phit",&track_Phit);   
00465     m_chain->SetBranchAddress("track_BLayerhit",&track_BLayerhit);    
00466     m_chain->SetBranchAddress("track_TRThit",&track_TRThit);     
00467     m_chain->SetBranchAddress("track_MDThit",&track_MDThit);    
00468     m_chain->SetBranchAddress("track_CSChit_eta",&track_CSChit_eta);        
00469     m_chain->SetBranchAddress("track_TGChit_eta",&track_TGChit_eta);       
00470     m_chain->SetBranchAddress("track_RPChit_eta",&track_RPChit_eta);           
00471     m_chain->SetBranchAddress("track_CSChit_phi",&track_CSChit_phi);        
00472     m_chain->SetBranchAddress("track_TGChit_phi",&track_TGChit_phi);    
00473     m_chain->SetBranchAddress("track_RPChit_phi",&track_RPChit_phi);
00474     m_chain->SetBranchAddress("track_d0",&track_d0);  
00475     m_chain->SetBranchAddress("track_z0",&track_z0);         
00476     m_chain->SetBranchAddress("track_chi2",&track_chi2);  
00477     m_chain->SetBranchAddress("track_nDoF",&track_nDoF);
00478     m_chain->SetBranchAddress("track_trackIsolationEnergy_s", &track_trackIsolationEnergy_s);
00479     m_chain->SetBranchAddress("track_trackIsolationEnergy_0", &track_trackIsolationEnergy_0);
00480     m_chain->SetBranchAddress("track_trackIsolationEnergy_1", &track_trackIsolationEnergy_1);
00481     m_chain->SetBranchAddress("track_trackIsolationEnergy_2", &track_trackIsolationEnergy_2);
00482     m_chain->SetBranchAddress("track_trackIsolationEnergy_3", &track_trackIsolationEnergy_3);
00483 
00484 
00485 
00486    
00487     m_chain->SetBranchAddress("nb_rec_electrons",&nb_rec_electrons);
00488     m_chain->SetBranchAddress("e_p_x",&e_p_x);
00489     m_chain->SetBranchAddress("e_p_y",&e_p_y);
00490     m_chain->SetBranchAddress("e_p_z",&e_p_z);
00491     m_chain->SetBranchAddress("e_E",&e_E);
00492     m_chain->SetBranchAddress("e_calo_p_x",&e_calo_p_x);
00493     m_chain->SetBranchAddress("e_calo_p_y",&e_calo_p_y);
00494     m_chain->SetBranchAddress("e_calo_p_z",&e_calo_p_z);
00495     m_chain->SetBranchAddress("e_calo_E",&e_calo_E);
00496     m_chain->SetBranchAddress("e_charge",&e_charge);
00497     m_chain->SetBranchAddress("e_NeuralNet",&e_NeuralNet);
00498     m_chain->SetBranchAddress("e_isEM",&e_isEM);
00499     if(m_release==13){
00500         m_chain->SetBranchAddress("e_id_flag",&e_id_flag);
00501     }
00502     m_chain->SetBranchAddress("e_egamma_flag",&e_egamma_flag);
00503     m_chain->SetBranchAddress("e_softe_flag",&e_softe_flag);
00504     m_chain->SetBranchAddress("e_E_over_p",&e_E_over_p);
00505     m_chain->SetBranchAddress("e_TRTHighThresholdHits",&e_TRTHighThresholdHits);
00506     m_chain->SetBranchAddress("e_TRTHits",&e_TRTHits);
00507     m_chain->SetBranchAddress("e_ethad1",&e_ethad1);
00508     m_chain->SetBranchAddress("e_Et_in_cone_0",&e_Et_in_cone_0);
00509     m_chain->SetBranchAddress("e_Et_in_cone_1",&e_Et_in_cone_1);
00510     m_chain->SetBranchAddress("e_Et_in_cone_2",&e_Et_in_cone_2);
00511     m_chain->SetBranchAddress("e_Et_in_cone_3",&e_Et_in_cone_3);
00512     m_chain->SetBranchAddress("e_vertex_index",&e_vertex_index);
00513     m_chain->SetBranchAddress("e_track_Et_in_cone_0",&e_track_Et_in_cone_0);
00514     m_chain->SetBranchAddress("e_track_Et_in_cone_1",&e_track_Et_in_cone_1);
00515     m_chain->SetBranchAddress("e_track_Et_in_cone_2",&e_track_Et_in_cone_2);
00516     m_chain->SetBranchAddress("e_track_Et_in_cone_3",&e_track_Et_in_cone_3);
00517     m_chain->SetBranchAddress("e_trackIsolationEnergy_0",&e_trackIsolationEnergy_0);
00518     m_chain->SetBranchAddress("e_trackIsolationEnergy_1",&e_trackIsolationEnergy_1);
00519     m_chain->SetBranchAddress("e_trackIsolationEnergy_2",&e_trackIsolationEnergy_2);
00520     m_chain->SetBranchAddress("e_trackIsolationEnergy_3",&e_trackIsolationEnergy_3);
00521 
00522     m_chain->SetBranchAddress("nb_rec_photons",&nb_rec_photons);
00523     m_chain->SetBranchAddress("p_calo_p_x",&p_calo_p_x);
00524     m_chain->SetBranchAddress("p_calo_p_y",&p_calo_p_y);
00525     m_chain->SetBranchAddress("p_calo_p_z",&p_calo_p_z);
00526     m_chain->SetBranchAddress("p_calo_E",&p_calo_E);
00527     m_chain->SetBranchAddress("p_charge",&p_charge);
00528     m_chain->SetBranchAddress("p_NeuralNet",&p_NeuralNet);
00529     m_chain->SetBranchAddress("p_isEM",&p_isEM);
00530     m_chain->SetBranchAddress("p_egamma_flag",&p_egamma_flag);
00531     m_chain->SetBranchAddress("p_Et_in_cone_0",&p_Et_in_cone_0);
00532     m_chain->SetBranchAddress("p_Et_in_cone_1",&p_Et_in_cone_1);
00533     m_chain->SetBranchAddress("p_Et_in_cone_2",&p_Et_in_cone_2);
00534     m_chain->SetBranchAddress("p_Et_in_cone_3",&p_Et_in_cone_3);
00535 
00536     m_chain->SetBranchAddress("nb_rec_muons",&nb_rec_muons);
00537     m_chain->SetBranchAddress("mu_alg_flag",&mu_alg_flag);
00538     m_chain->SetBranchAddress("mu_p_x",&mu_p_x);
00539     m_chain->SetBranchAddress("mu_p_y",&mu_p_y);
00540     m_chain->SetBranchAddress("mu_p_z",&mu_p_z);
00541     m_chain->SetBranchAddress("mu_E",&mu_E);
00542     m_chain->SetBranchAddress("mu_charge",&mu_charge);
00543     m_chain->SetBranchAddress("mu_rec_flag",&mu_rec_flag);
00544     m_chain->SetBranchAddress("mu_hasCombinedMuonTrackParticle",&mu_hasCombinedMuonTrackParticle);
00545     m_chain->SetBranchAddress("mu_Et_in_cone_0",&mu_Et_in_cone_0);
00546     m_chain->SetBranchAddress("mu_Et_in_cone_1",&mu_Et_in_cone_1);
00547     m_chain->SetBranchAddress("mu_Et_in_cone_2",&mu_Et_in_cone_2);
00548     m_chain->SetBranchAddress("mu_Et_in_cone_3",&mu_Et_in_cone_3);
00549     m_chain->SetBranchAddress("mu_Et_in_cone_4",&mu_Et_in_cone_4);
00550     m_chain->SetBranchAddress("mu_Et_in_cone_5",&mu_Et_in_cone_5);
00551     m_chain->SetBranchAddress("mu_Et_in_cone_6",&mu_Et_in_cone_6);
00552     m_chain->SetBranchAddress("mu_Et_in_cone_7",&mu_Et_in_cone_7);
00553     m_chain->SetBranchAddress("mu_nb_tracks_in_cone_0",&mu_nb_tracks_in_cone_0);
00554     m_chain->SetBranchAddress("mu_nb_tracks_in_cone_1",&mu_nb_tracks_in_cone_1);
00555     m_chain->SetBranchAddress("mu_nb_tracks_in_cone_2",&mu_nb_tracks_in_cone_2);
00556     m_chain->SetBranchAddress("mu_nb_tracks_in_cone_3",&mu_nb_tracks_in_cone_3);
00557     m_chain->SetBranchAddress("mu_nb_tracks_in_cone_4",&mu_nb_tracks_in_cone_4);
00558     m_chain->SetBranchAddress("mu_nb_tracks_in_cone_5",&mu_nb_tracks_in_cone_5);
00559     m_chain->SetBranchAddress("mu_nb_tracks_in_cone_6",&mu_nb_tracks_in_cone_6);
00560     m_chain->SetBranchAddress("mu_nb_tracks_in_cone_7",&mu_nb_tracks_in_cone_7);
00561     m_chain->SetBranchAddress("mu_fitChi2",&mu_fitChi2);
00562     m_chain->SetBranchAddress("mu_fitNumberDoF",&mu_fitNumberDoF);
00563     m_chain->SetBranchAddress("mu_fitChi2OverDoF",&mu_fitChi2OverDoF);
00564     m_chain->SetBranchAddress("mu_matchChi2",&mu_matchChi2);
00565     m_chain->SetBranchAddress("mu_matchNumberDoF",&mu_matchNumberDoF);
00566     m_chain->SetBranchAddress("mu_matchChi2OverDoF",&mu_matchChi2OverDoF);
00567     m_chain->SetBranchAddress("mu_vertex_index",&mu_vertex_index);
00568     m_chain->SetBranchAddress("mu_track_Et_in_cone_0",&mu_track_Et_in_cone_0);
00569     m_chain->SetBranchAddress("mu_track_Et_in_cone_1",&mu_track_Et_in_cone_1);
00570     m_chain->SetBranchAddress("mu_track_Et_in_cone_2",&mu_track_Et_in_cone_2);
00571     m_chain->SetBranchAddress("mu_track_Et_in_cone_3",&mu_track_Et_in_cone_3);
00572     m_chain->SetBranchAddress("mu_track_Et_in_cone_4",&mu_track_Et_in_cone_4);
00573     m_chain->SetBranchAddress("mu_track_Et_in_cone_5",&mu_track_Et_in_cone_5);
00574     m_chain->SetBranchAddress("mu_track_Et_in_cone_6",&mu_track_Et_in_cone_6);
00575     m_chain->SetBranchAddress("mu_track_Et_in_cone_7",&mu_track_Et_in_cone_7);
00576     m_chain->SetBranchAddress("mu_trackIsolationEnergy_0",&mu_trackIsolationEnergy_0);
00577     m_chain->SetBranchAddress("mu_trackIsolationEnergy_1",&mu_trackIsolationEnergy_1);
00578     m_chain->SetBranchAddress("mu_trackIsolationEnergy_2",&mu_trackIsolationEnergy_2);
00579     m_chain->SetBranchAddress("mu_trackIsolationEnergy_3",&mu_trackIsolationEnergy_3);
00580     m_chain->SetBranchAddress("mu_trackIsolationEnergy_4",&mu_trackIsolationEnergy_4);
00581     m_chain->SetBranchAddress("mu_trackIsolationEnergy_5",&mu_trackIsolationEnergy_5);
00582     m_chain->SetBranchAddress("mu_trackIsolationEnergy_6",&mu_trackIsolationEnergy_6);
00583     m_chain->SetBranchAddress("mu_trackIsolationEnergy_7",&mu_trackIsolationEnergy_7);
00584 
00585     m_chain->SetBranchAddress("nb_rec_jets",&nb_rec_jets);
00586     m_chain->SetBranchAddress("jet_p_x",&jet_p_x);
00587     m_chain->SetBranchAddress("jet_p_y",&jet_p_y);
00588     m_chain->SetBranchAddress("jet_p_z",&jet_p_z);
00589     m_chain->SetBranchAddress("jet_E",&jet_E);
00590     m_chain->SetBranchAddress("jet_flag",&jet_flag);
00591     m_chain->SetBranchAddress("jet_btag_weight",&jet_btag_weight);
00592     m_chain->SetBranchAddress("jet_truthflavor",&jet_truthflavor);
00593     m_chain->SetBranchAddress("jet_nb_tracks",&jet_nb_tracks);
00594     m_chain->SetBranchAddress("jet_tracks_charge",&jet_tracks_charge);
00595     m_chain->SetBranchAddress("jet_tracks_p_x",&jet_tracks_p_x);
00596     m_chain->SetBranchAddress("jet_tracks_p_y",&jet_tracks_p_y);
00597     m_chain->SetBranchAddress("jet_tracks_p_z",&jet_tracks_p_z);
00598     m_chain->SetBranchAddress("jet_tracks_E",&jet_tracks_E);
00599     m_chain->SetBranchAddress("jet_tracks_vertex_index",&jet_tracks_vertex_index);
00600     m_chain->SetBranchAddress("nb_tau_jets",&nb_tau_jets);
00601     m_chain->SetBranchAddress("taujet_p_x",&taujet_p_x);
00602     m_chain->SetBranchAddress("taujet_p_y",&taujet_p_y);
00603     m_chain->SetBranchAddress("taujet_p_z",&taujet_p_z);
00604     m_chain->SetBranchAddress("taujet_E",&taujet_E);
00605     m_chain->SetBranchAddress("taujet_flag",&taujet_flag);
00606     m_chain->SetBranchAddress("taujet_charge",&taujet_charge);
00607     m_chain->SetBranchAddress("taujet_emRadius",&taujet_emRadius);
00608     m_chain->SetBranchAddress("taujet_isolationFraction",&taujet_isolationFraction);
00609     m_chain->SetBranchAddress("taujet_centralityFraction",&taujet_centralityFraction);
00610     m_chain->SetBranchAddress("taujet_stripWidth2",&taujet_stripWidth2);
00611     m_chain->SetBranchAddress("taujet_nStripCells",&taujet_nStripCells);
00612     m_chain->SetBranchAddress("taujet_llh",&taujet_llh);
00613     m_chain->SetBranchAddress("taujet_lowPtTauEleDiscriminant",&taujet_lowPtTauEleDiscriminant);
00614     m_chain->SetBranchAddress("taujet_tauENeuralNetwork",&taujet_tauENeuralNetwork);
00615     m_chain->SetBranchAddress("taujet_tauJetNeuralnetwork",&taujet_tauJetNeuralnetwork);
00616     m_chain->SetBranchAddress("taujet_etHadCalib",&taujet_etHadCalib);
00617     m_chain->SetBranchAddress("taujet_etEMCalib",&taujet_etEMCalib);
00618     m_chain->SetBranchAddress("taujet_nb_tracks",&taujet_nb_tracks);
00619     m_chain->SetBranchAddress("taujet_track_px_1",&taujet_track_px_1);
00620     m_chain->SetBranchAddress("taujet_track_py_1",&taujet_track_py_1);
00621     m_chain->SetBranchAddress("taujet_track_pz_1",&taujet_track_pz_1);
00622     m_chain->SetBranchAddress("taujet_track_e_1",&taujet_track_e_1);
00623     m_chain->SetBranchAddress("taujet_track_TRTHighThresholdHits_1",&taujet_track_TRTHighThresholdHits_1);
00624     m_chain->SetBranchAddress("taujet_track_TRTHits_1",&taujet_track_TRTHits_1);
00625     m_chain->SetBranchAddress("taujet_track_px_2",&taujet_track_px_2);
00626     m_chain->SetBranchAddress("taujet_track_py_2",&taujet_track_py_2);
00627     m_chain->SetBranchAddress("taujet_track_pz_2",&taujet_track_pz_2);
00628     m_chain->SetBranchAddress("taujet_track_e_2",&taujet_track_e_2);
00629     m_chain->SetBranchAddress("taujet_track_TRTHighThresholdHits_2",&taujet_track_TRTHighThresholdHits_2);
00630     m_chain->SetBranchAddress("taujet_track_TRTHits_2",&taujet_track_TRTHits_2);
00631     m_chain->SetBranchAddress("taujet_track_px_3",&taujet_track_px_3);
00632     m_chain->SetBranchAddress("taujet_track_py_3",&taujet_track_py_3);
00633     m_chain->SetBranchAddress("taujet_track_pz_3",&taujet_track_pz_3);
00634     m_chain->SetBranchAddress("taujet_track_e_3",&taujet_track_e_3);
00635     m_chain->SetBranchAddress("taujet_track_TRTHighThresholdHits_3",&taujet_track_TRTHighThresholdHits_3);
00636     m_chain->SetBranchAddress("taujet_track_TRTHits_3",&taujet_track_TRTHits_3);
00637     m_chain->SetBranchAddress("nb_truth_jets",&nb_truth_jets);
00638     m_chain->SetBranchAddress("truth_jet_p_x",&truth_jet_p_x);
00639     m_chain->SetBranchAddress("truth_jet_p_y",&truth_jet_p_y);
00640     m_chain->SetBranchAddress("truth_jet_p_z",&truth_jet_p_z);
00641     m_chain->SetBranchAddress("truth_jet_E",&truth_jet_E);
00642     m_chain->SetBranchAddress("truth_jet_flag",&truth_jet_flag);
00643     m_chain->SetBranchAddress("truth_jet_btag_weight",&truth_jet_btag_weight);
00644     m_chain->SetBranchAddress("nb_truth_particle_all",&nb_truth_particle_all);
00645     m_chain->SetBranchAddress("nb_truth_particle",&nb_truth_particle);
00646     m_chain->SetBranchAddress("truth_particle_pt",&truth_particle_pt);
00647     m_chain->SetBranchAddress("truth_particle_status",&truth_particle_status);
00648     m_chain->SetBranchAddress("truth_particle_barcode",&truth_particle_barcode);
00649     m_chain->SetBranchAddress("truth_particle_pdgId",&truth_particle_pdgId);
00650     m_chain->SetBranchAddress("truth_particle_nDaughters",&truth_particle_nDaughters);
00651     m_chain->SetBranchAddress("truth_particle_p_x",&truth_particle_p_x);
00652     m_chain->SetBranchAddress("truth_particle_p_y",&truth_particle_p_y);
00653     m_chain->SetBranchAddress("truth_particle_p_z",&truth_particle_p_z);
00654     m_chain->SetBranchAddress("truth_particle_E",&truth_particle_E);
00655     m_chain->SetBranchAddress("truth_particle_charge",&truth_particle_charge);
00656     m_chain->SetBranchAddress("truth_particle_nParents",&truth_particle_nParents);
00657     m_chain->SetBranchAddress("truth_particle_mother0_barcode",&truth_particle_mother0_barcode);
00658     m_chain->SetBranchAddress("truth_particle_mother0_pdgId",&truth_particle_mother0_pdgId);
00659     m_chain->SetBranchAddress("truth_particle_vertex_index",&truth_particle_vertex_index);
00660     m_chain->SetBranchAddress("truth_particle_Et_in_cone_0",&truth_particle_Et_in_cone_0);
00661     m_chain->SetBranchAddress("truth_particle_Et_in_cone_1",&truth_particle_Et_in_cone_1);
00662     m_chain->SetBranchAddress("truth_particle_Et_in_cone_2",&truth_particle_Et_in_cone_2);
00663     m_chain->SetBranchAddress("truth_particle_Et_in_cone_3",&truth_particle_Et_in_cone_3);
00664     m_chain->SetBranchAddress("truth_particle_Et_in_cone_4",&truth_particle_Et_in_cone_4);
00665 
00666     missing_Et_object =     new  vector<string>;
00667     missing_Etx =           new  vector<double>;
00668     missing_Ety =           new  vector<double>;
00669     missing_Et =            new  vector<double>;
00670     missing_Etsum =         new  vector<double>;
00671     m_chain->SetBranchAddress("missing_Et_object",&missing_Et_object);
00672     m_chain->SetBranchAddress("missing_Etx",&missing_Etx);
00673     m_chain->SetBranchAddress("missing_Ety",&missing_Ety);
00674     m_chain->SetBranchAddress("missing_Et",&missing_Et);
00675     m_chain->SetBranchAddress("missing_Etsum",&missing_Etsum);
00676 
00677     m_chain->SetBranchAddress("nb_vertices",&nb_vertices);
00678     m_chain->SetBranchAddress("vertex_position_x",&vertex_position_x);
00679     m_chain->SetBranchAddress("vertex_position_y",&vertex_position_y);
00680     m_chain->SetBranchAddress("vertex_position_z",&vertex_position_z);
00681     m_chain->SetBranchAddress("vertex_pos_error_x",&vertex_pos_error_x);
00682     m_chain->SetBranchAddress("vertex_pos_error_y",&vertex_pos_error_y);
00683     m_chain->SetBranchAddress("vertex_pos_error_z",&vertex_pos_error_z);
00684     m_chain->SetBranchAddress("vertex_chi2",&vertex_chi2);
00685     m_chain->SetBranchAddress("vertex_ndof",&vertex_ndof);
00686     m_chain->SetBranchAddress("vertex_Et",&vertex_Et);
00687     m_chain->SetBranchAddress("vertex_nb_tracks",&vertex_nb_tracks);
00688 
00689     m_chain->SetBranchAddress("nb_truth_vertices",&nb_truth_vertices);
00690     m_chain->SetBranchAddress("truth_vertex_position_x",&truth_vertex_position_x);
00691     m_chain->SetBranchAddress("truth_vertex_position_y",&truth_vertex_position_y);
00692     m_chain->SetBranchAddress("truth_vertex_position_z",&truth_vertex_position_z);
00693     m_chain->SetBranchAddress("truth_vertex_Et",&truth_vertex_Et);
00694     m_chain->SetBranchAddress("truth_vertex_nb_tracks",&truth_vertex_nb_tracks);
00695 
00696     m_chain->SetBranchAddress("nb_track_jets",&nb_track_jets);
00697     m_chain->SetBranchAddress("track_jet_p_x",&track_jet_p_x);
00698     m_chain->SetBranchAddress("track_jet_p_y",&track_jet_p_y);
00699     m_chain->SetBranchAddress("track_jet_p_z",&track_jet_p_z);
00700     m_chain->SetBranchAddress("track_jet_E",&track_jet_E);
00701 
00702     m_chain->SetBranchAddress("nb_truth_track_jets",&nb_truth_track_jets);
00703     m_chain->SetBranchAddress("truth_track_jet_p_x",&truth_track_jet_p_x);
00704     m_chain->SetBranchAddress("truth_track_jet_p_y",&truth_track_jet_p_y);
00705     m_chain->SetBranchAddress("truth_track_jet_p_z",&truth_track_jet_p_z);
00706     m_chain->SetBranchAddress("truth_track_jet_E",&truth_track_jet_E);
00707 
00708 
00710     // INITIALIZE THE ANALYSIS //
00712 
00713     m_analysis = analysis;
00714     m_analysis->initialize();
00715 
00716     return;
00717 
00718 }
00719 
00720 //*****************************************************************************
00721 
00722 //:::::::::::::::::::::
00723 //:: METHOD destruct ::
00724 //:::::::::::::::::::::
00725 
00726 void NtupleReader::destruct(void) {
00727     delete missing_Et_object;
00728     return;
00729 
00730 }
00731 
00732 //*****************************************************************************
00733 
00734 //:::::::::::::::::::::::
00735 //:: METHOD event_loop ::
00736 //:::::::::::::::::::::::
00737 
00738 void NtupleReader::event_loop(Int_t nb_events, Int_t first_event) {
00740     // EVENT LOOP //
00742 
00743     //Int_t nb_events;
00744 
00745     if(first_event<0){
00746         cerr<<"You cant skip a negative number of events!"<<endl;
00747         exit(1);
00748     }
00749 
00750     if(nb_events < 0){
00751         nb_events = m_chain->GetEntries()-first_event; 
00752         cout <<nb_events<<endl;
00753     }
00754 
00755     if( first_event+nb_events > m_chain->GetEntries() ){
00756         nb_events = m_chain->GetEntries()-first_event;
00757         cout << "WARNING: first_event+nb_events > m_chain->GetEntries()" << endl; 
00758     }
00759 
00760     cout << "event_loop"<<endl;
00761     cout << "events: " << nb_events << endl;
00762 
00763     if(first_event>0){
00764         cout<<"Skipping the first "<<first_event<<" events!"<<endl;
00765     }
00766 
00767     TLorentzVector tmp_tlv;
00768     TLorentzVector tmp_tlv2;
00769 
00770     Long64_t last_ev=first_event+nb_events;
00771 
00772     for (Long64_t ev=first_event; ev<last_ev; ev++) {
00773 
00774         // status output //
00775         if (ev-first_event!=0 && (ev-first_event)%2000==0) {
00776             cout << ev-first_event << " Events read."<<endl;
00777         }
00778         // cout << " Event "<<ev<<" read."<<endl;
00779         // read the event //
00780 
00781         m_chain->GetEntry(ev);
00782         // create an event and pass it to the user's analysis object //
00783 
00784 
00785         // the trigger info             
00786         if(trigger_keys_l1->size()!=trigger_keys_status_l1->size()){
00787             cerr<<"Unequal vector size in trigger"<<endl;
00788             cerr<<"Keys size: "<<trigger_keys_l1->size()<<endl;
00789             cerr<<"Status size: "<<trigger_keys_status_l1->size()<<endl;
00790             exit(1);
00791         }
00792 
00793         m_trigger = new MyTrigger(true, true, true,
00794                 *trigger_keys_l1,
00795                 *trigger_keys_status_l1,
00796                 *trigger_keys_l2,
00797                 *trigger_keys_status_l2,
00798                 *trigger_keys_ef,
00799                 *trigger_keys_status_ef);
00800 
00801         // muon trigger data
00802         vector<MyParticle*> trigger_muon[3];
00803         vector<MyParticle*> trigger_mu_lvl1(0);
00804         vector<MyParticle*> trigger_mu_lvl2(0);
00805         vector<MyParticle*> trigger_mu_ef(0);
00806         if(m_release==12 && m_svnversion>=49){
00807             // muon trigger lvl1
00808             for (int k=0; k<nb_trigger_mu_lvl1; k++) {
00809                 tmp_tlv.SetPtEtaPhiM(m_gev * ((*trigger_mu_lvl1_threshold_value)[k]),
00810                         ((*trigger_mu_lvl1_eta)[k]),
00811                         ((*trigger_mu_lvl1_phi)[k]),
00812                         0);
00813                 trigger_mu_lvl1.push_back(new MyTriggerMuon(tmp_tlv,
00814                             0,0,-1));
00815             }
00816             // muon trigger lvl2
00817             for (int k=0; k<nb_trigger_mu_lvl2; k++) {
00818                 tmp_tlv.SetPtEtaPhiM(m_gev * ((*trigger_mu_lvl2_pt)[k]),
00819                         ((*trigger_mu_lvl2_eta)[k]),
00820                         ((*trigger_mu_lvl2_phi)[k]),
00821                         0);
00822                 trigger_mu_lvl2.push_back(new MyTriggerMuon(tmp_tlv,
00823                             0, 
00824                             ((*trigger_mu_lvl2_sigma_pt)[k]),
00825                             -1));
00826             }
00827             // muon trigger ef
00828             for (int k=0; k<nb_trigger_mu_ef; k++) {
00829                 tmp_tlv.SetPtEtaPhiM(m_gev * ((*trigger_mu_ef_pt)[k]),
00830                         ((*trigger_mu_ef_eta)[k]),
00831                         ((*trigger_mu_ef_phi)[k]),
00832                         0);
00833                 trigger_mu_ef.push_back(new MyTriggerMuon(tmp_tlv,
00834                             ((*trigger_mu_ef_charge1)[k]), 
00835                             0,
00836                             ((*trigger_mu_ef_code)[k])));
00837             }
00838         }
00839         trigger_muon[0]=trigger_mu_lvl1; 
00840         trigger_muon[1]=trigger_mu_lvl2; 
00841         trigger_muon[2]=trigger_mu_ef; 
00842         
00843         // met trigger data
00844         // this is added to the met_manager below
00845         MyMissingEt* tmp_trigger_met = new MyMissingEt("MET_trigger_ef",
00846                         m_gev * trigger_met_ex,
00847                         m_gev * trigger_met_ey,
00848                         m_gev * trigger_met_sumEt);
00849         
00850         // reconstructed data //
00851         // electrons //
00852         vector<MyParticle*> rec_electron(nb_rec_electrons);
00853         for (int k=0; k<nb_rec_electrons; k++) {
00854             double et_cone[4];
00855             if (e_Et_in_cone_0->size()!=0) {
00856                 et_cone[0] = m_gev * ((*e_Et_in_cone_0)[k]);
00857                 et_cone[1] = m_gev * ((*e_Et_in_cone_1)[k]);
00858                 et_cone[2] = m_gev * ((*e_Et_in_cone_2)[k]);
00859                 et_cone[3] = m_gev * ((*e_Et_in_cone_3)[k]);
00860             } else {
00861                 et_cone[0] = 0.0;
00862                 et_cone[1] = 0.0;
00863                 et_cone[2] = 0.0;
00864                 et_cone[3] = 0.0;
00865             }
00866 
00867             vector<double> track_et_cone(4);
00868             if (e_track_Et_in_cone_0->size()!=0) {
00869                 track_et_cone[0] = m_gev*((*e_track_Et_in_cone_0)[k]);
00870                 track_et_cone[1] = m_gev*((*e_track_Et_in_cone_1)[k]);
00871                 track_et_cone[2] = m_gev*((*e_track_Et_in_cone_2)[k]);
00872                 track_et_cone[3] = m_gev*((*e_track_Et_in_cone_3)[k]);
00873             } else {
00874                 track_et_cone[0] = 0.0;
00875                 track_et_cone[1] = 0.0;
00876                 track_et_cone[2] = 0.0;
00877                 track_et_cone[3] = 0.0;
00878             }
00879 
00880             vector<double> trackIsolationEnergy(4);
00881             if (e_trackIsolationEnergy_0->size()!=0) {
00882                 trackIsolationEnergy[0] = m_gev*((*e_trackIsolationEnergy_0)[k]);
00883                 trackIsolationEnergy[1] = m_gev*((*e_trackIsolationEnergy_1)[k]);
00884                 trackIsolationEnergy[2] = m_gev*((*e_trackIsolationEnergy_2)[k]);
00885                 trackIsolationEnergy[3] = m_gev*((*e_trackIsolationEnergy_3)[k]);
00886             } else {
00887                 trackIsolationEnergy[0] = 0.0;
00888                 trackIsolationEnergy[1] = 0.0;
00889                 trackIsolationEnergy[2] = 0.0;
00890                 trackIsolationEnergy[3] = 0.0;
00891             }
00892 
00893             tmp_tlv.SetPxPyPzE(m_gev * ((*e_calo_p_x)[k]),
00894                     m_gev * ((*e_calo_p_y)[k]),
00895                     m_gev * ((*e_calo_p_z)[k]),
00896                     m_gev * ((*e_calo_E)[k]));
00897             tmp_tlv2.SetPxPyPzE(m_gev * ((*e_p_x)[k]),
00898                     m_gev * ((*e_p_y)[k]),
00899                     m_gev * ((*e_p_z)[k]),
00900                     m_gev * ((*e_E)[k]));
00901 
00902             rec_electron[k] = 
00903                 new MyElectron(tmp_tlv,tmp_tlv2,
00904                         (*e_charge)[k],
00905                         (*e_egamma_flag)[k],
00906                         (*e_softe_flag)[k],
00907                         (*e_E_over_p)[k],
00908                         (*e_isEM)[k],
00909                         (*e_NeuralNet)[k],
00910                         k,
00911                         et_cone,
00912                         m_gev * ((*e_ethad1)[k]),
00913                         &track_et_cone,
00914                         (*e_vertex_index)[k],
00915                         &trackIsolationEnergy);
00916 
00917 
00918             if(m_release>=13 && m_svnversion>=3){
00919                 ((MyElectron*)(rec_electron[k]))->set_id_flag((*e_id_flag)[k]);
00920             }
00921 
00922         }
00923 
00924         // photons //
00925         vector<MyParticle*> rec_photon(nb_rec_photons);
00926         //if(ev<10) cout<<"SM--Test: N_gamma="<<nb_rec_photons<<"\n";
00927         for (int k=0; k<nb_rec_photons; k++) {
00928             double et_cone[4];
00929             if (p_Et_in_cone_0->size()!=0) {
00930                 et_cone[0] = m_gev * ((*p_Et_in_cone_0)[k]);
00931                 et_cone[1] = m_gev * ((*p_Et_in_cone_1)[k]);
00932                 et_cone[2] = m_gev * ((*p_Et_in_cone_2)[k]);
00933                 et_cone[3] = m_gev * ((*p_Et_in_cone_3)[k]);
00934             } else {
00935                 et_cone[0] = 0.0;
00936                 et_cone[1] = 0.0;
00937                 et_cone[2] = 0.0;
00938                 et_cone[3] = 0.0;
00939             }
00940             if (isnan((*p_calo_p_x)[k])
00941                 ||isnan((*p_calo_p_y)[k])||isnan((*p_calo_p_z)[k])||isnan((*p_calo_E)[k])) {
00942                 cerr<<"WARNING: photon is 'nan'!"<<endl;
00943                 cerr<<"p_x=  "<<(*p_calo_p_x)[k]<<endl;
00944                 cerr<<"p_y=  "<<(*p_calo_p_y)[k]<<endl;
00945                 cerr<<"p_z=  "<<(*p_calo_p_z)[k]<<endl;
00946                 cerr<<"E=    "<<(*p_calo_E)[k]<<endl;
00947                 cerr<<"isem= "<<(*p_isEM)[k]<<endl;
00948                 tmp_tlv.SetPtEtaPhiE(0,0,0,0);
00949             }
00950             else {
00951             tmp_tlv.SetPxPyPzE(m_gev * ((*p_calo_p_x)[k]),
00952                     m_gev * ((*p_calo_p_y)[k]),
00953                     m_gev * ((*p_calo_p_z)[k]),
00954                     m_gev * ((*p_calo_E)[k]));
00955             }
00956             rec_photon[k] = 
00957                 new MyPhoton(tmp_tlv,
00958                         (*p_charge)[k],
00959                         (*p_egamma_flag)[k],
00960                         (*p_isEM)[k],
00961                         (*p_NeuralNet)[k],
00962                         k,
00963                         et_cone);
00964             //      if(ev<10){
00965             //  cout<<"SM--Test: P="<<tmp_tlv.Px()<<"\n";
00966             //  cout<<"SM--Test: P="<<tmp_tlv.Py()<<"\n";
00967             //  cout<<"SM--Test: P="<<tmp_tlv.Pz()<<"\n";
00968             //  cout<<"SM--Test: P="<<tmp_tlv.E()<<"\n";
00969             //  cout<<"SM--Test: ch="<<(*p_charge)[k]<<"\n";
00970             //  cout<<"SM--Test: eg="<<(*p_egamma_flag)[k]<<"\n";
00971             //  cout<<"SM--Test: isem="<<(*p_isEM)[k]<<"\n";
00972             //  cout<<"SM--Test: nn="<<(*p_NeuralNet)[k]<<"\n";
00973             //  cout<<"SM--Test: cone0.3="<<et_cone[1]<<"\n";
00974             //      }
00975         }
00976 
00977         // muons //
00978         vector<MyParticle*> rec_muon(nb_rec_muons);
00979         for (int k=0; k<nb_rec_muons; k++) {
00980             double Et_cone[8];
00981             if (mu_Et_in_cone_0->size()!=0) {
00982                 Et_cone[0] = m_gev * ((*mu_Et_in_cone_0)[k]);
00983                 Et_cone[1] = m_gev * ((*mu_Et_in_cone_1)[k]);
00984                 Et_cone[2] = m_gev * ((*mu_Et_in_cone_2)[k]);
00985                 Et_cone[3] = m_gev * ((*mu_Et_in_cone_3)[k]);
00986                 Et_cone[4] = m_gev * ((*mu_Et_in_cone_4)[k]);
00987                 Et_cone[5] = m_gev * ((*mu_Et_in_cone_5)[k]);
00988                 Et_cone[6] = m_gev * ((*mu_Et_in_cone_6)[k]);
00989                 Et_cone[7] = m_gev * ((*mu_Et_in_cone_7)[k]);
00990             } else {
00991                 Et_cone[0] = 0.0;
00992                 Et_cone[1] = 0.0;
00993                 Et_cone[2] = 0.0;
00994                 Et_cone[3] = 0.0;
00995                 Et_cone[4] = 0.0;
00996                 Et_cone[5] = 0.0;
00997                 Et_cone[6] = 0.0;
00998                 Et_cone[7] = 0.0;
00999             }
01000 
01001             int nb_tracks_cone[8];
01002             if (mu_nb_tracks_in_cone_0->size()!=0) {
01003                 nb_tracks_cone[0] = (*mu_nb_tracks_in_cone_0)[k];
01004                 nb_tracks_cone[1] = (*mu_nb_tracks_in_cone_1)[k];
01005                 nb_tracks_cone[2] = (*mu_nb_tracks_in_cone_2)[k];
01006                 nb_tracks_cone[3] = (*mu_nb_tracks_in_cone_3)[k];
01007                 nb_tracks_cone[4] = (*mu_nb_tracks_in_cone_4)[k];
01008                 nb_tracks_cone[5] = (*mu_nb_tracks_in_cone_5)[k];
01009                 nb_tracks_cone[6] = (*mu_nb_tracks_in_cone_6)[k];
01010                 nb_tracks_cone[7] = (*mu_nb_tracks_in_cone_7)[k];
01011             } else{
01012                 nb_tracks_cone[0] = 0;
01013                 nb_tracks_cone[1] = 0;
01014                 nb_tracks_cone[2] = 0;
01015                 nb_tracks_cone[3] = 0;
01016                 nb_tracks_cone[4] = 0;
01017                 nb_tracks_cone[5] = 0;
01018                 nb_tracks_cone[6] = 0;
01019                 nb_tracks_cone[7] = 0;
01020             }
01021 
01022             vector<double> track_et_cone(8);
01023             if (mu_track_Et_in_cone_0->size()!=0) {
01024                 track_et_cone[0] = m_gev*((*mu_track_Et_in_cone_0)[k]);
01025                 track_et_cone[1] = m_gev*((*mu_track_Et_in_cone_1)[k]);
01026                 track_et_cone[2] = m_gev*((*mu_track_Et_in_cone_2)[k]);
01027                 track_et_cone[3] = m_gev*((*mu_track_Et_in_cone_3)[k]);
01028                 track_et_cone[4] = m_gev*((*mu_track_Et_in_cone_4)[k]);
01029                 track_et_cone[5] = m_gev*((*mu_track_Et_in_cone_5)[k]);
01030                 track_et_cone[6] = m_gev*((*mu_track_Et_in_cone_6)[k]);
01031                 track_et_cone[7] = m_gev*((*mu_track_Et_in_cone_7)[k]);
01032             } else {
01033                 track_et_cone[0] = 0.0;
01034                 track_et_cone[1] = 0.0;
01035                 track_et_cone[2] = 0.0;
01036                 track_et_cone[3] = 0.0;
01037                 track_et_cone[4] = 0.0;
01038                 track_et_cone[5] = 0.0;
01039                 track_et_cone[6] = 0.0;
01040                 track_et_cone[7] = 0.0;
01041             }
01042             vector<double> trackIsolationEnergy(8);
01043             if (mu_trackIsolationEnergy_0->size()!=0) {
01044                 trackIsolationEnergy[0] = m_gev*((*mu_trackIsolationEnergy_0)[k]);
01045                 trackIsolationEnergy[1] = m_gev*((*mu_trackIsolationEnergy_1)[k]);
01046                 trackIsolationEnergy[2] = m_gev*((*mu_trackIsolationEnergy_2)[k]);
01047                 trackIsolationEnergy[3] = m_gev*((*mu_trackIsolationEnergy_3)[k]);
01048                 trackIsolationEnergy[4] = m_gev*((*mu_trackIsolationEnergy_4)[k]);
01049                 trackIsolationEnergy[5] = m_gev*((*mu_trackIsolationEnergy_5)[k]);
01050                 trackIsolationEnergy[6] = m_gev*((*mu_trackIsolationEnergy_6)[k]);
01051                 trackIsolationEnergy[7] = m_gev*((*mu_trackIsolationEnergy_7)[k]);
01052             } else {
01053                 trackIsolationEnergy[0] = 0.0;
01054                 trackIsolationEnergy[1] = 0.0;
01055                 trackIsolationEnergy[2] = 0.0;
01056                 trackIsolationEnergy[3] = 0.0;
01057                 trackIsolationEnergy[4] = 0.0;
01058                 trackIsolationEnergy[5] = 0.0;
01059                 trackIsolationEnergy[6] = 0.0;
01060                 trackIsolationEnergy[7] = 0.0;
01061             }
01062             tmp_tlv.SetPxPyPzE(m_gev * ((*mu_p_x)[k]),
01063                     m_gev * ((*mu_p_y)[k]),
01064                     m_gev * ((*mu_p_z)[k]),
01065                     m_gev * ((*mu_E)[k]));
01066 
01067 
01068             rec_muon[k] = 
01069                 new MyMuon(tmp_tlv,
01070                         (*mu_charge)[k],
01071                         (*mu_alg_flag)[k],
01072                         (*mu_rec_flag)[k],
01073                         k,
01074                         Et_cone,
01075                         nb_tracks_cone,
01076                         (*mu_fitChi2)[k],
01077                         (*mu_fitNumberDoF)[k],
01078                         (*mu_fitChi2OverDoF)[k],
01079                         (*mu_matchChi2)[k],
01080                         (*mu_matchNumberDoF)[k],
01081                         (*mu_matchChi2OverDoF)[k],
01082                         (*mu_hasCombinedMuonTrackParticle)[k],
01083                         &track_et_cone,
01084                         (*mu_vertex_index)[k],
01085                         &trackIsolationEnergy);
01086 
01087         }
01088 
01089         // jets //
01091         //cout<<"nb_rec_jets = "<<nb_rec_jets<<"\n";
01092         int off=0;
01093         v_jet_tracks_charge = vector< vector<double> >(nb_rec_jets);
01094         v_jet_tracks_vertex_index = vector< vector<int> >(nb_rec_jets);
01095         v_jet_tracks_tlv    = vector< vector<TLorentzVector> >(nb_rec_jets);
01096 
01097         int sumtrk=0;
01098         for (int i=0;i<nb_rec_jets;i++) {
01099 
01100             //cout<<"tracks in jet "<<i<<" = "<<(*jet_nb_tracks)[i]<<"\n";
01101             if (i!=0) off=off+(*jet_nb_tracks)[i-1];
01102 
01103             v_jet_tracks_charge[i]=vector<double>((*jet_nb_tracks)[i],0.);
01104             v_jet_tracks_vertex_index[i]=vector<int>((*jet_nb_tracks)[i],0);
01105             v_jet_tracks_tlv[i]=vector<TLorentzVector>((*jet_nb_tracks)[i],0.);
01106 
01107             sumtrk=sumtrk+(*jet_nb_tracks)[i];
01108 
01109             for (int j=0;j<(*jet_nb_tracks)[i];j++) {
01110 
01111                 v_jet_tracks_vertex_index[i][j] = -1;
01112 
01113                 v_jet_tracks_charge[i][j]=(*jet_tracks_charge)[j+off];
01114 
01115                 if(m_release>=12 && m_svnversion>=46){
01116                     v_jet_tracks_vertex_index[i][j]=(*jet_tracks_vertex_index)[j+off];
01117                 }
01118                 v_jet_tracks_tlv[i][j].SetPxPyPzE(m_gev *(*jet_tracks_p_x)[j+off],
01119                         m_gev *(*jet_tracks_p_y)[j+off],
01120                         m_gev *(*jet_tracks_p_z)[j+off],
01121                         m_gev *(*jet_tracks_E)[j+off]);
01122             }
01123             //                      if ((*jet_nb_tracks)[i]>0){
01124             //                    cout<<i<<"th jet ntrk="<<(*jet_nb_tracks)[i]<<"vector ="<<v_jet_tracks_charge[i].size()<<"\n";
01125             //                  }
01126         }
01127 
01128         //cout<<"all tracks in jets ="<<(*jet_tracks_charge).size()<<" sum = "<<sumtrk <<"\n";
01129         vector<MyParticle*> rec_jet(nb_rec_jets);
01130         for (int k=0; k<nb_rec_jets; k++) {
01131             // if (k==nb_rec_jets-1){
01132             //                    cout<<nb_rec_jets<<" "<<(*jet_nb_tracks)[k]<<"---------------------\n";
01133             //                    cout<<" jet px: "<<(*jet_p_x)[k]<<"\n";
01134             //                    for (int j=0;j<(*jet_nb_tracks)[k];j++) {
01135             //                      cout<<j<<"th track: ch "<<v_jet_tracks_charge[k][j]
01136             //                          <<" px "<<v_jet_tracks_px[k][j]
01137             //                          <<" py "<<v_jet_tracks_py[k][j]
01138             //                          <<" pz "<<v_jet_tracks_pz[k][j]
01139             //                          <<" E "<<v_jet_tracks_E[k][j]<<"\n";
01140             //                    }
01141             //                  }
01142             rec_jet[k] = 
01143                 new MyParticleJet(
01144                         TLorentzVector(m_gev * ((*jet_p_x)[k]),
01145                             m_gev * ((*jet_p_y)[k]),
01146                             m_gev * ((*jet_p_z)[k]),
01147                             m_gev * ((*jet_E)[k])   
01148                             ),
01149                         (*jet_flag)[k],
01150                         k,
01151                         (*jet_btag_weight)[k],
01152                         (*jet_truthflavor)[k],
01153                         false,
01154                         (*jet_nb_tracks)[k],
01155                         v_jet_tracks_charge[k],
01156                         v_jet_tracks_tlv[k],
01157                         v_jet_tracks_vertex_index[k]
01158                         );
01159         }
01160 
01161         // truth jets //
01162         vector<MyParticle*> truth_jet(nb_truth_jets);
01163         for (int k=0; k<nb_truth_jets; k++) {
01164             truth_jet[k] = 
01165                 new MyParticleJet(
01166                         TLorentzVector(m_gev * ((*truth_jet_p_x)[k]),
01167                             m_gev * ((*truth_jet_p_y)[k]),
01168                             m_gev * ((*truth_jet_p_z)[k]),
01169                             m_gev * ((*truth_jet_E)[k])   
01170                             ),
01171                         (*truth_jet_flag)[k],
01172                         k,
01173                         (*truth_jet_btag_weight)[k],
01174                         0,
01175                         true,
01176                         0,
01177                         std::vector<double>(0),
01178                         std::vector<TLorentzVector>(0),
01179                         std::vector<int>(0)
01180                         );
01181         }
01182 
01183         //taujets//
01184         vector<MyParticle*> rec_taujet(nb_tau_jets);  
01185         TLorentzVector tmp_tlvtau;
01186 
01187         for (int k=0; k<nb_tau_jets; k++) {
01188             //             double pp;
01189             //             pp = m_gev * sqrt( ((*taujet_p_x)[k]) * ((*taujet_p_x)[k]) +
01190             //                                ((*taujet_p_y)[k]) * ((*taujet_p_y)[k]) +
01191             //                                ((*taujet_p_z)[k]) * ((*taujet_p_z)[k])
01192             //                      );
01193             //             tmp_tlv.SetPxPyPzE(m_gev * ((*taujet_p_x)[k]),
01194             //                                m_gev * ((*taujet_p_y)[k]),
01195             //                                m_gev * ((*taujet_p_z)[k]),
01196             //                                sqrt(pp*pp+3.15769));
01197             //                               //-0.1);  
01198             if ( (*taujet_E)[k]>0 ) {
01199                 tmp_tlvtau.SetPxPyPzE(  m_gev * ((*taujet_p_x)[k]),
01200                         m_gev * ((*taujet_p_y)[k]),
01201                         m_gev * ((*taujet_p_z)[k]),
01202                         m_gev * ((*taujet_E)[k])   );
01203             }else{ 
01204                 tmp_tlvtau.SetPtEtaPhiE(  0.0, 0.0, 0.0, 0.0 );
01205                 cerr<< "WARNING tau with 0 energy \n";
01206             }
01207 
01208             rec_taujet[k] =
01209                 new MyTauJet(tmp_tlvtau,
01210                         /*TLorentzVector(m_gev * ((*taujet_p_x)[k]),
01211                           m_gev * ((*taujet_p_y)[k]),
01212                           m_gev * ((*taujet_p_z)[k]),
01213                           m_gev * ((*taujet_E)[k])   
01214                           ),*/
01215                         (*taujet_charge)[k],
01216                         (*taujet_flag)[k],
01217                         k,
01218                         (*taujet_emRadius)[k],
01219                         (*taujet_isolationFraction)[k],
01220                         (*taujet_centralityFraction)[k],
01221                         (*taujet_stripWidth2)[k],
01222                         (*taujet_nStripCells)[k],
01223                         (*taujet_llh)[k],
01224                         (*taujet_lowPtTauEleDiscriminant)[k],
01225                         (*taujet_tauENeuralNetwork)[k],
01226                         (*taujet_tauJetNeuralnetwork)[k],
01227                         m_gev * (*taujet_etHadCalib)[k],
01228                         m_gev * (*taujet_etEMCalib)[k],
01229                         (*taujet_nb_tracks)[k],
01230                         TLorentzVector(m_gev * ((*taujet_track_px_1)[k]),
01231                             m_gev * ((*taujet_track_py_1)[k]),
01232                             m_gev * ((*taujet_track_pz_1)[k]),
01233                             m_gev * ((*taujet_track_e_1)[k])),
01234                         TLorentzVector(m_gev * ((*taujet_track_px_2)[k]),
01235                                 m_gev * ((*taujet_track_py_2)[k]),
01236                                 m_gev * ((*taujet_track_pz_2)[k]),
01237                                 m_gev * ((*taujet_track_e_2)[k])),
01238                         TLorentzVector(m_gev * ((*taujet_track_px_3)[k]),
01239                                 m_gev * ((*taujet_track_py_3)[k]),
01240                                 m_gev * ((*taujet_track_pz_3)[k]),
01241                                 m_gev * ((*taujet_track_e_3)[k])),
01242                         (*taujet_track_TRTHits_1)[k],
01243                         (*taujet_track_TRTHighThresholdHits_1)[k],
01244                         (*taujet_track_TRTHits_2)[k],
01245                         (*taujet_track_TRTHighThresholdHits_2)[k],
01246                         (*taujet_track_TRTHits_3)[k],
01247                         (*taujet_track_TRTHighThresholdHits_3)[k]
01248                             );
01249         }
01250 
01251 
01252         // truth data //
01253 
01254         vector<MyParticle*> truth_particle(nb_truth_particle);
01255         for (int k=0; k<nb_truth_particle; k++) {
01256             truth_particle[k] = 
01257                 new MyTruthParticle(
01258                         TLorentzVector(m_gev * ((*truth_particle_p_x)[k]),
01259                             m_gev * ((*truth_particle_p_y)[k]),
01260                             m_gev * ((*truth_particle_p_z)[k]),
01261                             m_gev * ((*truth_particle_E)[k]) 
01262                             ),
01263                         (*truth_particle_charge)[k],
01264                         (*truth_particle_pdgId)[k],
01265                         (*truth_particle_barcode)[k],
01266                         (*truth_particle_status)[k],
01267                         (*truth_particle_nParents)[k],
01268                         (*truth_particle_nDaughters)[k],
01269                         (*truth_particle_mother0_barcode)[k],
01270                         (*truth_particle_mother0_pdgId)[k],
01271                         k
01272                         );
01273 
01274             if(m_release>=12 && m_svnversion>=48){
01275                 truth_particle[k]->setVertexIndex((*truth_particle_vertex_index)[k]);
01276             }
01277             if(m_release>=12 && m_svnversion>=50){
01278         
01279                 double Et_cone[5];
01280                 if (truth_particle_Et_in_cone_0->size()!=0) {
01281                     Et_cone[0] = m_gev * ((*truth_particle_Et_in_cone_0)[k]);
01282                     Et_cone[1] = m_gev * ((*truth_particle_Et_in_cone_1)[k]);
01283                     Et_cone[2] = m_gev * ((*truth_particle_Et_in_cone_2)[k]);
01284                     Et_cone[3] = m_gev * ((*truth_particle_Et_in_cone_3)[k]);
01285                     Et_cone[4] = m_gev * ((*truth_particle_Et_in_cone_4)[k]);
01286                 } else {
01287                     Et_cone[0] = 0.0;
01288                     Et_cone[1] = 0.0;
01289                     Et_cone[2] = 0.0;
01290                     Et_cone[3] = 0.0;
01291                     Et_cone[4] = 0.0;
01292                 }
01293 
01294                 ((MyTruthParticle*)(truth_particle[k]))->set_Et_in_cone(Et_cone);
01295             }
01296 
01297         }
01298 
01299 
01300 
01301         // Missing Et//
01302         MyMissingEtManager met_manager;
01303 
01304         for(unsigned int i_met_container=0; i_met_container<missing_Et_object->size(); i_met_container++){
01305             met_manager.add_missinget( MyMissingEt( missing_Et_object->at(i_met_container), 
01306                         missing_Etx->at(i_met_container) * m_gev, 
01307                         missing_Ety->at(i_met_container) * m_gev, 
01308                         missing_Etsum->at(i_met_container) * m_gev) );
01309         }
01310         met_manager.add_missinget(*tmp_trigger_met);
01311         //met_manager.Print("v");  
01312 
01313         //         MyMissingEt test = met_manager.get_missinget("met_Final");
01314         //         MyMissingEt test2 = met_manager.get_missinget("met_Own");
01315         //         test.Print("v");
01316         //         test2.Print("v");
01317 
01318 
01319         // vertices //
01320         vector<MyVertex *> vertices(nb_vertices);
01321         for (unsigned int k=0; k<vertices.size(); k++) {
01322             vertices[k] = 
01323                 new MyVertex(
01324                              TVector3((*vertex_position_x)[k],
01325                                       (*vertex_position_y)[k],
01326                                       (*vertex_position_z)[k]),
01327                              TVector3((*vertex_pos_error_x)[k],
01328                                       (*vertex_pos_error_y)[k],
01329                                       (*vertex_pos_error_z)[k]),
01330                              (*vertex_chi2)[k], (*vertex_ndof)[k],
01331                              k, m_gev*(*vertex_Et)[k],
01332                              (*vertex_nb_tracks)[k]);
01333         }
01334         
01335         // truth vertices //
01336         vector<MyVertex *> truth_vertices(nb_truth_vertices);
01337         for (unsigned int k=0; k<truth_vertices.size(); k++) {
01338             truth_vertices[k] = 
01339                 new MyVertex(
01340                              TVector3((*truth_vertex_position_x)[k],
01341                                       (*truth_vertex_position_y)[k],
01342                                       (*truth_vertex_position_z)[k]),
01343                              TVector3(0.0, 0.0, 0.0),
01344                              1.0, 1,
01345                              k, m_gev*(*truth_vertex_Et)[k],
01346                              (*truth_vertex_nb_tracks)[k]);
01347         }
01348 
01349         // track jets //
01350         vector<MyParticle *> track_jet(nb_track_jets);
01351         for (unsigned int k=0; k<track_jet.size(); k++) {
01352             track_jet[k] = 
01353                 new MyTrackJet(
01354                         TLorentzVector(
01355                             m_gev*((*track_jet_p_x)[k]),
01356                             m_gev*((*track_jet_p_y)[k]),
01357                             m_gev*((*track_jet_p_z)[k]),
01358                             m_gev*((*track_jet_E)[k])), k);
01359         }
01360 
01361         // truth track jets //
01362         vector<MyParticle *> truth_track_jet(nb_truth_track_jets);
01363         for (unsigned int k=0; k<truth_track_jet.size(); k++) {
01364             truth_track_jet[k] = 
01365                 new MyTrackJet(
01366                         TLorentzVector(
01367                             m_gev*((*truth_track_jet_p_x)[k]),
01368                             m_gev*((*truth_track_jet_p_y)[k]),
01369                             m_gev*((*truth_track_jet_p_z)[k]),
01370                             m_gev*((*truth_track_jet_E)[k])), k);
01371         }
01372         // tracks //
01373         vector<MyParticle *> track(nb_rec_tracks);
01374         for (unsigned int k=0; k<track.size(); k++) {
01375             vector<double> trackIsolationEnergy(5);
01376             trackIsolationEnergy[0] = m_gev*((*track_trackIsolationEnergy_s)[k]);
01377             trackIsolationEnergy[1] = m_gev*((*track_trackIsolationEnergy_0)[k]);
01378             trackIsolationEnergy[2] = m_gev*((*track_trackIsolationEnergy_1)[k]);
01379             trackIsolationEnergy[3] = m_gev*((*track_trackIsolationEnergy_2)[k]);
01380             trackIsolationEnergy[4] = m_gev*((*track_trackIsolationEnergy_3)[k]);
01381             track[k] = 
01382                 new MyTrack(
01383                         TLorentzVector(
01384                             m_gev*((*track_p_x)[k]),
01385                             m_gev*((*track_p_y)[k]),
01386                             m_gev*((*track_p_z)[k]),
01387                             m_gev*((*track_E)[k])), 
01388                             (*track_charge)[k],
01389                             k,
01390                             (*track_vertex_index)[k],
01391                             (*track_SCThit)[k],
01392                             (*track_Phit)[k],
01393                             (*track_BLayerhit)[k],
01394                             (*track_TRThit)[k],
01395                             (*track_MDThit)[k],
01396                             (*track_CSChit_eta)[k],
01397                             (*track_TGChit_eta)[k],
01398                             (*track_RPChit_eta)[k],
01399                             (*track_CSChit_phi)[k],
01400                             (*track_TGChit_phi)[k],
01401                             (*track_RPChit_phi)[k],
01402                             (*track_d0)[k],
01403                             (*track_z0)[k],
01404                             (*track_chi2)[k],
01405                             (*track_nDoF)[k],
01406                             &trackIsolationEnergy);
01407         }
01408 
01409         // the event //
01410         MyEvent event(RunNumber, EventNumber, Weight,
01411                 rec_electron, rec_photon,rec_muon, rec_jet, rec_taujet,
01412                 truth_particle, truth_jet, met_manager, *m_trigger, 
01413                 &track_jet, &track, &truth_track_jet, &vertices, &truth_vertices, trigger_muon);
01414 
01415 
01416         // call the user analysis //
01417         m_analysis->analyse_event(event);
01418 
01419         // delete all objects in the vectors that were created with "new"
01420         delete m_trigger;
01421         delete tmp_trigger_met;
01422         delete_new_objects(trigger_mu_lvl1);
01423         delete_new_objects(trigger_mu_lvl2);
01424         delete_new_objects(trigger_mu_ef);
01425         delete_new_objects(rec_electron);
01426         delete_new_objects(rec_photon);
01427         delete_new_objects(rec_muon);
01428         delete_new_objects(rec_jet);
01429         delete_new_objects(rec_taujet);
01430         delete_new_objects(truth_particle);
01431         delete_new_objects(truth_jet);
01432         delete_new_objects(track_jet);
01433         delete_new_objects(track);
01434         delete_new_objects(truth_track_jet);
01435         for (unsigned int i=0; i<vertices.size(); i++) {
01436             delete vertices[i];
01437         }
01438         for (unsigned int i=0; i<truth_vertices.size(); i++) {
01439             delete truth_vertices[i];
01440         }
01441     } //for ev<nb_events
01442 
01443 
01445     // END OF DATA //
01447 
01448     m_analysis->end_of_analysis();
01449 
01450     return;
01451 }
01452 
01453 //*****************************************************************************
01454 
01455 //:::::::::::::::::::::::::::::::
01456 //:: METHOD delete_new_objects ::
01457 //:::::::::::::::::::::::::::::::
01458 
01459 void NtupleReader::delete_new_objects(vector<MyParticle*> tmp_vector) {
01460 
01461     for (unsigned int i=0; i<tmp_vector.size(); i++){
01462         delete tmp_vector[i];
01463     }
01464 
01465     return;
01466 
01467 }
01468 

Generated on Tue Oct 21 11:50:46 2008 for NtupleAnalysis by  doxygen 1.5.1