NtupleWriter14/NtupleWriter14/AANtupleWriter14.h

00001 //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
00002 // 05.12.2006, AUTHORS: OLIVER KORTNER, STEFFEN KAISER, MANFRED GROH, THIES EHRICH
00003 //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
00004 
00005 #ifndef AANtupleWriter14H
00006 #define AANtupleWriter14H
00007 
00008 //::::::::::::::::::::::::::::
00009 //:: CLASS AANtupleWriter14 ::
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 "NtupleWriter14/VertexCollectionSvc.h"
00062 #include "TrigDecision/TrigDecisionTool.h"
00063 
00064 // ROOT //
00065 //#include "TArrayF.h"
00066 //#include "TArrayI.h"
00067 #include "TTree.h"
00068 #include "TString.h"
00069 #include "TDirectoryFile.h"
00070 
00071 
00072 //using namespace std;
00073 
00074 class AANtupleWriter14 : public CBNT_AthenaAwareBase {
00075 
00076 public:
00077 // Constructors //
00078     AANtupleWriter14(const std::string & name,
00079                               ISvcLocator * pSvcLocator);
00081 
00082     ~AANtupleWriter14();
00084     
00085 // Methods //
00086 // Methods required by the base class  //
00087     virtual StatusCode CBNT_initializeBeforeEventLoop(void);
00090     virtual StatusCode CBNT_initialize(void);
00093     virtual StatusCode CBNT_finalize(void);
00096     virtual StatusCode CBNT_execute(void);
00099     virtual StatusCode CBNT_clear(void);
00101 
00102 private:
00103 // ATHENA //
00104     StoreGateSvc *m_storeGate; // pointer to the store-gate service
00105     MsgStream *m_log; // pointer to the message stream
00106     MPIHiggsAnalysis::VertexCollectionSvc *m_vert_coll;
00107     // pointer to the output vertex collection
00108     IAlgTool *tmp_trackIsolationTool; //pointer to the track Isolation Tool
00109     TrackIsolationTool *m_trackIsolationTool; //pointer to the track Isolation Tool (castet)
00110     IToolSvc *m_toolSvc; //pointer to the tools service 
00111 
00112 // job options //
00113     std::string m_trigger_decision_container;   // name of the trigger decision container
00114     std::string m_trigger_mu_lvl1_container;  // name of the trigger decision container
00115     std::string m_trigger_mu_lvl2_container;  // name of the trigger muon LVL2 container
00116     std::string m_trigger_mu_ef_container;    // name of the trigger muon EF container
00117     std::string m_trigger_met_container;        // name of the trigger met container
00118     std::string m_photon_container;             // name of the photon container
00119     std::string m_electron_container;           // name of the electron container
00120     std::vector<std::string> m_muon_container;  // name of the muon container
00121     std::string m_jet_container;                // name of the jet container
00122     std::string m_taujet_container;             // name of the taujet container
00123     std::string m_truthjet_container;           // name of the truth jet container
00124     std::string m_truthmissingEt_container;     // name of the missingEt truth container
00125     std::string m_truthparticle_container;      // name of the truthparticle container
00126     
00127     std::string m_vert_coll_svc_name;           // name of the output vertex collection
00128     std::string m_primary_vertex_container;     // name of the vertex container
00129     std::string m_track_jet_container;          // name of the track-jet container
00130     std::string m_truth_track_jet_container;    // name of the truth track-jet container
00131     
00132     std::string m_track_particle_container;     // name of the container of track particles
00133     
00134     std::string m_showerContainerName;          // name of EM shower container
00135     std::string m_trackMatchContainerName;      // name of track-match container
00136     std::string m_tauDetailsContainerName;      // name of tau-details container
00137 
00138     std::string  m_release;    //athena release
00139     std::string  m_svnversion; //svn version
00140     std::string  m_date;       //date 
00141 
00142     bool     m_AtlFastFlag;
00143     bool     m_doAODFix1mm;
00144     bool     m_doEventWeight;
00145     int      nEvents;
00146     int      m_truthparticleMaximumLeptonBarcode;
00147     bool     m_truthparticleNoPDGAbove100;
00148     bool     m_doTrigger;
00149     bool     m_trigger_mu_lvl1;
00150     bool     m_trigger_mu_lvl2;
00151     bool     m_doMissingEt;
00152     bool     m_doTrackParticles;
00153     bool     m_doElectrons;
00154     bool     m_doPhotons;
00155     bool     m_doMuons;
00156     bool     m_doJets;
00157     bool     m_doTauJets;
00158     bool     m_doTruthJets;
00159     bool     m_doTruthParticles;
00160 
00161     bool     m_doTrackJets;  // flag indicating whether track jets should be created
00162     bool     m_doVertices;   // flag indicating whether vertices should be written
00163 
00164 
00165 
00166 
00167 
00168 
00169 
00170 
00171 
00172 
00173 // info Trees that are stored seperately
00174     // info about the AOD input files used
00175     std::vector<std::string> v_string_aod_files;
00176     std::vector<std::string> v_string_met_container;
00177     TTree *tree_aod_file_collection;
00178     char char_array_aod_file[200];
00179 
00180 // if the vector is declared here it does not work anymore, but why???????    
00181  //   std::vector<std::string> v_string_met_container;
00182     
00183     // info about the AOD input files used
00184     TTree *tree_aod_container_keys;
00185     char char_array_aod_container_keys[50];
00186     char aodkey_trigger_decision_container[50];
00187     char aodkey_trigger_mu_lvl1_container[50];
00188     char aodkey_trigger_mu_lvl2_container[50];
00189     char aodkey_trigger_mu_ef_container[50];
00190     char aodkey_trigger_met_container[50];
00191     char aodkey_photon_container[50];
00192     char aodkey_electron_container[50];
00193     char aodkey_muon_container[50];
00194     char aodkey_jet_container[50];
00195     char aodkey_taujet_container[50];
00196     char aodkey_truthjet_container[50];
00197     char aodkey_met_container[500];
00198     char aodkey_truthmissingEt_container[50];
00199     char aodkey_truthparticle_container[50];
00200     char aodkey_primary_vertex_container[50];
00201     char aodkey_track_jet_container[50];      
00202     char aodkey_truth_track_jet_container[50]; 
00203     char aodkey_track_particle_container[50];  
00204     bool aodkey_AtlFastFlag;
00205     bool aodkey_doAODFix1mm;
00206     bool aodkey_doTrackJets;
00207     bool aodkey_doVertices;
00208     int  aodkey_truthparticleMaximumLeptonBarcode;
00209     bool aodkey_truthparticleNoPDGAbove100;
00210     char aodkey_showerContainerName[50];
00211     char aodkey_trackMatchContainerName[50];
00212     char aodkey_tauDetailsContainerName[50];
00213     
00214     char aodkey_release[50];
00215     char aodkey_svnversion[50];
00216     char aodkey_date[50];
00217 
00218 // data vectors to be stored in the AAN //
00219   // reconstructed data //
00220   
00221  // trigger decision data // //////////////////////////////////////////////////////////////////////
00222    
00224    ToolHandle<TrigDec::TrigDecisionTool> m_trigDec;
00225    
00226     bool m_trigger_l1_defined;
00227     bool m_trigger_l2_defined;
00228     bool m_trigger_ef_defined;
00229 
00230    
00231    std::vector<std::string> *m_trigger_keys_l1;        // all the trigger keys of level 1
00232    std::vector<int>     *m_trigger_keys_status_l1;     // status of the trigger keys
00233    std::vector<int>     *m_trigger_keys_prescale_l1;     // prescale of the trigger keys
00234    std::vector<std::string> *m_trigger_keys_l2;        // all the trigger keys of level 2
00235    std::vector<int>     *m_trigger_keys_status_l2;     // status of the trigger keys
00236    std::vector<int>     *m_trigger_keys_prescale_l2;     // prescale of the trigger keys (Full chain)
00237    std::vector<std::string> *m_trigger_keys_ef;        // all the trigger keys of level 3
00238    std::vector<int>     *m_trigger_keys_status_ef;     // status of the trigger keys
00239    std::vector<int>     *m_trigger_keys_prescale_ef;     // prescale of the trigger keys (Full chain)
00240     
00241   // trigger muon lvl1 data // /////////////////////////////////////////////////////////////////////
00242    Int_t                 m_nb_trigger_mu_lvl1;           // number of muons (lvl1) in the event
00243    std::vector<double>   *m_trigger_mu_lvl1_eta;         // muon roi eta
00244    std::vector<double>   *m_trigger_mu_lvl1_phi;         // muon roi phi
00245    std::vector<int>      *m_trigger_mu_lvl1_threshold_number;  // muon roi threshold number
00246     std::vector<double>   *m_trigger_mu_lvl1_threshold_value;   // muon roi threshold number
00247     std::vector<std::string> *m_trigger_mu_lvl1_threshold_name; // muon roi threshold number
00248     std::vector<uint32_t> *m_trigger_mu_lvl1_roiword;       // muon roi word
00249     std::vector<bool>     *m_trigger_mu_lvl1_confirmed;     // has match with lvl2
00250   
00251   // trigger muon lvl2 data // /////////////////////////////////////////////////////////////////////
00252     Int_t                 m_nb_trigger_mu_lvl2;           // number of muons (lvl2) in the event
00253     std::vector<double>   *m_trigger_mu_lvl2_eta;        // muon lvl2 eta
00254     std::vector<double>   *m_trigger_mu_lvl2_phi;        // muon lvl2 phi
00255     std::vector<double>   *m_trigger_mu_lvl2_pt;         // muon lvl2 pt
00256     std::vector<float>   *m_trigger_mu_lvl2_sigma_pt;    // muon lvl2 pt error
00257         
00258   // trigger muon ef data // /////////////////////////////////////////////////////////////////////
00259     Int_t                 m_nb_trigger_mu_ef;           // number of muons (ef) in the event
00260     std::vector<double>   *m_trigger_mu_ef_eta;         // muon ef eta
00261     std::vector<double>   *m_trigger_mu_ef_phi;         // muon ef phi
00262     std::vector<double>   *m_trigger_mu_ef_pt;          // muon ef pt
00263     std::vector<double>   *m_trigger_mu_ef_charge1;     // muon ef charge (return m_charge)
00264     std::vector<double>   *m_trigger_mu_ef_charge2;     // muon ef charge (return this->Charge())
00265     std::vector<int>      *m_trigger_mu_ef_code;        // muon ef code
00266                                      // MOORE 0    : muon reconstructed in the MS;
00267                                      // MuidSA +1  : muon track propagated to the IP;
00268                                      // MuidCB +10 : matching probability > match probability cut;
00269                                      //        +20 : failed stand-alone fit, but good combined fit;
00270                                      //        +100: good fit quality    
00271   
00272   // trigger missing et data // /////////////////////////////////////////////////////////////////////
00273     Double_t                 m_trigger_met_ex;     // trigger et_x value (level2+EF)
00274     Double_t                 m_trigger_met_ey;     // trigger et_y value (level2+EF)
00275     Double_t                 m_trigger_met_et;     // trigger et value (level2+EF)
00276     Double_t                 m_trigger_met_sumEt;  // trigger sum et value (level2+EF)
00277     Double_t                 m_trigger_met_RoIword;// trigger RoI word 
00278     
00279     
00280     // track data // /////////////////////////////////////////////////////////////////////////////
00281     Int_t                m_nb_rec_tracks;    // number of tracks in the event
00282     std::vector<double>  *m_track_p_x;
00283     std::vector<double>  *m_track_p_y;
00284     std::vector<double>  *m_track_p_z;
00285     std::vector<double>  *m_track_E;
00286     std::vector<double>  *m_track_charge;
00287     std::vector<int>  *m_track_vertex_index;
00288     std::vector<int>  *m_track_SCThit;
00289     std::vector<int>  *m_track_Phit;
00290     std::vector<int>  *m_track_BLayerhit;
00291     std::vector<int>  *m_track_TRThit;
00292     std::vector<int>  *m_track_MDThit;
00293     std::vector<int>  *m_track_CSChit_eta;
00294     std::vector<int>  *m_track_TGChit_eta;
00295     std::vector<int>  *m_track_RPChit_eta;
00296     std::vector<int>  *m_track_CSChit_phi;
00297     std::vector<int>  *m_track_TGChit_phi;
00298     std::vector<int>  *m_track_RPChit_phi;
00299     std::vector<double> *m_track_d0;
00300     std::vector<double> *m_track_z0;
00301     std::vector<double> *m_track_chi2;
00302     std::vector<double> *m_track_nDoF;
00303     std::vector<double> *m_track_trackIsolationEnergy_s;
00304     std::vector<double> *m_track_trackIsolationEnergy_0;
00305     std::vector<double> *m_track_trackIsolationEnergy_1;
00306     std::vector<double> *m_track_trackIsolationEnergy_2;
00307     std::vector<double> *m_track_trackIsolationEnergy_3;
00308 
00309     
00310   
00311   // electron data // /////////////////////////////////////////////////////////////////////////////
00312     Int_t                m_nb_rec_electrons;    // number of electrons in the event
00313     std::vector<double> *m_e_p_x;               // px
00314     std::vector<double> *m_e_p_y;               // py
00315     std::vector<double> *m_e_p_z;               // pz
00316     std::vector<double> *m_e_E;                 // E
00317     std::vector<double> *m_e_calo_p_x;          // calo px
00318     std::vector<double> *m_e_calo_p_y;          // calo py
00319     std::vector<double> *m_e_calo_p_z;          // calo pz
00320     std::vector<double> *m_e_calo_E;            // calo E
00321     std::vector<double> *m_e_charge;            // charge
00322     std::vector<double> *m_e_isEM;              // isEM parameter
00323     std::vector<int>    *m_e_id_flag;           // id flag
00324     std::vector<double> *m_e_NeuralNet;         // NeuralNet parameter
00325     std::vector<int>    *m_e_egamma_flag;       // m_egamma_flags of the electrons:
00326                                                 // m_egamma_flag = 1, if author==1, a track is 
00327                                                 // associated with the electron, and isEM%16==0
00328     std::vector<int>    *m_e_softe_flag;        // m_softe_flags of the electrons:
00329                                                 // m_softe_flag = 1, if author==2,  a track is 
00330                                                 // associated with the electron, and isEM%16==0
00331     std::vector<double> *m_e_E_over_p;          // E(calorimeter)/p(inner tracker)
00332     std::vector<double> *m_e_TRTHighThresholdHits; // Number of the TRT High Threshold Hits
00333                                                 // of the track
00334     std::vector<double> *m_e_TRTHits;           // Number of the TRT Hits of the track
00335     std::vector<double> *m_e_ethad1;            // ElectronParameters::ethad1 value
00336     std::vector<double> *m_e_Et_in_cone_0;      // transverse energy in a cone of 0.20 around 
00337                                                 // the electron
00338     std::vector<double> *m_e_Et_in_cone_1;      // transverse energy in a cone of 0.30 around 
00339                                                 // the electron
00340     std::vector<double> *m_e_Et_in_cone_2;      // transverse energy in a cone of 0.40 around 
00341                                                 // the electron
00342     std::vector<double> *m_e_Et_in_cone_3;      // transverse energy in a cone of 0.45 around 
00343                                                 // the electron
00344     std::vector<int>    *m_e_vertex_index;      // vertex indices
00345     std::vector<double> *m_e_track_Et_in_cone_0;// transverse energy of tracks
00346                                                 // from the same vertex in a
00347                                                 // cone of 0.20 around the
00348                                                 // electron
00349     std::vector<double> *m_e_track_Et_in_cone_1;// transverse energy of tracks
00350                                                 // from the same vertex in a
00351                                                 // cone of 0.30 around the
00352                                                 // electron
00353     std::vector<double> *m_e_track_Et_in_cone_2;// transverse energy of tracks
00354                                                 // from the same vertex in a
00355                                                 // cone of 0.40 around the
00356                                                 // electron
00357     std::vector<double> *m_e_track_Et_in_cone_3;// transverse energy of tracks
00358                                                 // from the same vertex in a
00359                                                 // cone of 0.45 around the
00360                                                 // electron
00361 
00362                                             
00363 
00364   // photon data // ///////////////////////////////////////////////////////////////////////////////
00365     Int_t                    m_nb_rec_photons;      // number of photons in the event
00366     std::vector<double>     *m_p_calo_p_x;          // calo px
00367     std::vector<double>     *m_p_calo_p_y;          // calo py
00368     std::vector<double>     *m_p_calo_p_z;          // calo pz
00369     std::vector<double>     *m_p_calo_E;            // calo E
00370     std::vector<double>     *m_p_charge;            // charge
00371     std::vector<double>     *m_p_isEM;              // isEM parameter
00372     std::vector<double>     *m_p_NeuralNet;         // NeuralNet parameter
00373     std::vector<int>        *m_p_egamma_flag;       // m_egamma_flags of the electrons:
00374                                                     // m_egamma_flag = 1, if author==1, a track is 
00375                                                     // associated with the electron, and isEM%16==0
00376     std::vector<double>     *m_p_Et_in_cone_0;      // transverse energy in a cone of 0.20 around 
00377                                                     // the electron
00378     std::vector<double>     *m_p_Et_in_cone_1;      // transverse energy in a cone of 0.30 around 
00379                                                     // the electron
00380     std::vector<double>     *m_p_Et_in_cone_2;      // transverse energy in a cone of 0.40 around 
00381                                                     // the electron
00382     std::vector<double>     *m_p_Et_in_cone_3;      // transverse energy in a cone of 0.45 around 
00383                                                     // the electron
00384     std::vector<double> *m_e_trackIsolationEnergy_0;// transverse energy in a cone of 0.30 around  
00385                                                     // the electron (computed by trackIsolationTool) 
00386     std::vector<double> *m_e_trackIsolationEnergy_1;// transverse energy in a cone of 0.30 around
00387                                                     // the electron (computed by trackIsolationTool)     
00388     std::vector<double> *m_e_trackIsolationEnergy_2;// transverse energy in a cone of 0.30 around
00389                                                     // the electron (computed by trackIsolationTool)
00390     std::vector<double> *m_e_trackIsolationEnergy_3;// transverse energy in a cone of 0.30 around
00391                                                     // the electron (computed by trackIsolationTool)   
00392 
00393 
00394   // muon data // /////////////////////////////////////////////////////////////////////////////////
00395     Int_t                     m_nb_rec_muons;        // number of muons in the event
00396     std::vector<int>         *m_mu_alg_flag;         // muon reco algorithm
00397     std::vector<double>      *m_mu_p_x;              // px
00398     std::vector<double>      *m_mu_p_y;              // py
00399     std::vector<double>      *m_mu_p_z;              // pz
00400     std::vector<double>      *m_mu_E;                // E
00401     std::vector<double>      *m_mu_p_x_standalone;   // px (from MS stand-alone)
00402     std::vector<double>      *m_mu_p_y_standalone;   // py (from MS stand-alone)
00403     std::vector<double>      *m_mu_p_z_standalone;   // pz (from MS stand-alone)
00404     std::vector<double>      *m_mu_E_standalone;     // E (from MS stand-alone)
00405     std::vector<double>      *m_mu_p_x_ID;           // px (from ID stand-alone)
00406     std::vector<double>      *m_mu_p_y_ID;           // py (from ID stand-alone)
00407     std::vector<double>      *m_mu_p_z_ID;           // pz (from ID stand-alone)
00408     std::vector<double>      *m_mu_E_ID;             // E (from ID stand-alone)
00409     std::vector<double>      *m_mu_charge;           // charge
00410     std::vector<double>      *m_mu_fitChi2;          // chi2 of the track fit
00411     std::vector<int>         *m_mu_fitNumberDoF;     // chi2 over number of DoF of the track fit
00412     std::vector<double>      *m_mu_fitChi2OverDoF;   // number of DoF of the track fit
00413     std::vector<double>      *m_mu_matchChi2;        // chi2 of the track match
00414     std::vector<int>         *m_mu_matchNumberDoF;   // chi2 over number of DoF of the track match
00415     std::vector<double>      *m_mu_matchChi2OverDoF; // number of DoF of the track match
00416     std::vector<int>         *m_mu_flag;             // reconstruction flags;
00417                                                      // flag value = -1: combined muon (not best match),
00418                                                      // flag value = 1: combined muon (best match),
00419                                                      // flag value = 2: stand-alon muon,
00420                                                      // flag value = 3: low momentum muon,
00421                                                      // flag value = 0: none of the upper
00422     std::vector<int>        *m_mu_author;
00423     std::vector<int>        *m_mu_bestmatch;
00424     std::vector<int>        *m_mu_hasCombinedMuonTrackParticle;
00425                                                     // Do not know what it is but used in Soshis analysis
00426 
00427     std::vector<double>     *m_mu_Et_in_cone_0;     // transverse energy in a cone of 0.1 around 
00428                                                     // the muon
00429     std::vector<double>     *m_mu_Et_in_cone_1;     // transverse energy in a cone of 0.2 around 
00430                                                     // the muon
00431     std::vector<double>     *m_mu_Et_in_cone_2;     // transverse energy in a cone of 0.3 around 
00432                                                     // the muon
00433     std::vector<double>     *m_mu_Et_in_cone_3;     // transverse energy in a cone of 0.4 around 
00434                                                     // the muon
00435     std::vector<double>     *m_mu_Et_in_cone_4;     // transverse energy in a cone of 0.45 around 
00436                                                     // the muon
00437     std::vector<double>     *m_mu_Et_in_cone_5;     // transverse energy in a cone of 0.5 around 
00438                                                     // the muon
00439     std::vector<double>     *m_mu_Et_in_cone_6;     // transverse energy in a cone of 0.6 around 
00440                                                     // the muon
00441     std::vector<double>     *m_mu_Et_in_cone_7;     // transverse energy in a cone of 0.7 around 
00442                                                     // the muon
00443     std::vector<double>     *m_mu_trackIsolationEnergy_0;// transverse energy in a cone of 0.1 around
00444                                                     // the muon (computed by trackIsolationTool) 
00445     std::vector<double>     *m_mu_trackIsolationEnergy_1;// transverse energy in a cone of 0.2 around
00446                                                     // the muon (computed by trackIsolationTool) 
00447     std::vector<double>     *m_mu_trackIsolationEnergy_2;// transverse energy in a cone of 0.3 around
00448                                                     // the muon (computed by trackIsolationTool) 
00449     std::vector<double>     *m_mu_trackIsolationEnergy_3;// transverse energy in a cone of 0.4 around
00450                                                     // the muon (computed by trackIsolationTool) 
00451     std::vector<double>     *m_mu_trackIsolationEnergy_4;// transverse energy in a cone of 0.45 around
00452                                                     // the muon (computed by trackIsolationTool) 
00453     std::vector<double>     *m_mu_trackIsolationEnergy_5;// transverse energy in a cone of 0.5 around
00454                                                     // the muon (computed by trackIsolationTool) 
00455     std::vector<double>     *m_mu_trackIsolationEnergy_6;// transverse energy in a cone of 0.6 around
00456                                                     // the muon (computed by trackIsolationTool) 
00457     std::vector<double>     *m_mu_trackIsolationEnergy_7;// transverse energy in a cone of 0.7 around
00458                                                     // the muon (computed by trackIsolationTool) 
00459     std::vector<int>        *m_mu_nb_tracks_cone_0; // number of tracks in a cone of 0.1
00460     std::vector<int>        *m_mu_nb_tracks_cone_1; // number of tracks in a cone of 0.2
00461     std::vector<int>        *m_mu_nb_tracks_cone_2; // number of tracks in a cone of 0.3
00462     std::vector<int>        *m_mu_nb_tracks_cone_3; // number of tracks in a cone of 0.4
00463     std::vector<int>        *m_mu_nb_tracks_cone_4; // number of tracks in a cone of 0.45
00464     std::vector<int>        *m_mu_nb_tracks_cone_5; // number of tracks in a cone of 0.5
00465     std::vector<int>        *m_mu_nb_tracks_cone_6; // number of tracks in a cone of 0.6
00466     std::vector<int>        *m_mu_nb_tracks_cone_7; // number of tracks in a cone of 0.7
00467     std::vector<int>        *m_mu_vertex_index;     // vertex indices
00468     std::vector<double>     *m_mu_track_Et_in_cone_0; // transverse energy of
00469                                                       // tracks from the same
00470                                                       // vertex in a cone of
00471                                                       // 0.1 around the muon
00472     std::vector<double>     *m_mu_track_Et_in_cone_1; // transverse energy of
00473                                                       // tracks from the same
00474                                                       // vertex in a cone of
00475                                                       // 0.2 around the muon
00476     std::vector<double>     *m_mu_track_Et_in_cone_2; // transverse energy of
00477                                                       // tracks from the same
00478                                                       // vertex in a cone of
00479                                                       // 0.3 around the muon
00480     std::vector<double>     *m_mu_track_Et_in_cone_3; // transverse energy of
00481                                                       // tracks from the same
00482                                                       // vertex in a cone of
00483                                                       // 0.4 around the muon
00484     std::vector<double>     *m_mu_track_Et_in_cone_4; // transverse energy of
00485                                                       // tracks from the same
00486                                                       // vertex in a cone of
00487                                                       // 0.45 around the muon
00488     std::vector<double>     *m_mu_track_Et_in_cone_5; // transverse energy of
00489                                                       // tracks from the same
00490                                                       // vertex in a cone of
00491                                                       // 0.5 around the muon
00492     std::vector<double>     *m_mu_track_Et_in_cone_6; // transverse energy of
00493                                                       // tracks from the same
00494                                                       // vertex in a cone of
00495                                                       // 0.6 around the muon
00496     std::vector<double>     *m_mu_track_Et_in_cone_7; // transverse energy of
00497                                                       // tracks from the same
00498                                                       // vertex in a cone of
00499                                                       // 0.7 around the muon
00500 
00501 
00502 
00503   // jet data // //////////////////////////////////////////////////////////////////////////////////
00504     Int_t                    m_nb_rec_jets;         // number of jets in the event
00505     std::vector<double>     *m_jet_p_x;             // px
00506     std::vector<double>     *m_jet_p_y;             // py
00507     std::vector<double>     *m_jet_p_z;             // pz
00508     std::vector<double>     *m_jet_E;               // E
00509     std::vector<std::string>        *m_jet_flag;    // jet-reconstruction flags:
00510                                                     // flag value = 0: unknown algorithm,
00511                                                     // flag_value = 1: cone-4 algorithm,
00512                                                     // flag_value = 2: cone-7 algorithm,
00513                                                     // flag_value = 3: kt algorithm
00514     std::vector<double>     *m_jet_btag_weight;     // b-tag weight
00515     std::vector<int>        *m_jet_truthflavor;     // flavor of matching truth jet
00516                                                     // flav =  5: b-jet
00517                                                     // flav =  4: c-jet
00518                                                     // flav = 15: tau
00519                                                     // flav =  0: N/A
00520                                                     // flav = -1: all others
00521     std::vector<int>        *m_jet_nb_tracks;       // number of tracks in the jet
00522     std::vector<double>     *m_jet_tracks_charge;   // charge of track
00523     std::vector<double>     *m_jet_tracks_p_x;      // px of track
00524     std::vector<double>     *m_jet_tracks_p_y;      // py of track
00525     std::vector<double>     *m_jet_tracks_p_z;      // pz of track
00526     std::vector<double>     *m_jet_tracks_E;        // E of track
00527 
00528   // taujet data // ////////////////////////////////////////////////////////////////////////////////
00529     Int_t                    m_nb_tau_jets;         // number of jets in the event
00530     std::vector<double>     *m_taujet_p_x;          // px
00531     std::vector<double>     *m_taujet_p_y;          // py
00532     std::vector<double>     *m_taujet_p_z;          // pz
00533     std::vector<double>     *m_taujet_E;            // E
00534     std::vector<int>        *m_taujet_flag;         // taujet-reconstruction flags:
00535                                                     // flag value = 0: unknown algorithm,
00536                                                     // flag_value = 1: cone-4 algorithm,
00537                                                     // flag_value = 2: cone-7 algorithm,
00538                                                     // flag_value = 3: kt algorithm
00539     // (??) i'm not sure whether the flags have the same meaning here as for the ParticleJet (??) 
00540     std::vector<double>     *m_taujet_charge;       // taujet charge
00541         
00542     //TauRec Parameters
00543     std::vector<double>     *m_taujet_emRadius;             
00544     std::vector<double>     *m_taujet_isolationFraction;    
00545     std::vector<double>     *m_taujet_centralityFraction;   
00546     std::vector<double>     *m_taujet_stripWidth2;          
00547     std::vector<double>     *m_taujet_nStripCells;          
00548     std::vector<double>     *m_taujet_etHadCalib;   // gives the calibrated HAD transverse energy,
00549                                                     // HAD is fudge*(cryo + EM3 + TILE1 + TILE2 + TILE3)
00550     std::vector<double>     *m_taujet_etEMCalib;    // gives the calibrated EM transverse energy,
00551                                                     // EM is Presampler + EM1 + EM2 
00552     std::vector<double>     *m_taujet_leadingTrackPT;  
00553     std::vector<double>     *m_taujet_trFlightPathSig;  
00554     std::vector<double>     *m_taujet_etOverPtLeadTrack;  
00555     std::vector<double>     *m_taujet_ipSigLeadTrack;  
00556     std::vector<double>     *m_taujet_etChrgHAD;  
00557     std::vector<double>     *m_taujet_etIsolEM;  
00558     std::vector<double>     *m_taujet_etIsolHAD;  
00559     std::vector<double>     *m_taujet_nAssocTracksCore;  
00560     std::vector<double>     *m_taujet_nAssocTracksIsol;  
00561     std::vector<double>     *m_taujet_massTrk3P;  
00562     std::vector<double>     *m_taujet_rWidth2Trk3P;  
00563     std::vector<double>     *m_taujet_signD0Trk3P;  
00564     std::vector<double>     *m_taujet_llh;  
00565     
00566     std::vector<double>     *m_taujet_etHadAtEMScale;
00567     std::vector<double>     *m_taujet_etEMAtEMScale;
00568     std::vector<double>     *m_taujet_etEMCL;
00569     std::vector<double>     *m_taujet_etChrgEM;
00570     std::vector<double>     *m_taujet_etNeuEM;
00571     std::vector<double>     *m_taujet_etResNeuEM;
00572     
00573     
00574     std::vector<double>     *m_taujet_discNN;  
00575     std::vector<double>     *m_taujet_discPDERS;  
00576     std::vector<double>     *m_taujet_lowPtTauJetDiscriminant;               
00577     std::vector<double>     *m_taujet_lowPtTauEleDiscriminant;               
00578     std::vector<double>     *m_taujet_tauENeuralNetwork;             
00579     std::vector<double>     *m_taujet_tauJetNeuralnetwork;           
00580     std::vector<double>     *m_taujet_bdtJet;  
00581     std::vector<double>     *m_taujet_bdtEle;  
00582     
00583     std::vector<int>    *m_taujet_nb_tracks;        // gives number of tracks from the tau decay 
00584     std::vector<double> *m_taujet_track_px_1;       // px first track
00585     std::vector<double> *m_taujet_track_py_1;       // py first track
00586     std::vector<double> *m_taujet_track_pz_1;       // pz first track
00587     std::vector<double> *m_taujet_track_e_1;        // energy first track
00588     std::vector<int>    *m_taujet_track_TRTHighThresholdHits_1; // 
00589     std::vector<int>    *m_taujet_track_TRTHits_1;        // 
00590     std::vector<double> *m_taujet_track_px_2;       // px of second tracks
00591     std::vector<double> *m_taujet_track_py_2;       // py of second tracks
00592     std::vector<double> *m_taujet_track_pz_2;       // pz of second tracks
00593     std::vector<double> *m_taujet_track_e_2;        // energy of second tracks
00594     std::vector<int>    *m_taujet_track_TRTHighThresholdHits_2; // 
00595     std::vector<int>    *m_taujet_track_TRTHits_2;        // 
00596     std::vector<double> *m_taujet_track_px_3;       // px of third track
00597     std::vector<double> *m_taujet_track_py_3;       // py of third track
00598     std::vector<double> *m_taujet_track_pz_3;       // pz of third track
00599     std::vector<double> *m_taujet_track_e_3;        // energy of third track
00600     std::vector<int>    *m_taujet_track_TRTHighThresholdHits_3; // 
00601     std::vector<int>    *m_taujet_track_TRTHits_3;        // 
00602 
00603   
00604   // truthjet data // //////////////////////////////////////////////////////////////////////////////
00605     Int_t                    m_nb_truth_jets;       // number of jets in the event
00606     std::vector<double>     *m_truthjet_p_x;        // px
00607     std::vector<double>     *m_truthjet_p_y;        // py
00608     std::vector<double>     *m_truthjet_p_z;        // pz
00609     std::vector<double>     *m_truthjet_E;          // E
00610     std::vector<int>        *m_truthjet_flag;       // jet-reconstruction flags:
00611                                                     // flag value = 0: unknown algorithm,
00612                                                     // flag_value = 1: cone-4 algorithm,
00613                                                     // flag_value = 2: cone-7 algorithm,
00614                                                     // flag_value = 3: kt algorithm
00615     std::vector<double>     *m_truthjet_btag_weight;// b-tag weight
00616 
00617 
00618     
00619   // missingEt data // /////////////////////////////////////////////////////////////////////////////
00620     std::vector<std::string>    *m_met_obj_name;          // MET Object name
00621     std::vector<double>         *m_missing_Etx;           // MET x component
00622     std::vector<double>         *m_missing_Ety;           // MET y component
00623     std::vector<double>         *m_missing_Et;            // MET
00624     std::vector<double>         *m_missing_Etsum;         // linear (Etsum) sum of Etx, Ety
00625     
00626 
00627   // truth data // /////////////////////////////////////////////////////////////////////////////////
00628     Int_t                    m_nb_truth_particle_all;
00629     Int_t                    m_nb_truth_particle;
00630     std::vector<double>     *m_truth_particle_pt;
00631     std::vector<int>        *m_truth_particle_status;
00632     std::vector<int>        *m_truth_particle_barcode;
00633     std::vector<int>        *m_truth_particle_pdgId;
00634     std::vector<int>        *m_truth_particle_nDaughters;
00635     std::vector<double>     *m_truth_particle_p_x;
00636     std::vector<double>     *m_truth_particle_p_y;
00637     std::vector<double>     *m_truth_particle_p_z;
00638     std::vector<double>     *m_truth_particle_E;
00639     std::vector<double>     *m_truth_particle_charge;
00640     std::vector<int>        *m_truth_particle_nParents;
00641     std::vector<int>        *m_truth_particle_mother0_barcode;
00642     std::vector<int>        *m_truth_particle_mother0_pdgId;
00643 
00644 
00645   // vertex data // ////////////////////////////////////////////////////////////
00646     Int_t                m_nb_vertices;         // number of primary vertices
00647     std::vector<double> *m_vertex_position_x;   // global x of vertices
00648     std::vector<double> *m_vertex_position_y;   // global y of vertices
00649     std::vector<double> *m_vertex_position_z;   // global z of vertices
00650     std::vector<double> *m_vertex_pos_error_x;  // errors of global x of vertices
00651     std::vector<double> *m_vertex_pos_error_y;  // errors of global y of vertices
00652     std::vector<double> *m_vertex_pos_error_z;  // errors of global z of vertices
00653     std::vector<double> *m_vertex_chi2;         // chi^2 of vertex fits
00654     std::vector<int>    *m_vertex_ndof;         // number of degrees of freedom
00655     std::vector<double> *m_vertex_Et;           // transverse momentum of the vertex
00656     std::vector<int>    *m_vertex_nb_tracks;    // number of tracks emerging
00657                                                 // from the vertices
00658 
00659   // truth vertex data // //////////////////////////////////////////////////////
00660     Int_t                m_nb_truth_vertices;       // number of primary vertices
00661     std::vector<double> *m_truth_vertex_position_x; // global x of vertices
00662     std::vector<double> *m_truth_vertex_position_y; // global y of vertices
00663     std::vector<double> *m_truth_vertex_position_z; // global z of vertices
00664     std::vector<double> *m_truth_vertex_Et;         // transverse momentum of the vertex
00665     std::vector<int>    *m_truth_vertex_nb_tracks;  // number of tracks emerging
00666                                                     // from the vertices    
00667 
00668   // track-jet data // /////////////////////////////////////////////////////////////////////////////
00669     Int_t                    m_nb_track_jets;       // number of track-jets in
00670                                                     // the event
00671     std::vector<double>     *m_track_jet_p_x;       // track-jet px
00672     std::vector<double>     *m_track_jet_p_y;       // track-jet py
00673     std::vector<double>     *m_track_jet_p_z;       // track-jet pz
00674     std::vector<double>     *m_track_jet_E;         // track-jet energy
00675 
00676   // truth track-jet data // ///////////////////////////////////////////////////////////////////////
00677     Int_t                    m_nb_truth_track_jets; // number of truth 
00678                                                     // track-jets in the event
00679     std::vector<double>     *m_truth_track_jet_p_x; // track-jet px
00680     std::vector<double>     *m_truth_track_jet_p_y; // track-jet py
00681     std::vector<double>     *m_truth_track_jet_p_z; // track-jet pz
00682     std::vector<double>     *m_truth_track_jet_E;   // track-jet energy
00683     
00684         
00685     // event weight for mc@nlo 
00686     Double_t                         m_event_weight;
00687         
00688         
00689   // private routines //
00690     bool get_trigger_data(void); // method to fill the data of
00691                                  // the tigger (L1,L2,EF) into the AAN;
00692                                  // returns true in case of success
00693     bool get_trigger_muon_lvl1_data(void);// method to fill the data of
00694                                           // the lvl1 trigger into the AAN;
00695                                           // returns true in case of success
00696     bool get_trigger_muon_lvl2_data(void);// method to fill the data of
00697                                           // the LVL2 (CombinedMuonFeature) 
00698                                           // trigger into the AAN;
00699                                           // returns true in case of success
00700     bool get_trigger_muon_ef_data(void);  // method to fill the data of
00701                                           // the muon EF trigger 
00702                                           // into the AAN;
00703                                           // returns true in case of success
00704     bool get_trigger_met_data(void); // method to fill the data of
00705                                      // the met trigger into the AAN;
00706                                      // returns true in case of success
00707     bool get_photon_data(void); // method to fill the data of
00708                                 // reconstructed photons into the AAN;
00709                                 // returns true in case of success
00710     bool get_trackparticle_data(void); // method to fill the data of
00711                                      // the track particles into the AAN;
00712                                      // returns true in case of success
00713 
00714     bool get_electron_data(void); // method to fill the data of
00715                                   // reconstructed electrons into the AAN;
00716                                   // returns true in case of success
00717     bool get_muon_data(void); // method to fill the data of reconstructed
00718                               // muons into the AAN;
00719                               // returns true in case of success
00720     bool get_jet_data(void); // method to fill the data of reconstructed
00721                              // jets into the AAN;
00722                              // returns true in case of success
00723     bool get_taujet_data(void); // method to fill the data of reconstructed
00724                                 // tau jets into the AAN;
00725                                 // returns true in case of success
00726     bool get_truthjet_data(void); // method to fill the data of truth
00727                                   // jets into the AAN;
00728                                   // returns true in case of success
00729     bool get_missingEt_data(void); // method to fill the data of
00730                                    // missing Et into the AAN;
00731                                    // returns true in case of success
00732     bool get_truthmissingEt_data(void); // method to fill the data of
00733                                         // truth missing Et into the AAN;
00734                                         // returns true in case of success
00735     bool get_truthparticle_data(void); // method to fill the data of
00736                                        // truth particles into the AAN;
00737                                        // returns true in case of success
00738     void fill_truthparticle_data(const TruthParticle *m_TruthParticle); 
00739                                    // method to fill the data of
00740                                    // truth particles into the AAN;
00741                                    // returns true in case of success
00742  
00743     bool get_eventweight_data(void);  // method to fill event weight data
00744 
00745     bool get_vertex_data(void); // get the primary vertices; returns true in
00746                                 // case of success
00747     bool get_truth_vertex_data(void); // get the truth vertices;
00748                                       // returns true in case of success
00749     
00750     bool get_track_jet_data(void); // method to fill the data of reconstructed
00751                                    // track jets into the AAN;
00752                                    // returns true in case of success
00753     bool get_truth_track_jet_data(void); // method to fill the data of truth
00754                                          // track jets into the AAN;
00755 
00756     unsigned int find_vertex(const Trk::RecVertex * vertex) const;
00757                                     // get the index of the vertex
00758     double get_energy_in_cone(const double & cone,
00759     const HepLorentzVector & p,
00760     const Hep3Vector & vertex);
00761                   // get the energy of particle emerging
00762                   // from the vertex "vertex" in a cone
00763                   // of "cone" in delta R of p
00764 
00765 
00766 
00767 };
00768 
00769 #endif

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