Fork me on GitHub

Changeset 250 in svn


Ignore:
Timestamp:
Feb 7, 2009, 1:43:05 PM (16 years ago)
Author:
severine ovyn
Message:

add isolation and b-tag

Location:
trunk
Files:
2 added
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/interface/TriggerUtil.h

    r243 r250  
    1616
    1717#include "BlockClasses.h"
     18#include "Utilities/ExRootAnalysis/interface/TSimpleArray.h"
    1819#include "Utilities/ExRootAnalysis/interface/ExRootTreeBranch.h"
    1920
     
    2425 public:
    2526
    26   TriggerBit();
     27  TriggerBit(){};
    2728  TriggerBit(const TriggerBit& tb);
    2829  TriggerBit& operator=(const TriggerBit& tb);
     
    3536      TClonesArray *branchPhotonTrig,  TClonesArray *branchETmisTrig);
    3637  vector<float> GetCuts(const vector<string> &Sequences);
     38  TSimpleArray<TRootJet> SubArrayBjets(TClonesArray *JET);
     39  TSimpleArray<TRootElectron> SubArrayIElec(TClonesArray *ELEC);
     40  TSimpleArray<TRootMuon> SubArrayIMuon(TClonesArray *MUON);
    3741
    3842 private:
    3943 
    4044  vector<float> ElecValues;
     45  vector<float> IElecValues;
    4146  vector<float> MuonValues;
     47  vector<float> IMuonValues;
    4248  vector<float> JetValues;
     49  vector<float> BjetValues;
    4350  vector<float> TauJetValues;
    4451  vector<float> EtmisValues;
     
    5865
    5966  void TriggerCardReader(const string& filename="data/trigger.dat");
    60   // avant, ça s'appellait TriggerReader
    61   // appelle la méthode TriggerBit::GetTrigCondition
    62 
    63  
    6467  void PrintTriggerTable(const string& LogName);
    65   // fait un cout des triggers bits, c'est toujours pratique
    66   // appelle la méthode TriggerBit::PriniTrigCondition
    67  
    6868  bool GetGlobalResult(TClonesArray *branchElecTrig, TClonesArray *branchMuonTrig,
    6969      TClonesArray *branchJetTrig, TClonesArray *branchTauJetTrig,
     
    7171
    7272  void WriteResult();
    73     // sauve dans le TTree
    74     // ce nom est stupide, faut le changer
    7573   
    7674 private:
    77   //bool Evaluate( int event_i );
    78   // boucle sur list_of_trigger_bits, comme on a dit
    79   // appelle la methode TriggerBit::Evaluate ou TriggerBit::GetResult (à voir)
    80   // renvoie la réponse globale du trigger
    81   // à la fin, mettre has_been_evaluated = true;
    82   // voir le NB ci-dessous
    8375 
    8476  vector<TriggerBit> list_of_trigger_bits;
    8577  bool has_been_evaluated;
    8678  bool GlobalResult;
    87   int event_i;
    8879
    8980};
  • trunk/src/TriggerUtil.cc

    r243 r250  
    2727TriggerTable& TriggerTable::operator=(TriggerTable&tt) {
    2828  if (this == &tt) return *this;
    29   event_i = tt.event_i;
    3029  has_been_evaluated = tt.has_been_evaluated;
    3130  GlobalResult = tt.GlobalResult;
     
    3635
    3736TriggerTable::TriggerTable(const TriggerTable& tt) {
    38   event_i = tt.event_i;
    3937  has_been_evaluated = tt.has_been_evaluated;
    4038  GlobalResult = tt.GlobalResult;
     
    4745   ifstream trigger_file(filename.c_str());
    4846   if( !trigger_file.good() ) {
    49         cout << "ERROR: Trigger input file "<< filename << " not found. Exiting.\n";
     47       cerr << left  << setw(30) <<"** ERROR: Trigger input file "<<""
     48          << right << setw(15) <<filename<<""
     49          << right << setw(24)  <<"not found. Exiting... **"<<endl;
    5050        return;
    5151   }
     
    111111
    112112//*************************************************************************
    113 TriggerBit::TriggerBit() {
    114 }
    115113
    116114TriggerBit::~TriggerBit() {
    117115        ElecValues.clear();
     116        IElecValues.clear();
    118117        MuonValues.clear();
     118        IMuonValues.clear();
    119119        JetValues.clear();
     120        BjetValues.clear();
    120121        TauJetValues.clear();
    121122        EtmisValues.clear();
     
    127128        ElecValues.push_back(tb.ElecValues[i]);
    128129
     130  for(unsigned int i=0; i<tb.IElecValues.size(); i++)
     131        IElecValues.push_back(tb.IElecValues[i]);
     132
     133
    129134  for(unsigned int i=0; i<tb.MuonValues.size(); i++)
    130135        MuonValues.push_back(tb.MuonValues[i]);
    131136
     137  for(unsigned int i=0; i<tb.IMuonValues.size(); i++)
     138        IMuonValues.push_back(tb.IMuonValues[i]);
     139
    132140  for(unsigned int i=0; i<tb.JetValues.size(); i++)
    133141        JetValues.push_back(tb.JetValues[i]);
     142
     143  for(unsigned int i=0; i<tb.BjetValues.size(); i++)
     144        BjetValues.push_back(tb.BjetValues[i]);
     145
    134146
    135147  for(unsigned int i=0; i<tb.TauJetValues.size(); i++)
     
    150162        ElecValues.push_back(tb.ElecValues[i]);
    151163
     164  for(unsigned int i=0; i<tb.IElecValues.size(); i++)
     165        IElecValues.push_back(tb.IElecValues[i]);
     166
    152167  for(unsigned int i=0; i<tb.MuonValues.size(); i++)
    153168        MuonValues.push_back(tb.MuonValues[i]);
    154169
     170  for(unsigned int i=0; i<tb.IMuonValues.size(); i++)
     171        IMuonValues.push_back(tb.IMuonValues[i]);
     172
    155173  for(unsigned int i=0; i<tb.JetValues.size(); i++)
    156174        JetValues.push_back(tb.JetValues[i]);
     175
     176  for(unsigned int i=0; i<tb.BjetValues.size(); i++)
     177        BjetValues.push_back(tb.BjetValues[i]);
    157178
    158179  for(unsigned int i=0; i<tb.TauJetValues.size(); i++)
     
    175196      TClonesArray *branchPhotonTrig,  TClonesArray *branchETmisTrig)
    176197{
     198
     199  TSimpleArray<TRootJet> bjets=SubArrayBjets(branchJetTrig);
     200  TSimpleArray<TRootElectron> Ielectron=SubArrayIElec(branchElecTrig);
     201  TSimpleArray<TRootMuon> Imuon=SubArrayIMuon(branchMuonTrig);
     202 
    177203  int elec_size = ElecValues.size();
     204  int Ielec_size = IElecValues.size();
    178205  int muon_size = MuonValues.size();
     206  int Imuon_size = IMuonValues.size();
    179207  int jet_size = JetValues.size();
     208  int bjet_size = BjetValues.size();
    180209  int taujet_size = TauJetValues.size();
    181210  int gamma_size = GammaValues.size();
     
    185214  if(
    186215     (branchElecTrig->GetEntries() >= elec_size )
     216      && (Ielectron.GetEntries() >= Ielec_size )
    187217      && (branchMuonTrig->GetEntries() >= muon_size )
     218      && (Imuon.GetEntries() >= Imuon_size )
    188219      && (branchJetTrig->GetEntries() >= jet_size )
     220      && (bjets.GetEntries() >= bjet_size )
    189221      && (branchTauJetTrig->GetEntries() >= taujet_size )
    190222      && (branchPhotonTrig->GetEntries() >= gamma_size )
     
    198230           if(electron->PT < ElecValues[i])Result=false;}}
    199231
     232      if(Ielec_size!=0)
     233        {
     234         TRootElectron *i_elec; Ielectron.Reset();
     235         int i=0;
     236         while((i_elec = Ielectron.Next()))
     237              {
     238                if(i_elec->PT < IElecValues[i])Result=false;
     239                i++;
     240              }
     241        }
     242
     243
    200244      if(muon_size!=0){
    201245        TRootMuon *muon;
     
    204248           if(muon->PT < MuonValues[i])Result=false;}}
    205249
     250      if(Imuon_size!=0)
     251        {
     252         TRootMuon *i_muon; Imuon.Reset();
     253         int i=0;
     254         while((i_muon = Imuon.Next()))
     255              {
     256                if(i_muon->PT < IMuonValues[i])Result=false;
     257                i++;
     258              }
     259        }
     260
    206261      if(jet_size!=0){
    207262        TRootJet *jet;
     
    209264           jet = (TRootJet*)branchJetTrig->At(i);
    210265           if(jet->PT < JetValues[i])Result=false;}}
     266
     267      if(jet_size!=0){
     268        TRootJet *jet;
     269        for(int i=0;i<jet_size;i++){
     270           jet = (TRootJet*)branchJetTrig->At(i);
     271           if(jet->PT < JetValues[i])Result=false;}}
     272
     273      if(bjet_size!=0)
     274        {
     275         TRootJet *i_bjets; bjets.Reset();
     276         int i=0;
     277         while((i_bjets = bjets.Next()))
     278              {
     279                if(i_bjets->PT < BjetValues[i])Result=false;
     280                i++;
     281              }
     282        }
     283
    211284
    212285      if(taujet_size!=0){
     
    234307
    235308  vector<string> ElecSequences;
     309  vector<string> IElecSequences;
    236310  vector<string> MuonSequences;
     311  vector<string> IMuonSequences;
    237312  vector<string> JetSequences;
    238313  vector<string> TauJetSequences;
    239314  vector<string> EtmisSequences;
    240315  vector<string> GammaSequences;
    241 
    242   char *result = NULL;
     316  vector<string> BjetSequences;
     317
     318///  char *result =NULL;
     319  char * result = new char[256];
    243320  result = strtok( (char*) trigger_algorithm.c_str(),"&");
    244321  while( result != NULL )
    245322     {
    246323       if(strstr (result,"ELEC"))ElecSequences.push_back(result);
     324       if(strstr (result,"IElec"))IElecSequences.push_back(result);
    247325       if(strstr (result,"MUON"))MuonSequences.push_back(result);
     326       if(strstr (result,"IMuon"))IMuonSequences.push_back(result);
    248327       if(strstr (result,"JET"))JetSequences.push_back(result);
    249        if(strstr (result,"TAUJET"))TauJetSequences.push_back(result);
     328       if(strstr (result,"TAU"))TauJetSequences.push_back(result);
    250329       if(strstr (result,"ETMIS"))EtmisSequences.push_back(result);
    251330       if(strstr (result,"GAMMA"))GammaSequences.push_back(result);
     331       if(strstr (result,"Bjet"))BjetSequences.push_back(result);
    252332       result = strtok( NULL,"&");
    253333     }
     334  delete result;
    254335
    255336  ElecValues = GetCuts(ElecSequences);
     337  IElecValues = GetCuts(IElecSequences);
    256338  MuonValues = GetCuts(MuonSequences);
     339  IMuonValues = GetCuts(IMuonSequences);
    257340  JetValues = GetCuts(JetSequences);
    258341  TauJetValues = GetCuts(TauJetSequences);
    259342  EtmisValues = GetCuts(EtmisSequences);
    260343  GammaValues = GetCuts(GammaSequences);
    261 
    262 }
    263 
     344  BjetValues = GetCuts(BjetSequences);
     345
     346}
    264347
    265348void TriggerBit::PrintTrigCondition(const string& LogName,const int i)
    266349{
    267350  int elec_size = TriggerBit::ElecValues.size();
     351  int Ielec_size = TriggerBit::IElecValues.size();
    268352  int muon_size = TriggerBit::MuonValues.size();
     353  int Imuon_size = TriggerBit::IMuonValues.size();
    269354  int jet_size = TriggerBit::JetValues.size();
    270355  int taujet_size = TriggerBit::TauJetValues.size();
    271356  int gamma_size = TriggerBit::GammaValues.size();
    272357  int etmis_size = TriggerBit::EtmisValues.size();
     358  int bjets_size = TriggerBit::BjetValues.size();
    273359 
    274360  ofstream f_out(LogName.c_str(),ios::app);
     
    279365  f_out <<"#*************************"<<"\n";
    280366  f_out << left << setw(45) <<"*   # Number of reconstructed objects required:"<<""<<right << setw(23)<<"*"<<"\n";
    281   f_out << left << setw(1) <<"*"
    282         << internal << setw(10) << "Electron"<< ""<< internal << setw(10) << "Muon"    << ""
    283         << internal << setw(10) << "Jets"    << ""<< internal << setw(10) << "Tau-jets "<< ""
    284         << internal << setw(10) << "Photons" << ""<< internal << setw(10) << "ETmis "<< ""<< right    << setw(9)  <<"*"<<"\n";
    285   f_out << left << setw(1) <<"*"
    286         << internal << setw(10) << elec_size << ""<< internal << setw(10) << muon_size << ""
    287         << internal << setw(10) << jet_size  << ""<< internal << setw(10) << taujet_size << ""
    288         << internal << setw(10) << gamma_size<< ""<< internal << setw(10) << etmis_size << ""<< right << setw(9)<<"*"<<"\n";
    289   f_out << left << setw(45) <<"*   # Values of the related thresholds: "<<""<<right << setw(25)<<"*"<<"\n";
     367 
    290368  if(elec_size!=0){
    291   f_out << left << setw(20) <<"*    - Electrons: "<<"";
     369  f_out << left << setw(5) <<"**  -"<<""<< left << setw(2) << elec_size <<""<< left << setw(20)<<"Electron(s) with p_T: "<<"";
    292370  for(int i=0;i<elec_size;i++){f_out << left << setw(5) << TriggerBit::ElecValues[i]<<"";}f_out <<"\n";}
    293371
     372  if(Ielec_size!=0){
     373  f_out << left << setw(5) <<"**  -"<<""<< left << setw(2) << Ielec_size <<""<< left << setw(20)<<"Isolated electron(s) with p_T: "<<"";
     374  for(int i=0;i<Ielec_size;i++){f_out << left << setw(5) << TriggerBit::IElecValues[i]<<"";}f_out <<"\n";}
     375
    294376  if(muon_size!=0){
    295   f_out << left << setw(20) <<"*    - Muons: "<<"";
     377  f_out << left << setw(5) <<"**  -"<<""<< left << setw(2) << muon_size <<""<< left << setw(20)<<"Muon(s) with p_T: "<<"";
    296378  for(int i=0;i<muon_size;i++){f_out << left << setw(5) << TriggerBit::MuonValues[i]<<"";}f_out <<"\n";}
    297379
     380  if(Imuon_size!=0){
     381  f_out << left << setw(5) <<"**  -"<<""<< left << setw(2) << Imuon_size <<""<< left << setw(20)<<"Isolated muon(s) with p_T: "<<"";
     382  for(int i=0;i<Imuon_size;i++){f_out << left << setw(5) << TriggerBit::IMuonValues[i]<<"";}f_out <<"\n";}
     383
    298384  if(jet_size!=0){
    299   f_out << left << setw(20) <<"*    - Jets: "<<"";
     385  f_out << left << setw(5) <<"**  -"<<""<< left << setw(2) << jet_size <<""<< left << setw(20)<<"Jet(s) with p_T: "<<"";
    300386  for(int i=0;i<jet_size;i++){f_out << left << setw(5) << TriggerBit::JetValues[i]<<"";}f_out <<"\n";}
    301387
    302388  if(taujet_size!=0){
    303   f_out << left << setw(20) <<"*    - Tau-jets: "<<"";
     389  f_out << left << setw(5) <<"**  -"<<""<< left << setw(2) << taujet_size <<""<< left << setw(20)<<"Tau-jet(s) with p_T: "<<"";
    304390  for(int i=0;i<taujet_size;i++){f_out << left << setw(5) << TriggerBit::TauJetValues[i]<<"";}f_out <<"\n";}
    305  
     391
     392  if(bjets_size!=0){
     393  f_out << left << setw(5) <<"**  -"<<""<< left << setw(2) << bjets_size <<""<< left << setw(20)<<"B-jet(s) with p_T: "<<"";
     394  for(int i=0;i<bjets_size;i++){f_out << left << setw(5) << TriggerBit::BjetValues[i]<<"";}f_out <<"\n";}
     395
    306396  if(gamma_size!=0){
    307   f_out << left << setw(20) <<"*    - Photons: "<<"";
     397  f_out << left << setw(5) <<"**  -"<<""<< left << setw(2) << gamma_size <<""<< left << setw(20)<<"Photon(s) with p_T: "<<"";
    308398  for(int i=0;i<gamma_size;i++){f_out << left << setw(5) << TriggerBit::GammaValues[i]<<"";}f_out <<"\n";}
    309399 
    310400  if(etmis_size!=0){
    311   f_out << left << setw(20) <<"*    - ETMIS: "<<"";
     401  f_out << left << setw(5) <<"**  -"<<""<< left << setw(20)<<"Transverse missing energy with p_T: "<<"";
    312402  for(int i=0;i<etmis_size;i++){f_out << left << setw(5) << TriggerBit::EtmisValues[i]<<"";}f_out <<"\n";}
    313403  f_out <<"*                                                                    *"<<"\n";
     
    328418   }
    329419  return OrderedValue;
    330 
    331 }
    332 
    333 
     420}
     421
     422TSimpleArray<TRootJet> TriggerBit::SubArrayBjets(TClonesArray *JET)
     423{
     424   TIter itJet((TCollection*)JET);
     425   TRootJet *jet;
     426   itJet.Reset();
     427   TSimpleArray<TRootJet> array;
     428   while( (jet = (TRootJet*) itJet.Next()) )
     429     {
     430        if(jet->Btag==1)array.Add(jet);
     431     }
     432   return array;
     433}
     434
     435TSimpleArray<TRootElectron> TriggerBit::SubArrayIElec(TClonesArray *ELEC)
     436{
     437   TIter itElec((TCollection*)ELEC);
     438   TRootElectron *electron;
     439   itElec.Reset();
     440   TSimpleArray<TRootElectron> array;
     441   while( (electron = (TRootElectron*) itElec.Next()) )
     442     {
     443        if(electron->IsolFlag==1)array.Add(electron);
     444     }
     445   return array;
     446}
     447
     448TSimpleArray<TRootMuon> TriggerBit::SubArrayIMuon(TClonesArray *MUON)
     449{
     450   TIter itMuon((TCollection*)MUON);
     451   TRootMuon *muon;
     452   itMuon.Reset();
     453   TSimpleArray<TRootMuon> array;
     454   while( (muon = (TRootMuon*) itMuon.Next()) )
     455     {
     456        if(muon->IsolFlag==1)array.Add(muon);
     457     }
     458   return array;
     459}
     460
     461
Note: See TracChangeset for help on using the changeset viewer.