Main Page   Namespace List   Class Hierarchy   Compound List   File List   Compound Members   File Members  

EtMissTest.cpp

Go to the documentation of this file.
00001 #include <Utilities/Configuration/interface/Architecture.h>
00002 
00003 #include "CARF/G3Event/interface/G3EventProxy.h"
00004 #include "Utilities/Notification/interface/Observer.h"
00005 
00006 // Calorimetry stuff
00007 #include "Calorimetry/CaloRecHit/interface/CaloRecHit.h"
00008 #include "Calorimetry/EcalPlusHcalTower/interface/EcalPlusHcalTower.h"
00009 #include "Calorimetry/EcalPlusHcalTower/src/EcalPlusHcalTowerBuilder.h"
00010 #include "Calorimetry/CaloCommon/interface/CaloItr.h"
00011 #include "Calorimetry/CaloDetector/interface/CellID.h"
00012 
00013 // reconstructor stuff
00014 #include "CARF/Reco/interface/RecItr.h"
00015 #include "CARF/Reco/interface/Reconstructor.h"
00016 
00017 #include "Utilities/Notification/interface/PackageInitializer.h"
00018 #include <Utilities/UI/interface/SimpleConfigurable.h> 
00019 
00020 #include "CLHEP/Geometry/Point3D.h"
00021 #include "CLHEP/Units/PhysicalConstants.h"
00022 
00023 //JetMet stuff
00024 #include "JetMetAnalysis/MetObjects/interface/CaloEtaSliceMet.h"
00025 #include "JetMetAnalysis/MetObjects/interface/L1CaloMet.h"
00026 #include "JetMetAnalysis/MetObjects/interface/ConcreteMet.h"
00027 
00028 #include "JetMetAnalysis/MetBuilders/interface/JetMetSetup.h"
00029 
00030 #include "JetMetAnalysis/JetMetParticles/interface/JetMetParticleSetup.h"
00031 
00032 
00033 
00034 // EtMiss class
00035 #include <XANADOO/XANAEtMiss/interface/XANAEtMiss.h>
00036 
00037 #include <iostream>
00038 #include<string>
00039 
00040 class MySetup{
00049 public:
00050   MySetup();
00051   ~MySetup();
00052 private:
00053   JetMetSetup * setup;
00054   double dummy;
00055 };
00056 
00057 MySetup::MySetup()
00058 {
00059   cout<<"***********My setUp**********************";
00060   setup = new JetMetSetup;
00061 }
00062 
00063 MySetup::~MySetup()
00064 {
00065   delete setup;
00066 }
00067 
00068 class EtMissTest : private Observer<G3EventProxy *>
00069 {
00070 public:
00071   EtMissTest();
00072   ~EtMissTest(){ cout<<"End of EtMissTest"<<endl;delete _mysetup;}
00073   void FillingTest(G3EventProxy *ev);  
00074 private:
00075   void upDate(G3EventProxy *ev){if (ev!=0) FillingTest(ev);}
00076   void FillEtMiss(G3EventProxy *ev, EtMiss *a);
00077   void Print(EtMiss a);
00078   void PrintEvInfo(G3EventProxy *ev);
00079   SimpleConfigurable<string> _Scheme;
00080   string CheckSchemeName();
00081   MySetup * _mysetup;
00082 };
00083 
00084 EtMissTest::EtMissTest()
00085 {    
00086   Observer<G3EventProxy *>::init() ;
00087   _Scheme=SimpleConfigurable<string>("default","EtMissScheme");
00088   _mysetup = new MySetup;
00089 }
00090 
00091 void EtMissTest::FillingTest(G3EventProxy *ev)
00092 {
00093   PrintEvInfo(ev);
00094   EtMiss* myMet = new EtMiss(CheckSchemeName());
00095   FillEtMiss (ev,myMet);
00096   Print(*myMet);
00097   delete myMet;
00098 }
00099 
00100 void EtMissTest::PrintEvInfo(G3EventProxy *ev)
00101 {
00102   static int nEvRead=0;
00103   cout <<"======================================================================= " << endl;
00104   cout << " ======> Reading " << ++nEvRead << " Event" << endl; 
00105 
00106   cout <<" pythia run " << ev->simSignal()->originalId().runNumber()
00107        <<" pythia ev  " << ev->simSignal()->originalId().eventInRun() << endl;
00108 
00109   cout << " oohit Run Number " << ev->simSignal()->id().runNumber()
00110        << " event number "     << ev->simSignal()->id().eventInRun() << endl;
00111 
00112   cout <<" digi run = "     << ev->pEvent()->id().runNumber()
00113        <<" event number = " << ev->pEvent()->id().eventInRun() << endl;
00114 
00115   cout <<"***************************************************************** " << endl;
00116 
00117 }
00118 
00119 void EtMissTest::Print(EtMiss a)
00120 {
00121   cout<<"===========  scheme : "<<a.WhichScheme()<<endl;
00122   cout<<"*************EtMiss*************************** \n";
00123   cout<<" "<<a.getEMissX()<<"  "<<a.getEMissY()<<"  "<<a.getEtMiss()<<endl;
00124   
00125   cout<<"\n ********* ECAL ******************"<<endl;
00126   for (int i=0;i<5;i++){cout<<a.getEECal(i)<<" ";}
00127   cout<<endl;
00128   for (int i=0;i<5;i++){cout<<a.getEScalarECal(i)<<" ";}
00129 
00130   cout<<"\n ********* HCAL ******************"<<endl;
00131   for (int i=0;i<5;i++){cout<<a.getEHCal(i)<<" ";}
00132   cout<<endl;
00133   for (int i=0;i<5;i++){cout<<a.getEScalarHCal(i)<<" ";}
00134 
00135   cout<<"\n ********* Total ******************"<<endl;
00136   for (int i=0;i<5;i++){cout<<a.getE(i)<<" ";}
00137   cout<<endl;
00138   for (int i=0;i<5;i++){cout<<a.getEScalar(i)<<" ";}
00139 
00140   cout<<"\n ********* MC ******************"<<endl;
00141   for (int i=0;i<5;i++){cout<<a.getETrue(i)<<" ";}
00142   cout<<endl<<endl;
00143 
00144 }
00145 
00146   void EtMissTest::FillEtMiss(G3EventProxy *ev, EtMiss* a)
00147 {
00148 
00149   string scheme = CheckSchemeName();
00150     if(scheme != "default")
00151     {
00152       RecItr<ConcreteMet> gMet(ev->recEvent(),scheme.c_str());
00153       cout<<"AAA    ConcreteMet    AAAA"<<endl;
00154       while (gMet.next())
00155         {
00156           cout<<*gMet<<endl;
00157           a->SetEtMiss(gMet->getMissingEx(),gMet->getMissingEy());
00158         }
00159       
00160     }
00161   
00162   // Now it dela with ECAL and HCAL always looking at cell  
00164   // "vectorial"
00165 
00166   JetMetParticleSetup  * jps = Singleton<JetMetParticleSetup>::instance();
00167   double towerEtThreshold = jps->getEcalPlusHcalTowerEtCut();
00168   cout<<"AAA towerEtThreshold: "<<towerEtThreshold<<endl;
00169   double EEcal[3] = {0,0,0};
00170   double EHcal[3] = {0,0,0};
00171   double ETot[3]  = {0,0,0};
00172   //Scalar
00173   double EScEcal[5] = {0,0,0,0,0};
00174   double EScHcal[5] = {0,0,0,0,0};
00175   double EScTot[5]  = {0,0,0,0,0};
00176 
00177   RecItr<EcalPlusHcalTower> aTower(ev->recEvent());
00178   while(aTower.next())
00179     {
00180       HepPoint3D position = aTower->Position();
00181       double theta = position.theta();
00182       double phi   = position.phi();
00183       double EnEcal = aTower->EnergyEcalTower();
00184       double EnHcal = aTower->EnergyHcalTower();
00185       if(aTower->Energy()*sin(theta) > towerEtThreshold)
00186         {
00187           double Ex_E=EnEcal*sin(theta)*cos(phi);
00188           double Ey_E=EnEcal*sin(theta)*sin(phi);
00189           double Ez_E=EnEcal*cos(theta);
00190           double Ex_H=EnHcal*sin(theta)*cos(phi);
00191           double Ey_H=EnHcal*sin(theta)*sin(phi);
00192           double Ez_H=EnHcal*cos(theta);
00193 
00194           EEcal[0] += Ex_E;
00195           EEcal[1] += Ey_E;
00196           EEcal[2] += Ez_E;
00197 
00198           EHcal[0] += Ex_H;
00199           EHcal[1] += Ey_H;
00200           EHcal[2] += Ez_H;
00201 
00202 
00203           EScEcal[0] += fabs(Ex_E);
00204           EScEcal[1] += fabs(Ey_E);
00205           EScEcal[2] += fabs(Ez_E);
00206           EScEcal[3] += sqrt(Ex_E*Ex_E+Ey_E*Ey_E);
00207           EScEcal[4] += sqrt(Ex_E*Ex_E+Ey_E*Ey_E+Ez_E*Ez_E);
00208 
00209           EScHcal[0] += fabs(Ex_H);
00210           EScHcal[1] += fabs(Ey_H);
00211           EScHcal[2] += fabs(Ez_H);
00212           EScHcal[3] += sqrt(Ex_H*Ex_H+Ey_H*Ey_H);
00213           EScHcal[4] += sqrt(Ex_H*Ex_H+Ey_H*Ey_H+Ez_H*Ez_H);
00214 
00215         }
00216     }
00217 
00218   for (int i=0;i<3;i++)
00219     {
00220       ETot[i]=EEcal[i]+EHcal[i];
00221     }
00222   
00223   a->SetEECal(EEcal[0],EEcal[1],EEcal[2]);
00224   a->SetEHCal(EHcal[0],EHcal[1],EHcal[2]);
00225   
00226   a->SetEScalECal(EScEcal[0],EScEcal[1],EScEcal[2],EScEcal[3],EScEcal[4]);
00227   a->SetEScalHCal(EScHcal[0],EScHcal[1],EScHcal[2],EScHcal[3],EScHcal[4]);
00228   a->SetETotal(ETot[0],ETot[1],ETot[2]);
00229   if(scheme == "default") a->SetEtMiss(-1*ETot[0],-1*ETot[1]);
00230   // what EScalTotal would mean is not yet clear to me 
00231   a->SetEScalTotal(0.9,0.4,0.3,11,12);
00232 
00233 }
00234 
00235 string EtMissTest::CheckSchemeName()
00236 {
00240  
00241   if(_Scheme.value()=="pippo") return _Scheme.value();
00242   if(_Scheme.value()=="pappo") return _Scheme.value();
00243   if(_Scheme.value()=="MetGenCalo") return _Scheme.value();
00244   if(_Scheme.value()=="MetCaloTower") return _Scheme.value();
00245   //list here all existing scheme
00246  
00247   return "default";
00248   
00249 }
00250 static PKBuilder<EtMissTest> pippo("EtMissTest") ;

Generated on Tue May 10 10:01:24 2005 for XANADOO by doxygen1.2.14 written by Dimitri van Heesch, © 1997-2002