NtupleWriter13/NtupleWriter13-00-01-00/NtupleWriter13/AANtupleWriter13.h

00001 //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
00002 // 05.12.2006, AUTHORS: OLIVER KORTNER, STEFFEN KAISER, MANFRED GROH, THIES EHRICH
00003 //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
00004 
00005 #ifndef AANtupleWriter13H
00006 #define AANtupleWriter13H
00007 
00008 //::::::::::::::::::::::::::::
00009 //:: CLASS AANtupleWriter13 ::
00010 //::::::::::::::::::::::::::::
00011 
00023 
00032  
00036 
00037 //::::::::::::::::::
00038 //:: HEADER FILES ::
00039 //::::::::::::::::::
00040 
00041 // STL //
00042 #include <string>
00043 #include <vector>
00044 #include <map>
00045 
00046 // Gaudi //
00047 #include "GaudiKernel/Algorithm.h"
00048 #include "GaudiKernel/ObjectVector.h"
00049 #include "GaudiKernel/MsgStream.h"
00050 #include "GaudiKernel/ITHistSvc.h"
00051 #include "GaudiKernel/IToolSvc.h"
00052 
00053 // ATHENA //
00054 #include "StoreGate/StoreGateSvc.h"
00055 #include "CBNT_Utils/CBNT_AthenaAwareBase.h"
00056 #include "AnalysisTools/IAnalysisTools.h"
00057 #include "TrackIsolationTools/TrackIsolationTool.h"
00058 
00059 #include "MissingETEvent/MissingEtTruth.h"
00060 #include "McParticleEvent/TruthParticleContainer.h"
00061 #include "NtupleWriter13/VertexCollectionSvc.h"
00062 
00063 // ROOT //
00064 //#include "TArrayF.h"
00065 //#include "TArrayI.h"
00066 #include "TTree.h"
00067 #include "TString.h"
00068 
00069 
00070 //using namespace std;
00071 
00072 class AANtupleWriter13 : public CBNT_AthenaAwareBase {
00073 
00074 public:
00075 // Constructors //
00076     AANtupleWriter13(const std::string & name,
00077                               ISvcLocator * pSvcLocator);
00079 
00080     ~AANtupleWriter13();
00082     
00083 // Methods //
00084 // Methods required by the base class  //
00085     virtual StatusCode CBNT_initialize(void);
00088     virtual StatusCode CBNT_finalize(void);
00091     virtual StatusCode CBNT_execute(void);
00094     virtual StatusCode CBNT_clear(void);
00096 
00097 private:
00098 // ATHENA //
00099     StoreGateSvc *m_storeGate; // pointer to the store-gate service
00100     MsgStream *m_log; // pointer to the message stream
00101     MPIHiggsAnalysis::VertexCollectionSvc *m_vert_coll;
00102     // pointer to the output vertex collection
00103     IAlgTool *tmp_trackIsolationTool; //pointer to the track Isolation Tool
00104     TrackIsolationTool *m_trackIsolationTool; //pointer to the track Isolation Tool (castet)
00105     IToolSvc *m_toolSvc; //pointer to the tools service 
00106 
00107 // job options //
00108     std::string m_trigger_decision_container;   // name of the trigger decision container
00109     std::string m_trigger_LVL1_ROI_container;   // name of the trigger decision container
00110     std::string m_photon_container;             // name of the photon container
00111     std::string m_electron_container;           // name of the electron container
00112     std::vector<std::string> m_muon_container;  // name of the muon container
00113     std::string m_jet_container;                // name of the jet container
00114     std::string m_taujet_container;             // name of the taujet container
00115     std::string m_truthjet_container;           // name of the truth jet container
00116     std::string m_truthmissingEt_container;     // name of the missingEt truth container
00117     std::string m_truthparticle_container;      // name of the truthparticle container
00118     
00119     std::string m_vert_coll_svc_name;           // name of the output vertex collection
00120     std::string m_primary_vertex_container;     // name of the vertex container
00121     std::string m_track_jet_container;          // name of the track-jet container
00122     std::string m_truth_track_jet_container;    // name of the truth track-jet container
00123     
00124     std::string m_track_particle_container;     // name of the container of track particles
00125     
00126     std::string m_showerContainerName;          // name of EM shower container
00127     std::string m_trackMatchContainerName;      // name of track-match container
00128     std::string m_tauDetailsContainerName;      // name of tau-details container
00129 
00130     std::string  m_release;    //athena release
00131     std::string  m_svnversion; //svn version
00132     std::string  m_date;       //date 
00133 
00134     bool     m_AtlFastFlag;
00135     bool     m_doAODFix1mm;
00136     bool     m_doEventWeight;
00137     int      nEvents;
00138     int      m_truthparticleMaximumLeptonBarcode;
00139     bool     m_truthparticleNoPDGAbove100;
00140     bool     m_doTrigger;
00141     bool     m_doMissingEt;
00142     bool     m_doElectrons;
00143     bool     m_doPhotons;
00144     bool     m_doMuons;
00145     bool     m_doJets;
00146     bool     m_doTauJets;
00147     bool     m_doTruthJets;
00148     bool     m_doTruthParticles;
00149 
00150     bool     m_doTrackJets;  // flag indicating whether track jets should be created
00151     bool     m_doVertices;   // flag indicating whether vertices should be written
00152 
00153 // info Trees that are stored seperately
00154     // info about the AOD input files used
00155     std::vector<std::string> v_string_aod_files;
00156     std::vector<std::string> v_string_met_container;
00157     TTree *tree_aod_file_collection;
00158     char char_array_aod_file[200];
00159 
00160 // if the vector is declared here it does not work anymore, but why???????    
00161  //   std::vector<std::string> v_string_met_container;
00162     
00163     // info about the AOD input files used
00164     TTree *tree_aod_container_keys;
00165     char char_array_aod_container_keys[50];
00166     char aodkey_trigger_decision_container[50];
00167     char aodkey_trigger_LVL1_ROI_container[50];
00168     char aodkey_photon_container[50];
00169     char aodkey_electron_container[50];
00170     char aodkey_muon_container[50];
00171     char aodkey_jet_container[50];
00172     char aodkey_taujet_container[50];
00173     char aodkey_truthjet_container[50];
00174     char aodkey_met_container[500];
00175     char aodkey_truthmissingEt_container[50];
00176     char aodkey_truthparticle_container[50];
00177     char aodkey_primary_vertex_container[50];
00178     char aodkey_track_jet_container[50];      
00179     char aodkey_truth_track_jet_container[50]; 
00180     char aodkey_track_particle_container[50];  
00181     bool aodkey_AtlFastFlag;
00182     bool aodkey_doAODFix1mm;
00183     bool aodkey_doTrackJets;
00184     bool aodkey_doVertices;
00185     int  aodkey_truthparticleMaximumLeptonBarcode;
00186     bool aodkey_truthparticleNoPDGAbove100;
00187     char aodkey_showerContainerName[50];
00188     char aodkey_trackMatchContainerName[50];
00189     char aodkey_tauDetailsContainerName[50];
00190     
00191     char aodkey_release[50];
00192     char aodkey_svnversion[50];
00193     char aodkey_date[50];
00194 
00195 // data vectors to be stored in the AAN //
00196   // reconstructed data //
00197   
00198  // trigger decision data // //////////////////////////////////////////////////////////////////////
00199     bool        m_trigger_l1_defined;
00200     bool        m_trigger_l2_defined;
00201     bool        m_trigger_ef_defined;
00202     std::vector<std::string> *m_trigger_keys_l1;        // all the trigger keys of level 1
00203     std::vector<int>     *m_trigger_keys_status_l1;     // status of the trigger keys
00204     std::vector<std::string> *m_trigger_keys_l2;        // all the trigger keys of level 2
00205     std::vector<int>     *m_trigger_keys_status_l2;     // status of the trigger keys
00206     std::vector<std::string> *m_trigger_keys_ef;        // all the trigger keys of level 3
00207     std::vector<int>     *m_trigger_keys_status_ef;     // status of the trigger keys
00208     
00209     
00210   // trigger LVL1 ROI data // /////////////////////////////////////////////////////////////////////
00211     Int_t                 m_nb_roi_mu;          // number of muon LVL1 ROI entries
00212     std::vector<double>  *m_roi_mu_eta;         // muon roi eta
00213     std::vector<double>  *m_roi_mu_phi;         // muon roi phi
00214     std::vector<int>     *m_roi_mu_thrNumber;   // muon roi threshold number
00215     std::vector<std::string> *m_roi_mu_thrName; // muon roi threshold name
00216     std::vector<int>     *m_roi_mu_ROIWord;     // muon roi word
00217         
00218   
00219   // electron data // /////////////////////////////////////////////////////////////////////////////
00220     Int_t                m_nb_rec_electrons;    // number of electrons in the event
00221     std::vector<double> *m_e_p_x;               // px
00222     std::vector<double> *m_e_p_y;               // py
00223     std::vector<double> *m_e_p_z;               // pz
00224     std::vector<double> *m_e_E;                 // E
00225     std::vector<double> *m_e_calo_p_x;          // calo px
00226     std::vector<double> *m_e_calo_p_y;          // calo py
00227     std::vector<double> *m_e_calo_p_z;          // calo pz
00228     std::vector<double> *m_e_calo_E;            // calo E
00229     std::vector<double> *m_e_charge;            // charge
00230     std::vector<double> *m_e_isEM;              // isEM parameter
00231     std::vector<int>    *m_e_id_flag;           // id flag
00232     std::vector<double> *m_e_NeuralNet;         // NeuralNet parameter
00233     std::vector<int>    *m_e_egamma_flag;       // m_egamma_flags of the electrons:
00234                                                 // m_egamma_flag = 1, if author==1, a track is 
00235                                                 // associated with the electron, and isEM%16==0
00236     std::vector<int>    *m_e_softe_flag;        // m_softe_flags of the electrons:
00237                                                 // m_softe_flag = 1, if author==2,  a track is 
00238                                                 // associated with the electron, and isEM%16==0
00239     std::vector<double> *m_e_E_over_p;          // E(calorimeter)/p(inner tracker)
00240     std::vector<double> *m_e_TRTHighThresholdHits; // Number of the TRT High Threshold Hits
00241                                                 // of the track
00242     std::vector<double> *m_e_TRTHits;           // Number of the TRT Hits of the track
00243     std::vector<double> *m_e_ethad1;            // ElectronParameters::ethad1 value
00244     std::vector<double> *m_e_Et_in_cone_0;      // transverse energy in a cone of 0.20 around 
00245                                                 // the electron
00246     std::vector<double> *m_e_Et_in_cone_1;      // transverse energy in a cone of 0.30 around 
00247                                                 // the electron
00248     std::vector<double> *m_e_Et_in_cone_2;      // transverse energy in a cone of 0.40 around 
00249                                                 // the electron
00250     std::vector<double> *m_e_Et_in_cone_3;      // transverse energy in a cone of 0.45 around 
00251                                                 // the electron
00252     std::vector<int>    *m_e_vertex_index;      // vertex indices
00253     std::vector<double> *m_e_track_Et_in_cone_0;// transverse energy of tracks
00254                                                 // from the same vertex in a
00255                                                 // cone of 0.20 around the
00256                                                 // electron
00257     std::vector<double> *m_e_track_Et_in_cone_1;// transverse energy of tracks
00258                                                 // from the same vertex in a
00259                                                 // cone of 0.30 around the
00260                                                 // electron
00261     std::vector<double> *m_e_track_Et_in_cone_2;// transverse energy of tracks
00262                                                 // from the same vertex in a
00263                                                 // cone of 0.40 around the
00264                                                 // electron
00265     std::vector<double> *m_e_track_Et_in_cone_3;// transverse energy of tracks
00266                                                 // from the same vertex in a
00267                                                 // cone of 0.45 around the
00268                                                 // electron
00269 
00270                                             
00271 
00272   // photon data // ///////////////////////////////////////////////////////////////////////////////
00273     Int_t                    m_nb_rec_photons;      // number of photons in the event
00274     std::vector<double>     *m_p_calo_p_x;          // calo px
00275     std::vector<double>     *m_p_calo_p_y;          // calo py
00276     std::vector<double>     *m_p_calo_p_z;          // calo pz
00277     std::vector<double>     *m_p_calo_E;            // calo E
00278     std::vector<double>     *m_p_charge;            // charge
00279     std::vector<double>     *m_p_isEM;              // isEM parameter
00280     std::vector<double>     *m_p_NeuralNet;         // NeuralNet parameter
00281     std::vector<int>        *m_p_egamma_flag;       // m_egamma_flags of the electrons:
00282                                                     // m_egamma_flag = 1, if author==1, a track is 
00283                                                     // associated with the electron, and isEM%16==0
00284     std::vector<double>     *m_p_Et_in_cone_0;      // transverse energy in a cone of 0.20 around 
00285                                                     // the electron
00286     std::vector<double>     *m_p_Et_in_cone_1;      // transverse energy in a cone of 0.30 around 
00287                                                     // the electron
00288     std::vector<double>     *m_p_Et_in_cone_2;      // transverse energy in a cone of 0.40 around 
00289                                                     // the electron
00290     std::vector<double>     *m_p_Et_in_cone_3;      // transverse energy in a cone of 0.45 around 
00291                                                     // the electron
00292     std::vector<double> *m_e_trackIsolationEnergy_0;// transverse energy in a cone of 0.30 around  
00293                                                     // the electron (computed by trackIsolationTool) 
00294     std::vector<double> *m_e_trackIsolationEnergy_1;// transverse energy in a cone of 0.30 around
00295                                                     // the electron (computed by trackIsolationTool)     
00296     std::vector<double> *m_e_trackIsolationEnergy_2;// transverse energy in a cone of 0.30 around
00297                                                     // the electron (computed by trackIsolationTool)
00298     std::vector<double> *m_e_trackIsolationEnergy_3;// transverse energy in a cone of 0.30 around
00299                                                     // the electron (computed by trackIsolationTool)   
00300 
00301 
00302   // muon data // /////////////////////////////////////////////////////////////////////////////////
00303     Int_t                     m_nb_rec_muons;        // number of muons in the event
00304     std::vector<int>         *m_mu_alg_flag;         // muon reco algorithm
00305     std::vector<double>      *m_mu_p_x;              // px
00306     std::vector<double>      *m_mu_p_y;              // py
00307     std::vector<double>      *m_mu_p_z;              // pz
00308     std::vector<double>      *m_mu_E;                // E
00309     std::vector<double>      *m_mu_p_x_standalone;   // px (from MS stand-alone)
00310     std::vector<double>      *m_mu_p_y_standalone;   // py (from MS stand-alone)
00311     std::vector<double>      *m_mu_p_z_standalone;   // pz (from MS stand-alone)
00312     std::vector<double>      *m_mu_E_standalone;     // E (from MS stand-alone)
00313     std::vector<double>      *m_mu_p_x_ID;           // px (from ID stand-alone)
00314     std::vector<double>      *m_mu_p_y_ID;           // py (from ID stand-alone)
00315     std::vector<double>      *m_mu_p_z_ID;           // pz (from ID stand-alone)
00316     std::vector<double>      *m_mu_E_ID;             // E (from ID stand-alone)
00317     std::vector<double>      *m_mu_charge;           // charge
00318     std::vector<double>      *m_mu_fitChi2;          // chi2 of the track fit
00319     std::vector<int>         *m_mu_fitNumberDoF;     // chi2 over number of DoF of the track fit
00320     std::vector<double>      *m_mu_fitChi2OverDoF;   // number of DoF of the track fit
00321     std::vector<double>      *m_mu_matchChi2;        // chi2 of the track match
00322     std::vector<int>         *m_mu_matchNumberDoF;   // chi2 over number of DoF of the track match
00323     std::vector<double>      *m_mu_matchChi2OverDoF; // number of DoF of the track match
00324     std::vector<int>         *m_mu_flag;             // reconstruction flags;
00325                                                      // flag value = -1: combined muon (not best match),
00326                                                      // flag value = 1: combined muon (best match),
00327                                                      // flag value = 2: stand-alon muon,
00328                                                      // flag value = 3: low momentum muon,
00329                                                      // flag value = 0: none of the upper
00330     std::vector<int>        *m_mu_author;
00331     std::vector<int>        *m_mu_bestmatch;
00332     std::vector<int>        *m_mu_hasCombinedMuonTrackParticle;
00333                                                     // Do not know what it is but used in Soshis analysis
00334 
00335     std::vector<double>     *m_mu_Et_in_cone_0;     // transverse energy in a cone of 0.1 around 
00336                                                     // the muon
00337     std::vector<double>     *m_mu_Et_in_cone_1;     // transverse energy in a cone of 0.2 around 
00338                                                     // the muon
00339     std::vector<double>     *m_mu_Et_in_cone_2;     // transverse energy in a cone of 0.3 around 
00340                                                     // the muon
00341     std::vector<double>     *m_mu_Et_in_cone_3;     // transverse energy in a cone of 0.4 around 
00342                                                     // the muon
00343     std::vector<double>     *m_mu_Et_in_cone_4;     // transverse energy in a cone of 0.45 around 
00344                                                     // the muon
00345     std::vector<double>     *m_mu_Et_in_cone_5;     // transverse energy in a cone of 0.5 around 
00346                                                     // the muon
00347     std::vector<double>     *m_mu_Et_in_cone_6;     // transverse energy in a cone of 0.6 around 
00348                                                     // the muon
00349     std::vector<double>     *m_mu_Et_in_cone_7;     // transverse energy in a cone of 0.7 around 
00350                                                     // the muon
00351     std::vector<double>     *m_mu_trackIsolationEnergy_0;// transverse energy in a cone of 0.1 around
00352                                                     // the muon (computed by trackIsolationTool) 
00353     std::vector<double>     *m_mu_trackIsolationEnergy_1;// transverse energy in a cone of 0.2 around
00354                                                     // the muon (computed by trackIsolationTool) 
00355     std::vector<double>     *m_mu_trackIsolationEnergy_2;// transverse energy in a cone of 0.3 around
00356                                                     // the muon (computed by trackIsolationTool) 
00357     std::vector<double>     *m_mu_trackIsolationEnergy_3;// transverse energy in a cone of 0.4 around
00358                                                     // the muon (computed by trackIsolationTool) 
00359     std::vector<double>     *m_mu_trackIsolationEnergy_4;// transverse energy in a cone of 0.45 around
00360                                                     // the muon (computed by trackIsolationTool) 
00361     std::vector<double>     *m_mu_trackIsolationEnergy_5;// transverse energy in a cone of 0.5 around
00362                                                     // the muon (computed by trackIsolationTool) 
00363     std::vector<double>     *m_mu_trackIsolationEnergy_6;// transverse energy in a cone of 0.6 around
00364                                                     // the muon (computed by trackIsolationTool) 
00365     std::vector<double>     *m_mu_trackIsolationEnergy_7;// transverse energy in a cone of 0.7 around
00366                                                     // the muon (computed by trackIsolationTool) 
00367     std::vector<int>        *m_mu_nb_tracks_cone_0; // number of tracks in a cone of 0.1
00368     std::vector<int>        *m_mu_nb_tracks_cone_1; // number of tracks in a cone of 0.2
00369     std::vector<int>        *m_mu_nb_tracks_cone_2; // number of tracks in a cone of 0.3
00370     std::vector<int>        *m_mu_nb_tracks_cone_3; // number of tracks in a cone of 0.4
00371     std::vector<int>        *m_mu_nb_tracks_cone_4; // number of tracks in a cone of 0.45
00372     std::vector<int>        *m_mu_nb_tracks_cone_5; // number of tracks in a cone of 0.5
00373     std::vector<int>        *m_mu_nb_tracks_cone_6; // number of tracks in a cone of 0.6
00374     std::vector<int>        *m_mu_nb_tracks_cone_7; // number of tracks in a cone of 0.7
00375     std::vector<int>        *m_mu_vertex_index;     // vertex indices
00376     std::vector<double>     *m_mu_track_Et_in_cone_0; // transverse energy of
00377                                                       // tracks from the same
00378                                                       // vertex in a cone of
00379                                                       // 0.1 around the muon
00380     std::vector<double>     *m_mu_track_Et_in_cone_1; // transverse energy of
00381                                                       // tracks from the same
00382                                                       // vertex in a cone of
00383                                                       // 0.2 around the muon
00384     std::vector<double>     *m_mu_track_Et_in_cone_2; // transverse energy of
00385                                                       // tracks from the same
00386                                                       // vertex in a cone of
00387                                                       // 0.3 around the muon
00388     std::vector<double>     *m_mu_track_Et_in_cone_3; // transverse energy of
00389                                                       // tracks from the same
00390                                                       // vertex in a cone of
00391                                                       // 0.4 around the muon
00392     std::vector<double>     *m_mu_track_Et_in_cone_4; // transverse energy of
00393                                                       // tracks from the same
00394                                                       // vertex in a cone of
00395                                                       // 0.45 around the muon
00396     std::vector<double>     *m_mu_track_Et_in_cone_5; // transverse energy of
00397                                                       // tracks from the same
00398                                                       // vertex in a cone of
00399                                                       // 0.5 around the muon
00400     std::vector<double>     *m_mu_track_Et_in_cone_6; // transverse energy of
00401                                                       // tracks from the same
00402                                                       // vertex in a cone of
00403                                                       // 0.6 around the muon
00404     std::vector<double>     *m_mu_track_Et_in_cone_7; // transverse energy of
00405                                                       // tracks from the same
00406                                                       // vertex in a cone of
00407                                                       // 0.7 around the muon
00408 
00409 
00410 
00411   // jet data // //////////////////////////////////////////////////////////////////////////////////
00412     Int_t                    m_nb_rec_jets;         // number of jets in the event
00413     std::vector<double>     *m_jet_p_x;             // px
00414     std::vector<double>     *m_jet_p_y;             // py
00415     std::vector<double>     *m_jet_p_z;             // pz
00416     std::vector<double>     *m_jet_E;               // E
00417     std::vector<int>        *m_jet_flag;            // jet-reconstruction flags:
00418                                                     // flag value = 0: unknown algorithm,
00419                                                     // flag_value = 1: cone-4 algorithm,
00420                                                     // flag_value = 2: cone-7 algorithm,
00421                                                     // flag_value = 3: kt algorithm
00422     std::vector<double>     *m_jet_btag_weight;     // b-tag weight
00423     std::vector<int>        *m_jet_truthflavor;     // flavor of matching truth jet
00424                                                     // flav =  5: b-jet
00425                                                     // flav =  4: c-jet
00426                                                     // flav = 15: tau
00427                                                     // flav =  0: N/A
00428                                                     // flav = -1: all others
00429     std::vector<int>        *m_jet_nb_tracks;       // number of tracks in the jet
00430     std::vector<double>     *m_jet_tracks_charge;   // charge of track
00431     std::vector<double>     *m_jet_tracks_p_x;      // px of track
00432     std::vector<double>     *m_jet_tracks_p_y;      // py of track
00433     std::vector<double>     *m_jet_tracks_p_z;      // pz of track
00434     std::vector<double>     *m_jet_tracks_E;        // E of track
00435 
00436   // taujet data // ////////////////////////////////////////////////////////////////////////////////
00437     Int_t                    m_nb_tau_jets;         // number of jets in the event
00438     std::vector<double>     *m_taujet_p_x;          // px
00439     std::vector<double>     *m_taujet_p_y;          // py
00440     std::vector<double>     *m_taujet_p_z;          // pz
00441     std::vector<double>     *m_taujet_E;            // E
00442     std::vector<int>        *m_taujet_flag;         // taujet-reconstruction flags:
00443                                                     // flag value = 0: unknown algorithm,
00444                                                     // flag_value = 1: cone-4 algorithm,
00445                                                     // flag_value = 2: cone-7 algorithm,
00446                                                     // flag_value = 3: kt algorithm
00447     // (??) i'm not sure whether the flags have the same meaning here as for the ParticleJet (??) 
00448     std::vector<double>     *m_taujet_charge;       // taujet charge
00449         
00450     //TauRec Parameters
00451     std::vector<double>     *m_taujet_etHadCalib;   // gives the calibrated HAD transverse energy,
00452                                                     // HAD is fudge*(cryo + EM3 + TILE1 + TILE2 + TILE3)
00453     std::vector<double>     *m_taujet_etEMCalib;    // gives the calibrated EM transverse energy,
00454                                                     // EM is Presampler + EM1 + EM2 
00455     std::vector<double>     *m_taujet_emRadius;             
00456     std::vector<double>     *m_taujet_isolationFraction;    
00457     std::vector<double>     *m_taujet_centralityFraction;   
00458     std::vector<double>     *m_taujet_stripWidth2;          
00459     std::vector<double>     *m_taujet_nStripCells;          
00460     std::vector<double>     *m_taujet_llh;  
00461     std::vector<double>     *m_taujet_lowPtTauEleDiscriminant;               
00462     std::vector<double>     *m_taujet_tauENeuralNetwork;             
00463     std::vector<double>     *m_taujet_tauJetNeuralnetwork;           
00464     
00465     std::vector<int>    *m_taujet_nb_tracks;        // gives number of tracks from the tau decay 
00466     std::vector<double> *m_taujet_track_px_1;       // px first track
00467     std::vector<double> *m_taujet_track_py_1;       // py first track
00468     std::vector<double> *m_taujet_track_pz_1;       // pz first track
00469     std::vector<double> *m_taujet_track_e_1;        // energy first track
00470     std::vector<int>    *m_taujet_track_TRTHighThresholdHits_1; // 
00471     std::vector<int>    *m_taujet_track_TRTHits_1;        // 
00472     std::vector<double> *m_taujet_track_px_2;       // px of second tracks
00473     std::vector<double> *m_taujet_track_py_2;       // py of second tracks
00474     std::vector<double> *m_taujet_track_pz_2;       // pz of second tracks
00475     std::vector<double> *m_taujet_track_e_2;        // energy of second tracks
00476     std::vector<int>    *m_taujet_track_TRTHighThresholdHits_2; // 
00477     std::vector<int>    *m_taujet_track_TRTHits_2;        // 
00478     std::vector<double> *m_taujet_track_px_3;       // px of third track
00479     std::vector<double> *m_taujet_track_py_3;       // py of third track
00480     std::vector<double> *m_taujet_track_pz_3;       // pz of third track
00481     std::vector<double> *m_taujet_track_e_3;        // energy of third track
00482     std::vector<int>    *m_taujet_track_TRTHighThresholdHits_3; // 
00483     std::vector<int>    *m_taujet_track_TRTHits_3;        // 
00484 
00485   
00486   // truthjet data // //////////////////////////////////////////////////////////////////////////////
00487     Int_t                    m_nb_truth_jets;       // number of jets in the event
00488     std::vector<double>     *m_truthjet_p_x;        // px
00489     std::vector<double>     *m_truthjet_p_y;        // py
00490     std::vector<double>     *m_truthjet_p_z;        // pz
00491     std::vector<double>     *m_truthjet_E;          // E
00492     std::vector<int>        *m_truthjet_flag;       // jet-reconstruction flags:
00493                                                     // flag value = 0: unknown algorithm,
00494                                                     // flag_value = 1: cone-4 algorithm,
00495                                                     // flag_value = 2: cone-7 algorithm,
00496                                                     // flag_value = 3: kt algorithm
00497     std::vector<double>     *m_truthjet_btag_weight;// b-tag weight
00498 
00499 
00500     
00501   // missingEt data // /////////////////////////////////////////////////////////////////////////////
00502     std::vector<std::string>    *m_met_obj_name;          // MET Object name
00503     std::vector<double>         *m_missing_Etx;           // MET x component
00504     std::vector<double>         *m_missing_Ety;           // MET y component
00505     std::vector<double>         *m_missing_Et;            // MET
00506     std::vector<double>         *m_missing_Etsum;         // linear (Etsum) sum of Etx, Ety
00507     
00508 
00509   // truth data // /////////////////////////////////////////////////////////////////////////////////
00510     Int_t                    m_nb_truth_particle_all;
00511     Int_t                    m_nb_truth_particle;
00512     std::vector<double>     *m_truth_particle_pt;
00513     std::vector<int>        *m_truth_particle_status;
00514     std::vector<int>        *m_truth_particle_barcode;
00515     std::vector<int>        *m_truth_particle_pdgId;
00516     std::vector<int>        *m_truth_particle_nDaughters;
00517     std::vector<double>     *m_truth_particle_p_x;
00518     std::vector<double>     *m_truth_particle_p_y;
00519     std::vector<double>     *m_truth_particle_p_z;
00520     std::vector<double>     *m_truth_particle_E;
00521     std::vector<double>     *m_truth_particle_charge;
00522     std::vector<int>        *m_truth_particle_nParents;
00523     std::vector<int>        *m_truth_particle_mother0_barcode;
00524     std::vector<int>        *m_truth_particle_mother0_pdgId;
00525 
00526 
00527   // vertex data // ////////////////////////////////////////////////////////////
00528     Int_t                m_nb_vertices;         // number of primary vertices
00529     std::vector<double> *m_vertex_position_x;   // global x of vertices
00530     std::vector<double> *m_vertex_position_y;   // global y of vertices
00531     std::vector<double> *m_vertex_position_z;   // global z of vertices
00532     std::vector<double> *m_vertex_pos_error_x;  // errors of global x of vertices
00533     std::vector<double> *m_vertex_pos_error_y;  // errors of global y of vertices
00534     std::vector<double> *m_vertex_pos_error_z;  // errors of global z of vertices
00535     std::vector<double> *m_vertex_chi2;         // chi^2 of vertex fits
00536     std::vector<int>    *m_vertex_ndof;         // number of degrees of freedom
00537     std::vector<double> *m_vertex_Et;           // transverse momentum of the vertex
00538     std::vector<int>    *m_vertex_nb_tracks;    // number of tracks emerging
00539                                                 // from the vertices
00540 
00541   // truth vertex data // //////////////////////////////////////////////////////
00542     Int_t                m_nb_truth_vertices;       // number of primary vertices
00543     std::vector<double> *m_truth_vertex_position_x; // global x of vertices
00544     std::vector<double> *m_truth_vertex_position_y; // global y of vertices
00545     std::vector<double> *m_truth_vertex_position_z; // global z of vertices
00546     std::vector<double> *m_truth_vertex_Et;         // transverse momentum of the vertex
00547     std::vector<int>    *m_truth_vertex_nb_tracks;  // number of tracks emerging
00548                                                     // from the vertices    
00549 
00550   // track-jet data // /////////////////////////////////////////////////////////////////////////////
00551     Int_t                    m_nb_track_jets;       // number of track-jets in
00552                                                     // the event
00553     std::vector<double>     *m_track_jet_p_x;       // track-jet px
00554     std::vector<double>     *m_track_jet_p_y;       // track-jet py
00555     std::vector<double>     *m_track_jet_p_z;       // track-jet pz
00556     std::vector<double>     *m_track_jet_E;         // track-jet energy
00557 
00558   // truth track-jet data // ///////////////////////////////////////////////////////////////////////
00559     Int_t                    m_nb_truth_track_jets; // number of truth 
00560                                                     // track-jets in the event
00561     std::vector<double>     *m_truth_track_jet_p_x; // track-jet px
00562     std::vector<double>     *m_truth_track_jet_p_y; // track-jet py
00563     std::vector<double>     *m_truth_track_jet_p_z; // track-jet pz
00564     std::vector<double>     *m_truth_track_jet_E;   // track-jet energy
00565     
00566         
00567     // event weight for mc@nlo 
00568     Double_t                         m_event_weight;
00569         
00570         
00571   // private routines //
00572     bool get_trigger_data(void); // method to fill the data of
00573                                  // the tigger (L1,L2,EF) into the AAN;
00574                                  // returns true in case of success
00575     bool get_trigger_LVL1_ROI_data(void); // method to fill the data of
00576                                           // the LVL1_ROI trigger into the AAN;
00577                                           // returns true in case of success
00578     bool get_photon_data(void); // method to fill the data of
00579                                 // reconstructed photons into the AAN;
00580                                 // returns true in case of success
00581     bool get_electron_data(void); // method to fill the data of
00582                                   // reconstructed electrons into the AAN;
00583                                   // returns true in case of success
00584     bool get_muon_data(void); // method to fill the data of reconstructed
00585                               // muons into the AAN;
00586                               // returns true in case of success
00587     bool get_jet_data(void); // method to fill the data of reconstructed
00588                              // jets into the AAN;
00589                              // returns true in case of success
00590     bool get_taujet_data(void); // method to fill the data of reconstructed
00591                                 // tau jets into the AAN;
00592                                 // returns true in case of success
00593     bool get_truthjet_data(void); // method to fill the data of truth
00594                                   // jets into the AAN;
00595                                   // returns true in case of success
00596     bool get_missingEt_data(void); // method to fill the data of
00597                                    // missing Et into the AAN;
00598                                    // returns true in case of success
00599     bool get_truthmissingEt_data(void); // method to fill the data of
00600                                         // truth missing Et into the AAN;
00601                                         // returns true in case of success
00602     bool get_truthparticle_data(void); // method to fill the data of
00603                                        // truth particles into the AAN;
00604                                        // returns true in case of success
00605     void fill_truthparticle_data(const TruthParticle *m_TruthParticle); 
00606                                    // method to fill the data of
00607                                    // truth particles into the AAN;
00608                                    // returns true in case of success
00609  
00610     bool get_eventweight_data(void);  // method to fill event weight data
00611 
00612     bool get_vertex_data(void); // get the primary vertices; returns true in
00613                                 // case of success
00614     bool get_truth_vertex_data(void); // get the truth vertices;
00615                                       // returns true in case of success
00616     
00617     bool get_track_jet_data(void); // method to fill the data of reconstructed
00618                                    // track jets into the AAN;
00619                                    // returns true in case of success
00620     bool get_truth_track_jet_data(void); // method to fill the data of truth
00621                                          // track jets into the AAN;
00622 
00623     unsigned int find_vertex(const Trk::RecVertex * vertex) const;
00624                                     // get the index of the vertex
00625     double get_energy_in_cone(const double & cone,
00626     const HepLorentzVector & p,
00627     const Hep3Vector & vertex);
00628                   // get the energy of particle emerging
00629                   // from the vertex "vertex" in a cone
00630                   // of "cone" in delta R of p
00631 
00632 
00633 
00634 };
00635 
00636 #endif

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