#include "Diboson/ana/MIPPeakStudy.hh" #include "Diboson/base/TDbnMuon.hh" using namespace std; ClassImp(MIPPeakStudy) //---------------------------------------------------------------------- ----- // Constants //---------------------------------------------------------------------- ----- const int MIPPeakStudy::n_periods; //---------------------------------------------------------------------- ------- // Constructors and Destructor //---------------------------------------------------------------------- ------- MIPPeakStudy::MIPPeakStudy(): TStnModule("MIPPeakStudy","MIPPeakStudy"), fMuonBlock (0), _nRun (0), _nEvent (0) { // Histograms for (int i = 0 ; i < n_periods; i++) { h_EH_All[i][k_CMUP ]= new TH1D((TString("h_EH_All_p")+Long_t(i)+"CMUP" ).Data(),"; Hadron Calorimeter Energy [GeV]; Events/0.05 GeV",120,0,6); h_EH_All[i][k_CMX ]= new TH1D((TString("h_EH_All_p")+Long_t(i)+"CMX" ).Data(),"; Hadron Calorimeter Energy [GeV]; Events/0.05 GeV",120,0,6); h_EH_All[i][k_CMIOCES]= new TH1D((TString("h_EH_All_p")+Long_t(i) +"CMIOCES").Data(),"; Hadron Calorimeter Energy [GeV]; Events/0.05 GeV",120,0,6); h_EH_All[i][k_CMIOPES]= new TH1D((TString("h_EH_All_p")+Long_t(i) +"CMIOPES").Data(),"; Hadron Calorimeter Energy [GeV]; Events/0.05 GeV",120,0,6); h_EH_All[i][k_CrkTrk ]= new TH1D((TString("h_EH_All_p")+Long_t(i) +"CrkTrk" ).Data(),"; Hadron Calorimeter Energy [GeV]; Events/0.05 GeV",120,0,6); h_EH_WHA[i][k_CMUP ]= new TH1D((TString("h_EH_WHA_p")+Long_t(i) +"CMUP" ).Data(),"; Hadron Calorimeter Energy [GeV]; Events/0.05 GeV",120,0,6); h_EH_WHA[i][k_CMX ]= new TH1D((TString("h_EH_WHA_p")+Long_t(i) +"CMX" ).Data(),"; Hadron Calorimeter Energy [GeV]; Events/0.05 GeV",120,0,6); h_EH_WHA[i][k_CMIOCES]= new TH1D((TString("h_EH_WHA_p")+Long_t(i) +"CMIOCES").Data(),"; Hadron Calorimeter Energy [GeV]; Events/0.05 GeV",120,0,6); h_EH_WHA[i][k_CMIOPES]= new TH1D((TString("h_EH_WHA_p")+Long_t(i) +"CMIOPES").Data(),"; Hadron Calorimeter Energy [GeV]; Events/0.05 GeV",120,0,6); h_EH_WHA[i][k_CrkTrk ]= new TH1D((TString("h_EH_WHA_p")+Long_t(i) +"CrkTrk" ).Data(),"; Hadron Calorimeter Energy [GeV]; Events/0.05 GeV",120,0,6); } } MIPPeakStudy::~MIPPeakStudy(){} //---------------------------------------------------------------------- ------- // BeginJob //---------------------------------------------------------------------- ------- int MIPPeakStudy::BeginJob() { // Register the data blocks // // High level Object reconstruction RegisterDataBlock("MuonBlock", "TStnMuonBlock", &fMuonBlock); TDbnMuon ::RegisterBlocks(this); return 0; } //---------------------------------------------------------------------- ------- // BeginRun //---------------------------------------------------------------------- ------- int MIPPeakStudy::BeginRun() { ++_nRun; int run = GetHeaderBlock()->RunNumber(); if (PrintLevel() > 0) cout << "(MIPPeakStudy): BeginRun " << run << endl; // Data or MC // if (GetHeaderBlock()->McFlag() == 1) { _isData = false; _isMC = true; } else { // cout << "MIPPeakStudy should only be run on MC" << endl; // return -1; } return 0 ; } //---------------------------------------------------------------------- ------- // Event //---------------------------------------------------------------------- ------- int MIPPeakStudy::Event(int ientry) { if (PrintLevel() > 0) cout << "(MIPPeakStudy):" << " Run=" << GetHeaderBlock()- >RunNumber () << " Event=" << GetHeaderBlock()- >EventNumber() << endl; ++_nEvent; fMuonBlock->GetEntry(ientry); TDbnMuon::FillBlocks(ientry); /*######### ## Muons ## #########*/ int runNumber = GetHeaderBlock()->RunNumber(); if (PrintLevel() > 0) cout << "(MIPPeakStudy): Filling muons" << endl; fMuonBlock->GetEntry(ientry); for(int i=0; iNMuons(); i++) { TStnMuon* Mu = fMuonBlock->Muon(i); TDbnMuon* muon = new TDbnMuon(Mu); TDbnCMUP* cmup = new TDbnCMUP (muon,GetHeaderBlock()->RunNumber()); TDbnCMX* cmx = new TDbnCMX (muon,GetHeaderBlock()->RunNumber()); TDbnCMIOCES* cmioces = new TDbnCMIOCES (muon,GetHeaderBlock()->RunNumber()); TDbnCMIOPES* cmiopes = new TDbnCMIOPES (muon,GetHeaderBlock()->RunNumber()); TDbnCrkTrk* crktrk = new TDbnCrkTrk (muon,GetHeaderBlock()->RunNumber()); if (muon->Et() > 20.0 ) { int fill =0; muontypes mt = k_CMUP; if ( crktrk ->GetBitSet()->AllBitsAreTrue () ) { fill=1; mt = k_CrkTrk; } if ( cmup ->GetBitSet()->AllOtherBitsAreTrue((int)TDbnCMUP::kBit_HadEnergy)) { fill=1; mt = k_CMUP; } if ( cmx ->GetBitSet()->AllOtherBitsAreTrue((int)TDbnCMX::kBit_HadEnergy)) { fill=1; mt = k_CMX; } if ( cmioces->GetBitSet()->AllOtherBitsAreTrue((int)TDbnCMIOCES::kBit_HadEnergy) ) { fill=1; mt = k_CMIOCES; } if ( cmiopes->GetBitSet()->AllOtherBitsAreTrue((int)TDbnCMIOPES::kBit_HadEnergy) ) { fill=1; mt = k_CMIOPES; } if (fill) { int period = 1; if ((runNumber>=138425)&&(runNumber<=186598)) period = 0; if ((runNumber>=190697)&&(runNumber<=195408)) period = 1; if ((runNumber>=195409)&&(runNumber<=198379)) period = 2; if ((runNumber>=198380)&&(runNumber<=201349)) period = 3; if ((runNumber>=201350)&&(runNumber<=203799)) period = 4; if ((runNumber>=203819)&&(runNumber<=206989)) period = 5; if ((runNumber>=206990)&&(runNumber<=210011)) period = 6; if ((runNumber>=210012)&&(runNumber<=212133)) period = 7; if ((runNumber>=217990)&&(runNumber<=222426)) period = 8; if ((runNumber>=222529)&&(runNumber<=228596)) period = 9; if ((runNumber>=228664)&&(runNumber<=233111)) period =10; if ((muon->Momentum().Eta() > 0.8)&&(muon->Momentum().Eta() < 1.2)) { h_EH_WHA[period][mt]->Fill(muon->HadEnergy()); } h_EH_All[period][mt]->Fill(muon->HadEnergy()); } } delete muon; delete cmup ; delete cmx ; delete cmioces; delete cmiopes; delete crktrk ; } return 0; } //---------------------------------------------------------------------- ------- // EndJob //---------------------------------------------------------------------- ------- int MIPPeakStudy::EndJob() { printf("--------------------------------------- Summary ---------------\n"); printf("Runs: %d\n", _nRun); printf("Events: %d\n", _nEvent); printf ("---------------------------------------------------------------\n"); TFile* f = TFile::Open("mip.root","RECREATE"); // Histograms for (int i = 0 ; i < n_periods; i++) { for (int j = 0 ; j < k_NMuonTypes; j++) { h_EH_All[i][j]->Write(); h_EH_WHA[i][j]->Write(); } } printf ("---------------------------------------------------------------\n"); return 0; }