//================================================================== // // TMuoCand.cc // // Select muon candidates and put them in an array of pointers // // // Version 0.0: P. Koehn 07/24/01 // // Version 0.1: P. Koehn 08/09/01 // // There are kludged up methods for getting the em and the had energy, // isolation, and corrected impact parameter etc. These will be // updated or removed after the offline version 4.0.0 of CdfMuon . // // //================================================================== #include #include #include "Stntuple/loop/TStnAna.hh" #include "Stntuple/obj/TStnHeaderBlock.hh" #include "TMuoCand.hh" //_____________________________________________________________________________ TMuoCand::TMuoCand(TFile* file, const char* name, const char* title): TStnModule(name,title){ // // create a subdirectory "dir" in this file histFile = file; histDir = name; dir = histFile->mkdir(histDir); // Initialize cuts init(); } //_____________________________________________________________________________ TMuoCand::TMuoCand(const char* name, const char* title): TStnModule(name,title){ // // create a subdirectory "dir" in this file histFile = new TFile("TMuoCand.hbk","RECREATE","test file"); histDir = name; dir = histFile->mkdir(histDir); // Initialize cuts init(); } //_____________________________________________________________________________ TMuoCand::~TMuoCand() { } void TMuoCand::init() { // init counts NMu = 0; NgoodMuon = 0; NgoodMuontot = 0; NMuonMax = 5; Nevents = 0; Ncmp = 0; Ncmu = 0; Ncmx = 0; Ncmucmp = 0; setHistEnable(false); setMuonPtCut(10.0); setMuonEmCut(2.0); setMuonHadCut(6.0); setMuonEmHadCut(0.1); setMuonD0Cut(0.03); setMuonZvCut(60.0); setMuonIsoCut(0.1); setMuonTIsoCut(0.1); setCmuDxCut(2.0); setCmpDxCut(5.0); setCmxDxCut(5.0); setNaxslCut(3); setNstslCut(2); setNtotslCut(6); setMuonPtCutEnable(true); setMuonEmCutEnable(true); setMuonHadCutEnable(true); setMuonEmHadCutEnable(true); setMuonD0CutEnable(true); setMuonZvCutEnable(true); setMuonIsoCutEnable(true); setMuonTIsoCutEnable(true); setCmuDxCutEnable(true); setCmpDxCutEnable(true); setCmxDxCutEnable(true); setNaxslEnable(true); setNstslEnable(true); setNtotslEnable(true); printcuts(); } //================================== // // Book Histograms // //================================== void TMuoCand::BookHistograms() { printf("----- BookHistograms ---- %s\n",GetName()); histFile->cd(histDir); // make the "dir" directory the current directory DetCode = new TH1F("det ", "Detector Code",11,-0.5,10.5); //Nocut: cmu ncmu_Pt = new TH1F("ncmu_Pt", "ncmu_Pt",100,0.0,50.0); ncmu_Em = new TH1F("ncmu_Em", "ncmu_Em",100,0.0,5.0); ncmu_Had = new TH1F("ncmu_Had", "ncmu_Had",80,0.0,8.0); ncmu_HadEm = new TH1F("ncmu_HadEm", "ncmu_HadEm",120,0.0,12.0); ncmu_Dx = new TH1F("ncmu_Dx", "ncmu_Dx",120,-30.0,30.0); ncmu_ISO = new TH1F("ncmu_ISO", "ncmu_ISO",80,0,0.4); ncmu_TISO = new TH1F("ncmu_TISO", "ncmu_TISO",80,0,0.4); ncmu_d0 = new TH1F("ncmu_d0", "ncmu_d0",300,-0.75, 0.75); ncmu_zv = new TH1F("ncmu_zv", "ncmu_zv",140,-120.0,120.0); ncmu_ztrk = new TH1F("ncmu_ztrk", "ncmu_ztrk",140,-120.0,120.0); ncmu_Ax = new TH1F("ncmu_Ax", "ncmu_Ax",5,-0.5,4.5); ncmu_St = new TH1F("ncmu_St", "ncmu_St",5,-0.5,4.5); ncmu_AxSt = new TH1F("ncmu_AxSt", "nXAxSt",9,-0.5,8.5); //Nocut: cmp ncmp_Pt = new TH1F("ncmp_Pt", "ncmp_Pt",100,0.0,50.0); ncmp_Em = new TH1F("ncmp_Em", "ncmp_Em",100,0.0,5.0); ncmp_Had = new TH1F("ncmp_Had", "ncmp_Had",80,0.0,8.0); ncmp_HadEm = new TH1F("ncmp_HadEm", "ncmp_HadEm",120,0.0,12.0); ncmp_Dx = new TH1F("ncmp_Dx", "ncmp_Dx",120,-30.0,30.0); ncmp_ISO = new TH1F("ncmp_ISO", "ncmp_ISO",80,0,0.4); ncmp_TISO = new TH1F("ncmp_TISO", "ncmp_TISO",80,0,0.4); ncmp_d0 = new TH1F("ncmp_d0", "ncmp_d0",300,-0.75, 0.75); ncmp_zv = new TH1F("ncmp_zv", "ncmp_zv",140,-120.0,120.0); ncmp_ztrk = new TH1F("ncmp_ztrk", "ncmp_ztrk",140,-120.0,120.0); ncmp_Ax = new TH1F("ncmp_Ax", "ncmp_Ax",5,-0.5,4.5); ncmp_St = new TH1F("ncmp_St", "ncmp_St",5,-0.5,4.5); ncmp_AxSt = new TH1F("ncmp_AxSt", "nXAxSt",9,-0.5,8.5); //Nocut: cmucmp ncmucmp_Pt = new TH1F("ncmucmp_Pt", "ncmucmp_Pt",100,0.0,50.0); ncmucmp_Em = new TH1F("ncmucmp_Em", "ncmucmp_Em",100,0.0,5.0); ncmucmp_Had = new TH1F("ncmucmp_Had", "ncmucmp_Had",80,0.0,8.0); ncmucmp_HadEm = new TH1F("ncmucmp_HadEm", "ncmucmp_HadEm",120,0.0,12.0); ncmucmp_Dx = new TH1F("ncmucmp_Dx", "ncmucmp_Dx",120,-30.0,30.0); ncmucmp_ISO = new TH1F("ncmucmp_ISO", "ncmucmp_ISO",80,0,0.4); ncmucmp_TISO = new TH1F("ncmucmp_TISO", "ncmucmp_TISO",80,0,0.4); ncmucmp_d0 = new TH1F("ncmucmp_d0", "ncmucmp_d0",300,-0.75, 0.75); ncmucmp_zv = new TH1F("ncmucmp_zv", "ncmucmp_zv",140,-120.0,120.0); ncmucmp_ztrk = new TH1F("ncmucmp_ztrk", "ncmucmp_ztrk",140,-120.0,120.0); ncmucmp_Ax = new TH1F("ncmucmp_Ax", "ncmucmp_Ax",5,-0.5,4.5); ncmucmp_St = new TH1F("ncmucmp_St", "ncmucmp_St",5,-0.5,4.5); ncmucmp_AxSt = new TH1F("ncmucmp_AxSt", "nXAxSt",9,-0.5,8.5); //Nocut: cmx ncmx_Pt = new TH1F("ncmx_Pt", "ncmx_Pt",100,0.0,50.0); ncmx_Em = new TH1F("ncmx_Em", "ncmx_Em",100,0.0,5.0); ncmx_Had = new TH1F("ncmx_Had", "ncmx_Had",80,0.0,8.0); ncmx_HadEm = new TH1F("ncmx_HadEm", "ncmx_HadEm",120,0.0,12.0); ncmx_Dx = new TH1F("ncmx_Dx", "ncmx_Dx",120,-30.0,30.0); ncmx_ISO = new TH1F("ncmx_ISO", "ncmx_ISO",80,0,0.4); ncmx_TISO = new TH1F("ncmx_TISO", "ncmx_TISO",80,0,0.4); ncmx_d0 = new TH1F("ncmx_d0", "ncmx_d0",300,-0.75, 0.75); ncmx_zv = new TH1F("ncmx_zv", "ncmx_zv",140,-120.0,120.0); ncmx_ztrk = new TH1F("ncmx_ztrk", "ncmx_ztrk",140,-120.0,120.0); ncmx_Ax = new TH1F("ncmx_Ax", "ncmx_Ax",5,-0.5,4.5); ncmx_St = new TH1F("ncmx_St", "ncmx_St",5,-0.5,4.5); ncmx_AxSt = new TH1F("ncmx_AxSt", "nXAxSt",9,-0.5,8.5); // cut: cmu cmu_Pt = new TH1F("cmu_Pt", "cmu_Pt",100,0.0,50.0); cmu_Em = new TH1F("cmu_Em", "cmu_Em",100,0.0,5.0); cmu_Had = new TH1F("cmu_Had", "cmu_Had",80,0.0,8.0); cmu_HadEm = new TH1F("cmu_HadEm", "cmu_HadEm",120,0.0,12.0); cmu_Dx = new TH1F("cmu_Dx", "cmu_Dx",120,-30.0,30.0); cmu_ISO = new TH1F("cmu_ISO", "cmu_ISO",80,0,0.4); cmu_TISO = new TH1F("cmu_TISO", "cmu_TISO",80,0,0.4); cmu_d0 = new TH1F("cmu_d0", "cmu_d0",300,-0.75, 0.75); cmu_zv = new TH1F("cmu_zv", "cmu_zv",140,-120.0,120.0); cmu_ztrk = new TH1F("cmu_ztrk", "cmu_ztrk",140,-120.0,120.0); cmu_Ax = new TH1F("cmu_Ax", "cmu_Ax",5,-0.5,4.5); cmu_St = new TH1F("cmu_St", "cmu_St",5,-0.5,4.5); cmu_AxSt = new TH1F("cmu_AxSt", "nXAxSt",9,-0.5,8.5); // cut: cmp cmp_Pt = new TH1F("cmp_Pt", "cmp_Pt",100,0.0,50.0); cmp_Em = new TH1F("cmp_Em", "cmp_Em",100,0.0,5.0); cmp_Had = new TH1F("cmp_Had", "cmp_Had",80,0.0,8.0); cmp_HadEm = new TH1F("cmp_HadEm", "cmp_HadEm",120,0.0,12.0); cmp_Dx = new TH1F("cmp_Dx", "cmp_Dx",120,-30.0,30.0); cmp_ISO = new TH1F("cmp_ISO", "cmp_ISO",80,0,0.4); cmp_TISO = new TH1F("cmp_TISO", "cmp_TISO",80,0,0.4); cmp_d0 = new TH1F("cmp_d0", "cmp_d0",300,-0.75, 0.75); cmp_zv = new TH1F("cmp_zv", "cmp_zv",140,-120.0,120.0); cmp_ztrk = new TH1F("cmp_ztrk", "cmp_ztrk",140,-120.0,120.0); cmp_Ax = new TH1F("cmp_Ax", "cmp_Ax",5,-0.5,4.5); cmp_St = new TH1F("cmp_St", "cmp_St",5,-0.5,4.5); cmp_AxSt = new TH1F("cmp_AxSt", "nXAxSt",9,-0.5,8.5); // cut: cmucmp cmucmp_Pt = new TH1F("cmucmp_Pt", "cmucmp_Pt",100,0.0,50.0); cmucmp_Em = new TH1F("cmucmp_Em", "cmucmp_Em",100,0.0,5.0); cmucmp_Had = new TH1F("cmucmp_Had", "cmucmp_Had",80,0.0,8.0); cmucmp_HadEm = new TH1F("cmucmp_HadEm", "cmucmp_HadEm",120,0.0,12.0); cmucmp_Dx = new TH1F("cmucmp_Dx", "cmucmp_Dx",120,-30.0,30.0); cmucmp_ISO = new TH1F("cmucmp_ISO", "cmucmp_ISO",80,0,0.4); cmucmp_TISO = new TH1F("cmucmp_TISO", "cmucmp_TISO",80,0,0.4); cmucmp_d0 = new TH1F("cmucmp_d0", "cmucmp_d0",300,-0.75, 0.75); cmucmp_zv = new TH1F("cmucmp_zv", "cmucmp_zv",140,-120.0,120.0); cmucmp_ztrk = new TH1F("cmucmp_ztrk", "cmucmp_ztrk",140,-120.0,120.0); cmucmp_Ax = new TH1F("cmucmp_Ax", "cmucmp_Ax",5,-0.5,4.5); cmucmp_St = new TH1F("cmucmp_St", "cmucmp_St",5,-0.5,4.5); cmucmp_AxSt = new TH1F("cmucmp_AxSt", "nXAxSt",9,-0.5,8.5); // cut: cmx cmx_Pt = new TH1F("cmx_Pt", "cmx_Pt",100,0.0,50.0); cmx_Em = new TH1F("cmx_Em", "cmx_Em",100,0.0,5.0); cmx_Had = new TH1F("cmx_Had", "cmx_Had",80,0.0,8.0); cmx_HadEm = new TH1F("cmx_HadEm", "cmx_HadEm",120,0.0,12.0); cmx_Dx = new TH1F("cmx_Dx", "cmx_Dx",120,-30.0,30.0); cmx_ISO = new TH1F("cmx_ISO", "cmx_ISO",80,0,0.4); cmx_TISO = new TH1F("cmx_TISO", "cmx_TISO",80,0,0.4); cmx_d0 = new TH1F("cmx_d0", "cmx_d0",300,-0.75, 0.75); cmx_zv = new TH1F("cmx_zv", "cmx_zv",140,-120.0,120.0); cmx_ztrk = new TH1F("cmx_ztrk", "cmx_ztrk",140,-120.0,120.0); cmx_Ax = new TH1F("cmx_Ax", "cmx_Ax",5,-0.5,4.5); cmx_St = new TH1F("cmx_St", "cmx_St",5,-0.5,4.5); cmx_AxSt = new TH1F("cmx_AxSt", "nXAxSt",9,-0.5,8.5); } //_____________________________________________________________________________ int TMuoCand::BeginJob() { printf("----- Begin job: ---- %s\n",GetName()); // register the Muon data block pMuonBlock = (TStnMuonBlock*) fAna->RegisterDataBlock("MuonBlock","TStnMuonBlock"); if (! pMuonBlock) { printf(" >>> branch *** %s *** doesn't exist \n","MuonBlock"); fEnabled = 0; } // register the Track data block pTrackBlock = (TStnTrackBlock*) fAna->RegisterDataBlock("TrackBlock","TStnTrackBlock"); if (! pTrackBlock) { printf(" >>> branch *** %s *** doesn't exist \n","TrackBlock"); fEnabled = 0; } // register the Cal data block pCalDataBlock = (TCalDataBlock*) fAna->RegisterDataBlock("CalDataBlock", "TCalDataBlock"); if (! pCalDataBlock) { printf(" >>> branch *** %s *** doesn't exist \n","CalDataBlock"); fEnabled = 0; } if(IsHistEnable())BookHistograms(); // init counts NMu = 0; NgoodMuon = 0; NgoodMuontot = 0; NMuonMax = 5; Nevents = 0; Ncmp = 0; Ncmu = 0; Ncmx = 0; Ncmucmp = 0; return 0; } //_____________________________________________________________________________ int TMuoCand::BeginRun() { return 0; } //================================== // Event(int ientry) //================================== int TMuoCand::Event(int ientry) { //Get needed data blocks //================================ Int_t mucheck = pMuonBlock->GetEntry(ientry); Int_t tcheck = pTrackBlock->GetEntry(ientry); Int_t calcheck = pCalDataBlock->GetEntry(ientry); if (mucheck==0 || tcheck==0 || calcheck==0) { std::cout << " TMuoCand datablock error: mucheck, tcheck, calcheck = " << mucheck << ", " << tcheck << ", " << calcheck << std::endl; } if (fDebugLevel) { printf(" ---- ientry = %7i\n",ientry); pMuonBlock->Print(); // muon spew } // Init int nmuons = pMuonBlock->NMuons(); int tracks = pTrackBlock->NTracks(); Int_t mudet = 0; // Iso variables Float_t Isolation, TIsolation; Float_t CotMatch, CurvMatch, Z0Match, D0Match , Phi0Match, ptMatch; Float_t muphi = 999.0; Float_t mueta = 999.0; Float_t tphi, teta; Float_t dphi, deta; // Cal var for Muons Float_t EmE, HadE; Float_t rces = 183.9; float xyz[] = {0.0, 0.0, 0.0}; Int_t mutracknum, TdcTime; Double_t dr = 999.0; // track Iso matching Double_t cone,dz,ptmin; // track Iso matching // data objects //TStnMuon* muon; //===================== // Muon Selection Loop //===================== NgoodMuon = 0; NMu += nmuons; for (Int_t i=0; iMuon(i); // Counting muons mudet = muon->Detector(); //1==cmu,2==cmp,3==cmucmp,4==cmx. if( mudet==4 ) Ncmx++; if( mudet==3 ) Ncmucmp++; if( mudet==1 ) Ncmu++; if( mudet==2 ) Ncmp++; // Isolation for this muon Isolation = (muon->Iso())/(muon->Momentum()->Pt()); TIsolation = (muon->TIso())/(muon->Momentum()->Pt()); // Calorimetry info for this muon EmE = muon->EmEnergy(); HadE = muon->HadEnergy(); // Init. Cal quantities for muons // These are set so other modules can access Em and Had // calculated by this module. setISO(i,Isolation); setTISO(i,TIsolation); setemE(i,muon->EmEnergy()); sethadE(i,muon->HadEnergy()); // To which track does this muon correspond ? // (this will go away when pasha adds track number to TStnMuon) mueta = muon->Momentum()->Eta(); muphi = muon->Momentum()->Phi(); mutracknum = TrackNumber(mueta,muphi,pTrackBlock); // Matching track quantities if( mutracknum >= 0 ){ ptMatch = pTrackBlock->Track(mutracknum)->fPt; ptMatch = pTrackBlock->Track(mutracknum)->fPt; CotMatch = pTrackBlock->Track(mutracknum)->fCot; CurvMatch = pTrackBlock->Track(mutracknum)->fCurv; Z0Match = pTrackBlock->Track(mutracknum)->fZ0; D0Match = CorrectedD0(muon); //D0Match = pTrackBlock->Track(mutracknum)->fD0; Phi0Match = pTrackBlock->Track(mutracknum)->fPhi0; } else { ptMatch = muon->Momentum()->Pt(); CotMatch = 0.0; // fix this CurvMatch = 9999.0; // fix this Z0Match = muon->Zv(); D0Match = CorrectedD0(muon); Phi0Match = TVector2::Phi_0_2pi(muon->Momentum()->Phi()); } //===================================================================== // Redo Track Iso for this muon only if needed //===================================================================== if( false ){ //if( (mutracknum >= 0) && (muon->TIso() >= 999999.0) ){ TIsolation = -999.0; tphi = pTrackBlock->Track(mutracknum)->fPhi0; teta = pTrackBlock->Track(mutracknum)->fEta; deta = mueta-teta; dphi = TVector2::Phi_mpi_pi(muphi-tphi); dr = sqrt(dphi*dphi + deta*deta); // Optimal settings for track Iso cone = 0.4; // 0.4 dz = 5.0; // 5.0 cm ptmin =10.0; // 10.0 GeV/c // Pasha's version of track isolation //TIsolation = TStntuple::TrkIso(pTrackBlock->Track(mutracknum),pTrackBlock->TrackList(),cone,dz,ptmin); // My version TIsolation = TrackIso(mutracknum,pTrackBlock,cone,dz,ptmin); // Needs to me saved for other modules to see setTISO(i,TIsolation); } // do the track Iso //===================================================================== //===================================================================== // Redo em, had energy, and Cal ISO for this muon only if needed // // Extrapolate match muon track to ces. Get x and y. Then eta and phi. // Note: rces = 183.9 cm middle of ces inner = 176.0, outer = 204.8 //===================================================================== if(false){ //if((mutracknum >= 0) && ((muon->EmEnergy() <= 0.0 ) || (muon->HadEnergy() <= 0.0)) ){ // Get the muon and had energy by projecting muons into calorimetry at ces Double_t *MuonEmHad = MuonCalEnergy(CurvMatch, Phi0Match, CotMatch, D0Match, Z0Match, pCalDataBlock); EmE = MuonEmHad[0]; HadE = MuonEmHad[1]; setemE(i,MuonEmHad[0]); sethadE(i,MuonEmHad[1]); // Redo cal isolation for (Int_t iloop = 0; iloop < 3; iloop++)xyz[iloop] = 0.0; track_Prop(rces, CurvMatch, Phi0Match, CotMatch, D0Match, Z0Match, xyz); Isolation = Iso(ptMatch, xyz, pCalDataBlock); setISO(i,Isolation); } // get cal info for tower muon passes through at ces radius //===================================================================== //===================================================================== // Get the had tdc time for Cal tower that the muon passes through... //===================================================================== TdcTime = 0; //if (mutracknum >= 0) TdcTime = HadTDCtime(CurvMatch, Phi0Match, CotMatch, D0Match, Z0Match, pCalDataBlock); TdcTime = muon->Time(); //====================================================== // Fill an array with pointers to a Select set of muons //====================================================== if( ( !MuonPtCutEnable || muon->Momentum()->Pt() > MuonPtCut ) && ( !MuonEmCutEnable || EmE < MuonEmCut ) && ( !MuonHadCutEnable || HadE < MuonHadCut ) && ( !MuonEmHadCutEnable || (EmE + HadE) > MuonEmHadCut) && ( !MuonD0CutEnable || fabs(CorrectedD0(muon)) < MuonD0Cut ) && ( !MuonZvCutEnable || fabs(muon->Zv()) < MuonZvCut ) && ( !MuonIsoCutEnable || Isolation < MuonIsoCut ) && ( !MuonTIsoCutEnable || TIsolation < MuonTIsoCut ) && ( !NaxslEnable || muon->NAxSl() >= NaxslCut ) && ( !NstslEnable || muon->NStSl() >= NstslCut ) && ( !NtotslEnable || (muon->NAxSl() + muon->NStSl()) >= NtotslCut )){ if(mudet==1 ){ if( (!CmuDxCutEnable) || (fabs(muon->CmuDelX()) < CmuDxCut) ){ goodMuon[NgoodMuon] = muon; setemEgood(NgoodMuon,EmE); sethadEgood(NgoodMuon,HadE); setISOgood(NgoodMuon,Isolation); setTISOgood(NgoodMuon,TIsolation); setTDCgood(NgoodMuon,TdcTime); NgoodMuonList[i] = true; NgoodMuon++; NgoodMuontot++; } } else if(mudet==2 ){ if( (!CmpDxCutEnable) || (fabs(muon->CmpDelX()) < CmpDxCut) ){ goodMuon[NgoodMuon] = muon; setemEgood(NgoodMuon,EmE); sethadEgood(NgoodMuon,HadE); setISOgood(NgoodMuon,Isolation); setTISOgood(NgoodMuon,TIsolation); setTDCgood(NgoodMuon,TdcTime); NgoodMuonList[i] = true; NgoodMuon++; NgoodMuontot++; } } else if(mudet==3 ){ if( ((!CmpDxCutEnable) || (fabs(muon->CmpDelX()) < CmpDxCut)) && ((!CmuDxCutEnable) || (fabs(muon->CmuDelX()) < CmuDxCut)) ){ goodMuon[NgoodMuon] = muon; setemEgood(NgoodMuon,EmE); sethadEgood(NgoodMuon,HadE); setISOgood(NgoodMuon,Isolation); setTISOgood(NgoodMuon,TIsolation); setTDCgood(NgoodMuon,TdcTime); NgoodMuonList[i] = true; NgoodMuon++; NgoodMuontot++; } } else if( (mudet==4) ){ if( (!CmxDxCutEnable) || (fabs(muon->CmxDelX()) < CmxDxCut) ){ goodMuon[NgoodMuon] = muon; setemEgood(NgoodMuon,EmE); sethadEgood(NgoodMuon,HadE); setISOgood(NgoodMuon,Isolation); setTISOgood(NgoodMuon,TIsolation); setTDCgood(NgoodMuon,TdcTime); NgoodMuonList[i] = true; NgoodMuon++; NgoodMuontot++; } } else { NgoodMuonList[i] = false; } } // fill good muon pointer //======================================== //======================================== // Make muon histos //======================================== if( IsHistEnable() ){ DetCode->Fill(mudet); //No cut histos cmu //================= if(mudet==1){ //cmu ncmu_Pt->Fill(muon->Momentum()->Pt()); ncmu_Em->Fill(EmE); ncmu_Had->Fill(HadE); ncmu_HadEm->Fill(HadE + EmE); ncmu_ISO->Fill(Isolation); ncmu_TISO->Fill(TIsolation); ncmu_d0->Fill(CorrectedD0(muon)); //ncmu_d0->Fill(muon->D0()); ncmu_zv->Fill(muon->Zv()); ncmu_Ax->Fill(muon->NAxSl()); ncmu_St->Fill(muon->NStSl()); ncmu_AxSt->Fill( muon->NAxSl() + muon->NStSl() ); ncmu_Dx->Fill(muon->CmuDelX()); } //No cut histos cmp //================= if(mudet==2){ //cmp ncmp_Pt->Fill(muon->Momentum()->Pt()); ncmp_Em->Fill(EmE); ncmp_Had->Fill(HadE); ncmp_HadEm->Fill(HadE + EmE); ncmp_ISO->Fill(Isolation); ncmp_TISO->Fill(TIsolation); ncmp_d0->Fill(CorrectedD0(muon)); //ncmp_d0->Fill(muon->D0()); ncmp_zv->Fill(muon->Zv()); ncmp_Ax->Fill(muon->NAxSl()); ncmp_St->Fill(muon->NStSl()); ncmp_AxSt->Fill( muon->NAxSl() + muon->NStSl() ); ncmp_Dx->Fill(muon->CmpDelX()); } //No cut histos cmu && cmp //======================== if(mudet==3){ ncmucmp_Pt->Fill(muon->Momentum()->Pt()); ncmucmp_Em->Fill(EmE); ncmucmp_Had->Fill(HadE); ncmucmp_HadEm->Fill(HadE + EmE); ncmucmp_ISO->Fill(Isolation); ncmucmp_TISO->Fill(TIsolation); ncmucmp_d0->Fill(CorrectedD0(muon)); //ncmucmp_d0->Fill(muon->D0()); ncmucmp_zv->Fill(muon->Zv()); ncmucmp_Ax->Fill(muon->NAxSl()); ncmucmp_St->Fill(muon->NStSl()); ncmucmp_AxSt->Fill( muon->NAxSl() + muon->NStSl() ); ncmucmp_Dx->Fill(muon->CmuDelX()); } //no cuts on cmx //============== if(mudet==4){ ncmx_Pt->Fill(muon->Momentum()->Pt() ); ncmx_Em->Fill(EmE); ncmx_Had->Fill(HadE); ncmx_HadEm->Fill(HadE + EmE); ncmx_Dx->Fill(muon->CmxDelX()); ncmx_ISO->Fill(Isolation); ncmx_TISO->Fill(TIsolation); //ncmx_d0->Fill(CorrectedD0(muon)); ncmx_d0->Fill(CorrectedD0(muon)); ncmx_zv->Fill(muon->Zv()); ncmx_Ax->Fill(muon->NAxSl()); ncmx_St->Fill(muon->NStSl()); ncmx_AxSt->Fill(muon->NAxSl() + muon->NStSl()); } //======================== // Cut histos //======================== //cmu first //========= if(mudet==1){ if(( true || muon->Momentum()->Pt() > MuonPtCut ) && ( !MuonEmCutEnable || EmE < MuonEmCut ) && ( !MuonHadCutEnable || HadE < MuonHadCut ) && ( !MuonEmHadCutEnable || (EmE + HadE) > MuonEmHadCut) && ( !CmuDxCutEnable || fabs(muon->CmuDelX()) < CmuDxCut ) && ( !MuonIsoCutEnable || Isolation < MuonIsoCut ) && ( !MuonTIsoCutEnable || TIsolation < MuonTIsoCut ) && ( !MuonD0CutEnable || fabs(CorrectedD0(muon)) < MuonD0Cut ) && ( !MuonZvCutEnable || fabs(muon->Zv()) < MuonZvCut ) && ( !NaxslEnable || muon->NAxSl() >= NaxslCut ) && ( !NstslEnable || muon->NStSl() >= NstslCut ) && ( !NtotslEnable || (muon->NAxSl() + muon->NStSl()) >= NtotslCut ) ){ cmu_Pt->Fill(muon->Momentum()->Pt() ); } if(( !MuonPtCutEnable || muon->Momentum()->Pt() > MuonPtCut ) && ( true || EmE < MuonEmCut ) && ( !MuonHadCutEnable || HadE < MuonHadCut ) && ( !MuonEmHadCutEnable || (EmE + HadE) > MuonEmHadCut) && ( !CmuDxCutEnable || fabs(muon->CmuDelX()) < CmuDxCut ) && ( !MuonIsoCutEnable || Isolation < MuonIsoCut ) && ( !MuonTIsoCutEnable || TIsolation < MuonTIsoCut ) && ( !MuonD0CutEnable || fabs(CorrectedD0(muon)) < MuonD0Cut ) && ( !MuonZvCutEnable || fabs(muon->Zv()) < MuonZvCut ) && ( !NaxslEnable || muon->NAxSl() >= NaxslCut ) && ( !NstslEnable || muon->NStSl() >= NstslCut ) && ( !NtotslEnable || (muon->NAxSl() + muon->NStSl()) >= NtotslCut ) ){ cmu_Em->Fill(EmE); } if(( !MuonPtCutEnable || muon->Momentum()->Pt() > MuonPtCut ) && ( !MuonEmCutEnable || EmE < MuonEmCut ) && ( true || HadE < MuonHadCut ) && ( !MuonEmHadCutEnable || (EmE + HadE) > MuonEmHadCut) && ( !CmuDxCutEnable || fabs(muon->CmuDelX()) < CmuDxCut ) && ( !MuonIsoCutEnable || Isolation < MuonIsoCut ) && ( !MuonTIsoCutEnable || TIsolation < MuonTIsoCut ) && ( !MuonD0CutEnable || fabs(CorrectedD0(muon)) < MuonD0Cut ) && ( !MuonZvCutEnable || fabs(muon->Zv()) < MuonZvCut ) && ( !NaxslEnable || muon->NAxSl() >= NaxslCut ) && ( !NstslEnable || muon->NStSl() >= NstslCut ) && ( !NtotslEnable || (muon->NAxSl() + muon->NStSl()) >= NtotslCut ) ){ cmu_Had->Fill(HadE); } if(( !MuonPtCutEnable || muon->Momentum()->Pt() > MuonPtCut ) && ( !MuonEmCutEnable || EmE < MuonEmCut ) && ( !MuonHadCutEnable || HadE < MuonHadCut ) && ( true || (EmE + HadE) > MuonEmHadCut) && ( !CmuDxCutEnable || fabs(muon->CmuDelX()) < CmuDxCut ) && ( !MuonIsoCutEnable || Isolation < MuonIsoCut ) && ( !MuonTIsoCutEnable || TIsolation < MuonTIsoCut ) && ( !MuonD0CutEnable || fabs(CorrectedD0(muon)) < MuonD0Cut ) && ( !MuonZvCutEnable || fabs(muon->Zv()) < MuonZvCut ) && ( !NaxslEnable || muon->NAxSl() >= NaxslCut ) && ( !NstslEnable || muon->NStSl() >= NstslCut ) && ( !NtotslEnable || (muon->NAxSl() + muon->NStSl()) >= NtotslCut ) ){ cmu_HadEm->Fill(EmE + HadE); } if(( !MuonPtCutEnable || muon->Momentum()->Pt() > MuonPtCut ) && ( !MuonEmCutEnable || EmE < MuonEmCut ) && ( !MuonHadCutEnable || HadE < MuonHadCut ) && ( !MuonEmHadCutEnable || (EmE + HadE) > MuonEmHadCut) && ( true || fabs(muon->CmuDelX()) < CmuDxCut ) && ( !MuonIsoCutEnable || Isolation < MuonIsoCut ) && ( !MuonTIsoCutEnable || TIsolation < MuonTIsoCut ) && ( !MuonD0CutEnable || fabs(CorrectedD0(muon)) < MuonD0Cut ) && ( !MuonZvCutEnable || fabs(muon->Zv()) < MuonZvCut ) && ( !NaxslEnable || muon->NAxSl() >= NaxslCut ) && ( !NstslEnable || muon->NStSl() >= NstslCut ) && ( !NtotslEnable || (muon->NAxSl() + muon->NStSl()) >= NtotslCut ) ){ cmu_Dx->Fill(muon->CmuDelX()); } if(( !MuonPtCutEnable || muon->Momentum()->Pt() > MuonPtCut ) && ( !MuonEmCutEnable || EmE < MuonEmCut ) && ( !MuonHadCutEnable || HadE < MuonHadCut ) && ( !MuonEmHadCutEnable || (EmE + HadE) > MuonEmHadCut) && ( !CmuDxCutEnable || fabs(muon->CmuDelX()) < CmuDxCut ) && ( true || Isolation < MuonIsoCut ) && ( !MuonTIsoCutEnable || TIsolation < MuonTIsoCut ) && ( !MuonD0CutEnable || fabs(CorrectedD0(muon)) < MuonD0Cut ) && ( !MuonZvCutEnable || fabs(muon->Zv()) < MuonZvCut ) && ( !NaxslEnable || muon->NAxSl() >= NaxslCut ) && ( !NstslEnable || muon->NStSl() >= NstslCut ) && ( !NtotslEnable || (muon->NAxSl() + muon->NStSl()) >= NtotslCut ) ){ cmu_ISO->Fill(Isolation); } if(( !MuonPtCutEnable || muon->Momentum()->Pt() > MuonPtCut ) && ( !MuonEmCutEnable || EmE < MuonEmCut ) && ( !MuonHadCutEnable || HadE < MuonHadCut ) && ( !MuonEmHadCutEnable || (EmE + HadE) > MuonEmHadCut) && ( !CmuDxCutEnable || fabs(muon->CmuDelX()) < CmuDxCut ) && ( !MuonIsoCutEnable || Isolation < MuonIsoCut ) && ( true || TIsolation < MuonTIsoCut ) && ( !MuonD0CutEnable || fabs(CorrectedD0(muon)) < MuonD0Cut ) && ( !MuonZvCutEnable || fabs(muon->Zv()) < MuonZvCut ) && ( !NaxslEnable || muon->NAxSl() >= NaxslCut ) && ( !NstslEnable || muon->NStSl() >= NstslCut ) && ( !NtotslEnable || (muon->NAxSl() + muon->NStSl()) >= NtotslCut ) ){ cmu_TISO->Fill(TIsolation); } if(( !MuonPtCutEnable || muon->Momentum()->Pt() > MuonPtCut ) && ( !MuonEmCutEnable || EmE < MuonEmCut ) && ( !MuonHadCutEnable || HadE < MuonHadCut ) && ( !MuonEmHadCutEnable || (EmE + HadE) > MuonEmHadCut) && ( !CmuDxCutEnable || fabs(muon->CmuDelX()) < CmuDxCut ) && ( !MuonIsoCutEnable || Isolation < MuonIsoCut ) && ( !MuonTIsoCutEnable || TIsolation < MuonTIsoCut ) && ( true || fabs(CorrectedD0(muon)) < MuonD0Cut ) && ( !MuonZvCutEnable || fabs(muon->Zv()) < MuonZvCut ) && ( !NaxslEnable || muon->NAxSl() >= NaxslCut ) && ( !NstslEnable || muon->NStSl() >= NstslCut ) && ( !NtotslEnable || (muon->NAxSl() + muon->NStSl()) >= NtotslCut ) ){ cmu_d0->Fill(CorrectedD0(muon)); } if(( !MuonPtCutEnable || muon->Momentum()->Pt() > MuonPtCut ) && ( !MuonEmCutEnable || EmE < MuonEmCut ) && ( !MuonHadCutEnable || HadE < MuonHadCut ) && ( !MuonEmHadCutEnable || (EmE + HadE) > MuonEmHadCut) && ( !CmuDxCutEnable || fabs(muon->CmuDelX()) < CmuDxCut ) && ( !MuonIsoCutEnable || Isolation < MuonIsoCut ) && ( !MuonTIsoCutEnable || TIsolation < MuonTIsoCut ) && ( !MuonD0CutEnable || fabs(CorrectedD0(muon)) < MuonD0Cut ) && ( true || fabs(muon->Zv()) < MuonZvCut ) && ( !NaxslEnable || muon->NAxSl() >= NaxslCut ) && ( !NstslEnable || muon->NStSl() >= NstslCut ) && ( !NtotslEnable || (muon->NAxSl() + muon->NStSl()) >= NtotslCut ) ){ cmu_zv->Fill(muon->Zv()); } if(( !MuonPtCutEnable || muon->Momentum()->Pt() > MuonPtCut ) && ( !MuonEmCutEnable || EmE < MuonEmCut ) && ( !MuonHadCutEnable || HadE < MuonHadCut ) && ( !MuonEmHadCutEnable || (EmE + HadE) > MuonEmHadCut) && ( !CmuDxCutEnable || fabs(muon->CmuDelX()) < CmuDxCut ) && ( !MuonIsoCutEnable || Isolation < MuonIsoCut ) && ( !MuonTIsoCutEnable || TIsolation < MuonTIsoCut ) && ( !MuonD0CutEnable || fabs(CorrectedD0(muon)) < MuonD0Cut ) && ( !MuonZvCutEnable || fabs(muon->Zv()) < MuonZvCut ) && ( true || muon->NAxSl() >= NaxslCut ) && ( !NstslEnable || muon->NStSl() >= NstslCut ) && ( !NtotslEnable || (muon->NAxSl() + muon->NStSl()) >= NtotslCut ) ){ cmu_Ax->Fill(muon->NAxSl()); } if(( !MuonPtCutEnable || muon->Momentum()->Pt() > MuonPtCut ) && ( !MuonEmCutEnable || EmE < MuonEmCut ) && ( !MuonHadCutEnable || HadE < MuonHadCut ) && ( !MuonEmHadCutEnable || (EmE + HadE) > MuonEmHadCut) && ( !CmuDxCutEnable || fabs(muon->CmuDelX()) < CmuDxCut ) && ( !MuonIsoCutEnable || Isolation < MuonIsoCut ) && ( !MuonTIsoCutEnable || TIsolation < MuonTIsoCut ) && ( !MuonD0CutEnable || fabs(CorrectedD0(muon)) < MuonD0Cut ) && ( !MuonZvCutEnable || fabs(muon->Zv()) < MuonZvCut ) && ( !NaxslEnable || muon->NAxSl() >= NaxslCut ) && ( true || muon->NStSl() >= NstslCut ) && ( !NtotslEnable || (muon->NAxSl() + muon->NStSl()) >= NtotslCut ) ){ cmu_St->Fill(muon->NStSl()); } if(( !MuonPtCutEnable || muon->Momentum()->Pt() > MuonPtCut ) && ( !MuonEmCutEnable || EmE < MuonEmCut ) && ( !MuonHadCutEnable || HadE < MuonHadCut ) && ( !MuonEmHadCutEnable || (EmE + HadE) > MuonEmHadCut) && ( !CmuDxCutEnable || fabs(muon->CmuDelX()) < CmuDxCut ) && ( !MuonIsoCutEnable || Isolation < MuonIsoCut ) && ( !MuonTIsoCutEnable || TIsolation < MuonTIsoCut ) && ( !MuonD0CutEnable || fabs(CorrectedD0(muon)) < MuonD0Cut ) && ( !MuonZvCutEnable || fabs(muon->Zv()) < MuonZvCut ) && ( !NaxslEnable || muon->NAxSl() >= NaxslCut ) && ( !NstslEnable || muon->NStSl() >= NstslCut ) && ( true || (muon->NAxSl() + muon->NStSl()) >= NtotslCut ) ){ cmu_AxSt->Fill(muon->NAxSl() + muon->NStSl()); } } //cmu muons //cmp cut histos //============== if(mudet==2){ if(( true || muon->Momentum()->Pt() > MuonPtCut ) && ( !MuonEmCutEnable || EmE < MuonEmCut ) && ( !MuonHadCutEnable || HadE < MuonHadCut ) && ( !MuonEmHadCutEnable || (EmE + HadE) > MuonEmHadCut) && ( !CmpDxCutEnable || fabs(muon->CmpDelX()) < CmpDxCut ) && ( !MuonIsoCutEnable || Isolation < MuonIsoCut ) && ( !MuonTIsoCutEnable || TIsolation < MuonTIsoCut ) && ( !MuonD0CutEnable || fabs(CorrectedD0(muon)) < MuonD0Cut ) && ( !MuonZvCutEnable || fabs(muon->Zv()) < MuonZvCut ) && ( !NaxslEnable || muon->NAxSl() >= NaxslCut ) && ( !NstslEnable || muon->NStSl() >= NstslCut ) && ( !NtotslEnable || (muon->NAxSl() + muon->NStSl()) >= NtotslCut ) ){ cmp_Pt->Fill(muon->Momentum()->Pt() ); } if(( !MuonPtCutEnable || muon->Momentum()->Pt() > MuonPtCut ) && ( true || EmE < MuonEmCut ) && ( !MuonHadCutEnable || HadE < MuonHadCut ) && ( !MuonEmHadCutEnable || (EmE + HadE) > MuonEmHadCut) && ( !CmpDxCutEnable || fabs(muon->CmpDelX()) < CmpDxCut ) && ( !MuonIsoCutEnable || Isolation < MuonIsoCut ) && ( !MuonTIsoCutEnable || TIsolation < MuonTIsoCut ) && ( !MuonD0CutEnable || fabs(CorrectedD0(muon)) < MuonD0Cut ) && ( !MuonZvCutEnable || fabs(muon->Zv()) < MuonZvCut ) && ( !NaxslEnable || muon->NAxSl() >= NaxslCut ) && ( !NstslEnable || muon->NStSl() >= NstslCut ) && ( !NtotslEnable || (muon->NAxSl() + muon->NStSl()) >= NtotslCut ) ){ cmp_Em->Fill(EmE); } if(( !MuonPtCutEnable || muon->Momentum()->Pt() > MuonPtCut ) && ( !MuonEmCutEnable || EmE < MuonEmCut ) && ( true || HadE < MuonHadCut ) && ( !MuonEmHadCutEnable || (EmE + HadE) > MuonEmHadCut) && ( !CmpDxCutEnable || fabs(muon->CmpDelX()) < CmpDxCut ) && ( !MuonIsoCutEnable || Isolation < MuonIsoCut ) && ( !MuonTIsoCutEnable || TIsolation < MuonTIsoCut ) && ( !MuonD0CutEnable || fabs(CorrectedD0(muon)) < MuonD0Cut ) && ( !MuonZvCutEnable || fabs(muon->Zv()) < MuonZvCut ) && ( !NaxslEnable || muon->NAxSl() >= NaxslCut ) && ( !NstslEnable || muon->NStSl() >= NstslCut ) && ( !NtotslEnable || (muon->NAxSl() + muon->NStSl()) >= NtotslCut ) ){ cmp_Had->Fill(HadE); } if(( !MuonPtCutEnable || muon->Momentum()->Pt() > MuonPtCut ) && ( !MuonEmCutEnable || EmE < MuonEmCut ) && ( !MuonHadCutEnable || HadE < MuonHadCut ) && ( true || (EmE + HadE) > MuonEmHadCut) && ( !CmpDxCutEnable || fabs(muon->CmpDelX()) < CmpDxCut ) && ( !MuonIsoCutEnable || Isolation < MuonIsoCut ) && ( !MuonTIsoCutEnable || TIsolation < MuonTIsoCut ) && ( !MuonD0CutEnable || fabs(CorrectedD0(muon)) < MuonD0Cut ) && ( !MuonZvCutEnable || fabs(muon->Zv()) < MuonZvCut ) && ( !NaxslEnable || muon->NAxSl() >= NaxslCut ) && ( !NstslEnable || muon->NStSl() >= NstslCut ) && ( !NtotslEnable || (muon->NAxSl() + muon->NStSl()) >= NtotslCut ) ){ cmp_HadEm->Fill(EmE + HadE); } if(( !MuonPtCutEnable || muon->Momentum()->Pt() > MuonPtCut ) && ( !MuonEmCutEnable || EmE < MuonEmCut ) && ( !MuonHadCutEnable || HadE < MuonHadCut ) && ( !MuonEmHadCutEnable || (EmE + HadE) > MuonEmHadCut) && ( true || fabs(muon->CmpDelX()) < CmpDxCut ) && ( !MuonIsoCutEnable || Isolation < MuonIsoCut ) && ( !MuonTIsoCutEnable || TIsolation < MuonTIsoCut ) && ( !MuonD0CutEnable || fabs(CorrectedD0(muon)) < MuonD0Cut ) && ( !MuonZvCutEnable || fabs(muon->Zv()) < MuonZvCut ) && ( !NaxslEnable || muon->NAxSl() >= NaxslCut ) && ( !NstslEnable || muon->NStSl() >= NstslCut ) && ( !NtotslEnable || (muon->NAxSl() + muon->NStSl()) >= NtotslCut ) ){ cmp_Dx->Fill(muon->CmpDelX()); } if(( !MuonPtCutEnable || muon->Momentum()->Pt() > MuonPtCut ) && ( !MuonEmCutEnable || EmE < MuonEmCut ) && ( !MuonHadCutEnable || HadE < MuonHadCut ) && ( !MuonEmHadCutEnable || (EmE + HadE) > MuonEmHadCut) && ( !CmpDxCutEnable || fabs(muon->CmpDelX()) < CmpDxCut ) && ( true || Isolation < MuonIsoCut ) && ( !MuonTIsoCutEnable || TIsolation < MuonTIsoCut ) && ( !MuonD0CutEnable || fabs(CorrectedD0(muon)) < MuonD0Cut ) && ( !MuonZvCutEnable || fabs(muon->Zv()) < MuonZvCut ) && ( !NaxslEnable || muon->NAxSl() >= NaxslCut ) && ( !NstslEnable || muon->NStSl() >= NstslCut ) && ( !NtotslEnable || (muon->NAxSl() + muon->NStSl()) >= NtotslCut ) ){ cmp_ISO->Fill(Isolation); } if(( !MuonPtCutEnable || muon->Momentum()->Pt() > MuonPtCut ) && ( !MuonEmCutEnable || EmE < MuonEmCut ) && ( !MuonHadCutEnable || HadE < MuonHadCut ) && ( !MuonEmHadCutEnable || (EmE + HadE) > MuonEmHadCut) && ( !CmpDxCutEnable || fabs(muon->CmpDelX()) < CmpDxCut ) && ( !MuonIsoCutEnable || Isolation < MuonIsoCut ) && ( true || TIsolation < MuonTIsoCut ) && ( !MuonD0CutEnable || fabs(CorrectedD0(muon)) < MuonD0Cut ) && ( !MuonZvCutEnable || fabs(muon->Zv()) < MuonZvCut ) && ( !NaxslEnable || muon->NAxSl() >= NaxslCut ) && ( !NstslEnable || muon->NStSl() >= NstslCut ) && ( !NtotslEnable || (muon->NAxSl() + muon->NStSl()) >= NtotslCut ) ){ cmp_TISO->Fill(TIsolation); } if(( !MuonPtCutEnable || muon->Momentum()->Pt() > MuonPtCut ) && ( !MuonEmCutEnable || EmE < MuonEmCut ) && ( !MuonHadCutEnable || HadE < MuonHadCut ) && ( !MuonEmHadCutEnable || (EmE + HadE) > MuonEmHadCut) && ( !CmpDxCutEnable || fabs(muon->CmpDelX()) < CmpDxCut ) && ( !MuonIsoCutEnable || Isolation < MuonIsoCut ) && ( !MuonTIsoCutEnable || TIsolation < MuonTIsoCut ) && ( true || fabs(CorrectedD0(muon)) < MuonD0Cut ) && ( !MuonZvCutEnable || fabs(muon->Zv()) < MuonZvCut ) && ( !NaxslEnable || muon->NAxSl() >= NaxslCut ) && ( !NstslEnable || muon->NStSl() >= NstslCut ) && ( !NtotslEnable || (muon->NAxSl() + muon->NStSl()) >= NtotslCut ) ){ cmp_d0->Fill(CorrectedD0(muon)); } if(( !MuonPtCutEnable || muon->Momentum()->Pt() > MuonPtCut ) && ( !MuonEmCutEnable || EmE < MuonEmCut ) && ( !MuonHadCutEnable || HadE < MuonHadCut ) && ( !MuonEmHadCutEnable || (EmE + HadE) > MuonEmHadCut) && ( !CmpDxCutEnable || fabs(muon->CmpDelX()) < CmpDxCut ) && ( !MuonIsoCutEnable || Isolation < MuonIsoCut ) && ( !MuonTIsoCutEnable || TIsolation < MuonTIsoCut ) && ( !MuonD0CutEnable || fabs(CorrectedD0(muon)) < MuonD0Cut ) && ( true || fabs(muon->Zv()) < MuonZvCut ) && ( !NaxslEnable || muon->NAxSl() >= NaxslCut ) && ( !NstslEnable || muon->NStSl() >= NstslCut ) && ( !NtotslEnable || (muon->NAxSl() + muon->NStSl()) >= NtotslCut ) ){ cmp_zv->Fill(muon->Zv()); } if(( !MuonPtCutEnable || muon->Momentum()->Pt() > MuonPtCut ) && ( !MuonEmCutEnable || EmE < MuonEmCut ) && ( !MuonHadCutEnable || HadE < MuonHadCut ) && ( !MuonEmHadCutEnable || (EmE + HadE) > MuonEmHadCut) && ( !CmpDxCutEnable || fabs(muon->CmpDelX()) < CmpDxCut ) && ( !MuonIsoCutEnable || Isolation < MuonIsoCut ) && ( !MuonTIsoCutEnable || TIsolation < MuonTIsoCut ) && ( !MuonD0CutEnable || fabs(CorrectedD0(muon)) < MuonD0Cut ) && ( !MuonZvCutEnable || fabs(muon->Zv()) < MuonZvCut ) && ( true || muon->NAxSl() >= NaxslCut ) && ( !NstslEnable || muon->NStSl() >= NstslCut ) && ( !NtotslEnable || (muon->NAxSl() + muon->NStSl()) >= NtotslCut ) ){ cmp_Ax->Fill(muon->NAxSl()); } if(( !MuonPtCutEnable || muon->Momentum()->Pt() > MuonPtCut ) && ( !MuonEmCutEnable || EmE < MuonEmCut ) && ( !MuonHadCutEnable || HadE < MuonHadCut ) && ( !MuonEmHadCutEnable || (EmE + HadE) > MuonEmHadCut) && ( !CmpDxCutEnable || fabs(muon->CmpDelX()) < CmpDxCut ) && ( !MuonIsoCutEnable || Isolation < MuonIsoCut ) && ( !MuonTIsoCutEnable || TIsolation < MuonTIsoCut ) && ( !MuonD0CutEnable || fabs(CorrectedD0(muon)) < MuonD0Cut ) && ( !MuonZvCutEnable || fabs(muon->Zv()) < MuonZvCut ) && ( !NaxslEnable || muon->NAxSl() >= NaxslCut ) && ( true || muon->NStSl() >= NstslCut ) && ( !NtotslEnable || (muon->NAxSl() + muon->NStSl()) >= NtotslCut ) ){ cmp_St->Fill(muon->NStSl()); } if(( !MuonPtCutEnable || muon->Momentum()->Pt() > MuonPtCut ) && ( !MuonEmCutEnable || EmE < MuonEmCut ) && ( !MuonHadCutEnable || HadE < MuonHadCut ) && ( !MuonEmHadCutEnable || (EmE + HadE) > MuonEmHadCut) && ( !CmpDxCutEnable || fabs(muon->CmpDelX()) < CmpDxCut ) && ( !MuonIsoCutEnable || Isolation < MuonIsoCut ) && ( !MuonTIsoCutEnable || TIsolation < MuonTIsoCut ) && ( !MuonD0CutEnable || fabs(CorrectedD0(muon)) < MuonD0Cut ) && ( !MuonZvCutEnable || fabs(muon->Zv()) < MuonZvCut ) && ( !NaxslEnable || muon->NAxSl() >= NaxslCut ) && ( !NstslEnable || muon->NStSl() >= NstslCut ) && ( true || (muon->NAxSl() + muon->NStSl()) >= NtotslCut ) ){ cmp_AxSt->Fill(muon->NAxSl() + muon->NStSl()); } } //cmp muons //cmx cut histos //=============== if(mudet==4){ if(( true || muon->Momentum()->Pt() > MuonPtCut ) && ( !MuonEmCutEnable || EmE < MuonEmCut ) && ( !MuonHadCutEnable || HadE < MuonHadCut ) && ( !MuonEmHadCutEnable || (EmE + HadE) > MuonEmHadCut) && ( !CmxDxCutEnable || fabs(muon->CmxDelX()) < CmxDxCut ) && ( !MuonIsoCutEnable || Isolation < MuonIsoCut ) && ( !MuonTIsoCutEnable || TIsolation < MuonTIsoCut ) && ( !MuonD0CutEnable || fabs(CorrectedD0(muon)) < MuonD0Cut ) && ( !MuonZvCutEnable || fabs(muon->Zv()) < MuonZvCut ) && ( !NaxslEnable || muon->NAxSl() >= NaxslCut ) && ( !NstslEnable || muon->NStSl() >= NstslCut ) && ( !NtotslEnable || (muon->NAxSl() + muon->NStSl()) >= NtotslCut ) ){ cmx_Pt->Fill(muon->Momentum()->Pt() ); } if(( !MuonPtCutEnable || muon->Momentum()->Pt() > MuonPtCut ) && ( true || EmE < MuonEmCut ) && ( !MuonHadCutEnable || HadE < MuonHadCut ) && ( !MuonEmHadCutEnable || (EmE + HadE) > MuonEmHadCut) && ( !CmxDxCutEnable || fabs(muon->CmxDelX()) < CmxDxCut ) && ( !MuonIsoCutEnable || Isolation < MuonIsoCut ) && ( !MuonTIsoCutEnable || TIsolation < MuonTIsoCut ) && ( !MuonD0CutEnable || fabs(CorrectedD0(muon)) < MuonD0Cut ) && ( !MuonZvCutEnable || fabs(muon->Zv()) < MuonZvCut ) && ( !NaxslEnable || muon->NAxSl() >= NaxslCut ) && ( !NstslEnable || muon->NStSl() >= NstslCut ) && ( !NtotslEnable || (muon->NAxSl() + muon->NStSl()) >= NtotslCut ) ){ cmx_Em->Fill(EmE); } if(( !MuonPtCutEnable || muon->Momentum()->Pt() > MuonPtCut ) && ( !MuonEmCutEnable || EmE < MuonEmCut ) && ( true || HadE < MuonHadCut ) && ( !MuonEmHadCutEnable || (EmE + HadE) > MuonEmHadCut) && ( !CmxDxCutEnable || fabs(muon->CmxDelX()) < CmxDxCut ) && ( !MuonIsoCutEnable || Isolation < MuonIsoCut ) && ( !MuonTIsoCutEnable || TIsolation < MuonTIsoCut ) && ( !MuonD0CutEnable || fabs(CorrectedD0(muon)) < MuonD0Cut ) && ( !MuonZvCutEnable || fabs(muon->Zv()) < MuonZvCut ) && ( !NaxslEnable || muon->NAxSl() >= NaxslCut ) && ( !NstslEnable || muon->NStSl() >= NstslCut ) && ( !NtotslEnable || (muon->NAxSl() + muon->NStSl()) >= NtotslCut ) ){ cmx_Had->Fill(HadE); } if(( !MuonPtCutEnable || muon->Momentum()->Pt() > MuonPtCut ) && ( !MuonEmCutEnable || EmE < MuonEmCut ) && ( !MuonHadCutEnable || HadE < MuonHadCut ) && ( true || (EmE + HadE) > MuonEmHadCut) && ( !CmxDxCutEnable || fabs(muon->CmxDelX()) < CmxDxCut ) && ( !MuonIsoCutEnable || Isolation < MuonIsoCut ) && ( !MuonTIsoCutEnable || TIsolation < MuonTIsoCut ) && ( !MuonD0CutEnable || fabs(CorrectedD0(muon)) < MuonD0Cut ) && ( !MuonZvCutEnable || fabs(muon->Zv()) < MuonZvCut ) && ( !NaxslEnable || muon->NAxSl() >= NaxslCut ) && ( !NstslEnable || muon->NStSl() >= NstslCut ) && ( !NtotslEnable || (muon->NAxSl() + muon->NStSl()) >= NtotslCut ) ){ cmx_HadEm->Fill(EmE + HadE); } if(( !MuonPtCutEnable || muon->Momentum()->Pt() > MuonPtCut ) && ( !MuonEmCutEnable || EmE < MuonEmCut ) && ( !MuonHadCutEnable || HadE < MuonHadCut ) && ( !MuonEmHadCutEnable || (EmE + HadE) > MuonEmHadCut) && ( true || fabs(muon->CmxDelX()) < CmxDxCut ) && ( !MuonIsoCutEnable || Isolation < MuonIsoCut ) && ( !MuonTIsoCutEnable || TIsolation < MuonTIsoCut ) && ( !MuonD0CutEnable || fabs(CorrectedD0(muon)) < MuonD0Cut ) && ( !MuonZvCutEnable || fabs(muon->Zv()) < MuonZvCut ) && ( !NaxslEnable || muon->NAxSl() >= NaxslCut ) && ( !NstslEnable || muon->NStSl() >= NstslCut ) && ( !NtotslEnable || (muon->NAxSl() + muon->NStSl()) >= NtotslCut ) ){ cmx_Dx->Fill(muon->CmxDelX()); } if(( !MuonPtCutEnable || muon->Momentum()->Pt() > MuonPtCut ) && ( !MuonEmCutEnable || EmE < MuonEmCut ) && ( !MuonHadCutEnable || HadE < MuonHadCut ) && ( !MuonEmHadCutEnable || (EmE + HadE) > MuonEmHadCut) && ( !CmxDxCutEnable || fabs(muon->CmxDelX()) < CmxDxCut ) && ( true || Isolation < MuonIsoCut ) && ( !MuonTIsoCutEnable || TIsolation < MuonTIsoCut ) && ( !MuonD0CutEnable || fabs(CorrectedD0(muon)) < MuonD0Cut ) && ( !MuonZvCutEnable || fabs(muon->Zv()) < MuonZvCut ) && ( !NaxslEnable || muon->NAxSl() >= NaxslCut ) && ( !NstslEnable || muon->NStSl() >= NstslCut ) && ( !NtotslEnable || (muon->NAxSl() + muon->NStSl()) >= NtotslCut ) ){ cmx_ISO->Fill(Isolation); } if(( !MuonPtCutEnable || muon->Momentum()->Pt() > MuonPtCut ) && ( !MuonEmCutEnable || EmE < MuonEmCut ) && ( !MuonHadCutEnable || HadE < MuonHadCut ) && ( !MuonEmHadCutEnable || (EmE + HadE) > MuonEmHadCut) && ( !CmxDxCutEnable || fabs(muon->CmxDelX()) < CmxDxCut ) && ( !MuonIsoCutEnable || Isolation < MuonIsoCut ) && ( true || TIsolation < MuonTIsoCut ) && ( !MuonD0CutEnable || fabs(CorrectedD0(muon)) < MuonD0Cut ) && ( !MuonZvCutEnable || fabs(muon->Zv()) < MuonZvCut ) && ( !NaxslEnable || muon->NAxSl() >= NaxslCut ) && ( !NstslEnable || muon->NStSl() >= NstslCut ) && ( !NtotslEnable || (muon->NAxSl() + muon->NStSl()) >= NtotslCut ) ){ cmx_TISO->Fill(TIsolation); } if(( !MuonPtCutEnable || muon->Momentum()->Pt() > MuonPtCut ) && ( !MuonEmCutEnable || EmE < MuonEmCut ) && ( !MuonHadCutEnable || HadE < MuonHadCut ) && ( !MuonEmHadCutEnable || (EmE + HadE) > MuonEmHadCut) && ( !CmxDxCutEnable || fabs(muon->CmxDelX()) < CmxDxCut ) && ( !MuonIsoCutEnable || Isolation < MuonIsoCut ) && ( !MuonTIsoCutEnable || TIsolation < MuonTIsoCut ) && ( true || fabs(CorrectedD0(muon)) < MuonD0Cut ) && ( !MuonZvCutEnable || fabs(muon->Zv()) < MuonZvCut ) && ( !NaxslEnable || muon->NAxSl() >= NaxslCut ) && ( !NstslEnable || muon->NStSl() >= NstslCut ) && ( !NtotslEnable || (muon->NAxSl() + muon->NStSl()) >= NtotslCut ) ){ cmx_d0->Fill(CorrectedD0(muon)); } if(( !MuonPtCutEnable || muon->Momentum()->Pt() > MuonPtCut ) && ( !MuonEmCutEnable || EmE < MuonEmCut ) && ( !MuonHadCutEnable || HadE < MuonHadCut ) && ( !MuonEmHadCutEnable || (EmE + HadE) > MuonEmHadCut) && ( !CmxDxCutEnable || fabs(muon->CmxDelX()) < CmxDxCut ) && ( !MuonIsoCutEnable || Isolation < MuonIsoCut ) && ( !MuonTIsoCutEnable || TIsolation < MuonTIsoCut ) && ( !MuonD0CutEnable || fabs(CorrectedD0(muon)) < MuonD0Cut ) && ( true || fabs(muon->Zv()) < MuonZvCut ) && ( !NaxslEnable || muon->NAxSl() >= NaxslCut ) && ( !NstslEnable || muon->NStSl() >= NstslCut ) && ( !NtotslEnable || (muon->NAxSl() + muon->NStSl()) >= NtotslCut ) ){ cmx_zv->Fill(muon->Zv()); } if(( !MuonPtCutEnable || muon->Momentum()->Pt() > MuonPtCut ) && ( !MuonEmCutEnable || EmE < MuonEmCut ) && ( !MuonHadCutEnable || HadE < MuonHadCut ) && ( !MuonEmHadCutEnable || (EmE + HadE) > MuonEmHadCut) && ( !CmxDxCutEnable || fabs(muon->CmxDelX()) < CmxDxCut ) && ( !MuonIsoCutEnable || Isolation < MuonIsoCut ) && ( !MuonTIsoCutEnable || TIsolation < MuonTIsoCut ) && ( !MuonD0CutEnable || fabs(CorrectedD0(muon)) < MuonD0Cut ) && ( !MuonZvCutEnable || fabs(muon->Zv()) < MuonZvCut ) && ( true || muon->NAxSl() >= NaxslCut ) && ( !NstslEnable || muon->NStSl() >= NstslCut ) && ( !NtotslEnable || (muon->NAxSl() + muon->NStSl()) >= NtotslCut ) ){ cmx_Ax->Fill(muon->NAxSl()); } if(( !MuonPtCutEnable || muon->Momentum()->Pt() > MuonPtCut ) && ( !MuonEmCutEnable || EmE < MuonEmCut ) && ( !MuonHadCutEnable || HadE < MuonHadCut ) && ( !MuonEmHadCutEnable || (EmE + HadE) > MuonEmHadCut) && ( !CmxDxCutEnable || fabs(muon->CmxDelX()) < CmxDxCut ) && ( !MuonIsoCutEnable || Isolation < MuonIsoCut ) && ( !MuonTIsoCutEnable || TIsolation < MuonTIsoCut ) && ( !MuonD0CutEnable || fabs(CorrectedD0(muon)) < MuonD0Cut ) && ( !MuonZvCutEnable || fabs(muon->Zv()) < MuonZvCut ) && ( !NaxslEnable || muon->NAxSl() >= NaxslCut ) && ( true || muon->NStSl() >= NstslCut ) && ( !NtotslEnable || (muon->NAxSl() + muon->NStSl()) >= NtotslCut ) ){ cmx_St->Fill(muon->NStSl()); } if(( !MuonPtCutEnable || muon->Momentum()->Pt() > MuonPtCut ) && ( !MuonEmCutEnable || EmE < MuonEmCut ) && ( !MuonHadCutEnable || HadE < MuonHadCut ) && ( !MuonEmHadCutEnable || (EmE + HadE) > MuonEmHadCut) && ( !CmxDxCutEnable || fabs(muon->CmxDelX()) < CmxDxCut ) && ( !MuonIsoCutEnable || Isolation < MuonIsoCut ) && ( !MuonTIsoCutEnable || TIsolation < MuonTIsoCut ) && ( !MuonD0CutEnable || fabs(CorrectedD0(muon)) < MuonD0Cut ) && ( !MuonZvCutEnable || fabs(muon->Zv()) < MuonZvCut ) && ( !NaxslEnable || muon->NAxSl() >= NaxslCut ) && ( !NstslEnable || muon->NStSl() >= NstslCut ) && ( true || (muon->NAxSl() + muon->NStSl()) >= NtotslCut ) ){ cmx_AxSt->Fill(muon->NAxSl() + muon->NStSl()); } } //cmx muons // // cmu && cmp muons //=================== if(mudet==3){ setMuonPtCutEnable(false); if(( true || muon->Momentum()->Pt() > MuonPtCut ) && ( !MuonEmCutEnable || EmE < MuonEmCut ) && ( !MuonHadCutEnable || HadE < MuonHadCut ) && ( !MuonEmHadCutEnable || (EmE + HadE) > MuonEmHadCut) && ( !MuonD0CutEnable || fabs(CorrectedD0(muon)) < MuonD0Cut ) && ( !MuonZvCutEnable || fabs(muon->Zv()) < MuonZvCut ) && ( !MuonIsoCutEnable || Isolation < MuonIsoCut ) && ( !MuonTIsoCutEnable || TIsolation < MuonTIsoCut ) && ( !NaxslEnable || muon->NAxSl() >= NaxslCut ) && ( !NstslEnable || muon->NStSl() >= NstslCut ) && ( !NtotslEnable || (muon->NAxSl() + muon->NStSl()) >= NtotslCut ) ){ if( ((!CmpDxCutEnable) || (fabs(muon->CmpDelX()) < CmpDxCut)) && ((!CmuDxCutEnable) || (fabs(muon->CmuDelX()) < CmuDxCut)) ){ cmucmp_Pt->Fill(muon->Momentum()->Pt() ); } } if(( !MuonPtCutEnable || muon->Momentum()->Pt() > MuonPtCut ) && ( true || EmE < MuonEmCut ) && ( !MuonHadCutEnable || HadE < MuonHadCut ) && ( !MuonEmHadCutEnable || (EmE + HadE) > MuonEmHadCut) && ( !MuonD0CutEnable || fabs(CorrectedD0(muon)) < MuonD0Cut ) && ( !MuonZvCutEnable || fabs(muon->Zv()) < MuonZvCut ) && ( !MuonIsoCutEnable || Isolation < MuonIsoCut ) && ( !MuonTIsoCutEnable || TIsolation < MuonTIsoCut ) && ( !NaxslEnable || muon->NAxSl() >= NaxslCut ) && ( !NstslEnable || muon->NStSl() >= NstslCut ) && ( !NtotslEnable || (muon->NAxSl() + muon->NStSl()) >= NtotslCut ) ){ if( ((!CmpDxCutEnable) || (fabs(muon->CmpDelX()) < CmpDxCut)) && ((!CmuDxCutEnable) || (fabs(muon->CmuDelX()) < CmuDxCut)) ){ cmucmp_Em->Fill(EmE); } } if(( !MuonPtCutEnable || muon->Momentum()->Pt() > MuonPtCut ) && ( !MuonEmCutEnable || EmE < MuonEmCut ) && ( true || HadE < MuonHadCut ) && ( !MuonEmHadCutEnable || (EmE + HadE) > MuonEmHadCut) && ( !MuonD0CutEnable || fabs(CorrectedD0(muon)) < MuonD0Cut ) && ( !MuonZvCutEnable || fabs(muon->Zv()) < MuonZvCut ) && ( !MuonIsoCutEnable || Isolation < MuonIsoCut ) && ( !MuonTIsoCutEnable || TIsolation < MuonTIsoCut ) && ( !NaxslEnable || muon->NAxSl() >= NaxslCut ) && ( !NstslEnable || muon->NStSl() >= NstslCut ) && ( !NtotslEnable || (muon->NAxSl() + muon->NStSl()) >= NtotslCut ) ){ if( ((!CmpDxCutEnable) || (fabs(muon->CmpDelX()) < CmpDxCut)) && ((!CmuDxCutEnable) || (fabs(muon->CmuDelX()) < CmuDxCut)) ){ cmucmp_Had->Fill(HadE); } } if(( !MuonPtCutEnable || muon->Momentum()->Pt() > MuonPtCut ) && ( !MuonEmCutEnable || EmE < MuonEmCut ) && ( !MuonHadCutEnable || HadE < MuonHadCut ) && ( true || (EmE + HadE) > MuonEmHadCut) && ( !MuonD0CutEnable || fabs(CorrectedD0(muon)) < MuonD0Cut ) && ( !MuonZvCutEnable || fabs(muon->Zv()) < MuonZvCut ) && ( !MuonIsoCutEnable || Isolation < MuonIsoCut ) && ( !MuonTIsoCutEnable || TIsolation < MuonTIsoCut ) && ( !NaxslEnable || muon->NAxSl() >= NaxslCut ) && ( !NstslEnable || muon->NStSl() >= NstslCut ) && ( !NtotslEnable || (muon->NAxSl() + muon->NStSl()) >= NtotslCut ) ){ if( ((!CmpDxCutEnable) || (fabs(muon->CmpDelX()) < CmpDxCut)) && ((!CmuDxCutEnable) || (fabs(muon->CmuDelX()) < CmuDxCut)) ){ cmucmp_HadEm->Fill(EmE + HadE); } } if(( !MuonPtCutEnable || muon->Momentum()->Pt() > MuonPtCut ) && ( !MuonEmCutEnable || EmE < MuonEmCut ) && ( !MuonHadCutEnable || HadE < MuonHadCut ) && ( !MuonEmHadCutEnable || (EmE + HadE) > MuonEmHadCut) && ( !MuonD0CutEnable || fabs(CorrectedD0(muon)) < MuonD0Cut ) && ( !MuonZvCutEnable || fabs(muon->Zv()) < MuonZvCut ) && ( !MuonIsoCutEnable || Isolation < MuonIsoCut ) && ( !MuonTIsoCutEnable || TIsolation < MuonTIsoCut ) && ( !NaxslEnable || muon->NAxSl() >= NaxslCut ) && ( !NstslEnable || muon->NStSl() >= NstslCut ) && ( !NtotslEnable || (muon->NAxSl() + muon->NStSl()) >= NtotslCut ) ){ if( ((!CmpDxCutEnable) || (fabs(muon->CmpDelX()) < CmpDxCut)) && ((!CmuDxCutEnable) || (fabs(muon->CmuDelX()) < CmuDxCut)) ){ cmucmp_Dx->Fill(muon->CmuDelX()); } } if(( !MuonPtCutEnable || muon->Momentum()->Pt() > MuonPtCut ) && ( !MuonEmCutEnable || EmE < MuonEmCut ) && ( !MuonHadCutEnable || HadE < MuonHadCut ) && ( !MuonEmHadCutEnable || (EmE + HadE) > MuonEmHadCut) && ( !MuonD0CutEnable || fabs(CorrectedD0(muon)) < MuonD0Cut ) && ( !MuonZvCutEnable || fabs(muon->Zv()) < MuonZvCut ) && ( true || Isolation < MuonIsoCut ) && ( !MuonTIsoCutEnable || TIsolation < MuonTIsoCut ) && ( !NaxslEnable || muon->NAxSl() >= NaxslCut ) && ( !NstslEnable || muon->NStSl() >= NstslCut ) && ( !NtotslEnable || (muon->NAxSl() + muon->NStSl()) >= NtotslCut ) ){ if( ((!CmpDxCutEnable) || (fabs(muon->CmpDelX()) < CmpDxCut)) && ((!CmuDxCutEnable) || (fabs(muon->CmuDelX()) < CmuDxCut)) ){ cmucmp_ISO->Fill(Isolation); } } if(( !MuonPtCutEnable || muon->Momentum()->Pt() > MuonPtCut ) && ( !MuonEmCutEnable || EmE < MuonEmCut ) && ( !MuonHadCutEnable || HadE < MuonHadCut ) && ( !MuonEmHadCutEnable || (EmE + HadE) > MuonEmHadCut) && ( !MuonD0CutEnable || fabs(CorrectedD0(muon)) < MuonD0Cut ) && ( !MuonZvCutEnable || fabs(muon->Zv()) < MuonZvCut ) && ( !MuonIsoCutEnable || Isolation < MuonIsoCut ) && ( true || TIsolation < MuonTIsoCut ) && ( !NaxslEnable || muon->NAxSl() >= NaxslCut ) && ( !NstslEnable || muon->NStSl() >= NstslCut ) && ( !NtotslEnable || (muon->NAxSl() + muon->NStSl()) >= NtotslCut ) ){ if( ((!CmpDxCutEnable) || (fabs(muon->CmpDelX()) < CmpDxCut)) && ((!CmuDxCutEnable) || (fabs(muon->CmuDelX()) < CmuDxCut)) ){ cmucmp_TISO->Fill(TIsolation); } } if(( !MuonPtCutEnable || muon->Momentum()->Pt() > MuonPtCut ) && ( !MuonEmCutEnable || EmE < MuonEmCut ) && ( !MuonHadCutEnable || HadE < MuonHadCut ) && ( !MuonEmHadCutEnable || (EmE + HadE) > MuonEmHadCut) && ( true || fabs(CorrectedD0(muon)) < MuonD0Cut ) && ( !MuonZvCutEnable || fabs(muon->Zv()) < MuonZvCut ) && ( !MuonIsoCutEnable || Isolation < MuonIsoCut ) && ( !MuonTIsoCutEnable || TIsolation < MuonTIsoCut ) && ( !NaxslEnable || muon->NAxSl() >= NaxslCut ) && ( !NstslEnable || muon->NStSl() >= NstslCut ) && ( !NtotslEnable || (muon->NAxSl() + muon->NStSl()) >= NtotslCut ) ){ if( ((!CmpDxCutEnable) || (fabs(muon->CmpDelX()) < CmpDxCut)) && ((!CmuDxCutEnable) || (fabs(muon->CmuDelX()) < CmuDxCut)) ){ cmucmp_d0->Fill(CorrectedD0(muon)); } } if(( !MuonPtCutEnable || muon->Momentum()->Pt() > MuonPtCut ) && ( !MuonEmCutEnable || EmE < MuonEmCut ) && ( !MuonHadCutEnable || HadE < MuonHadCut ) && ( !MuonEmHadCutEnable || (EmE + HadE) > MuonEmHadCut) && ( !MuonD0CutEnable || fabs(CorrectedD0(muon)) < MuonD0Cut ) && ( true || fabs(muon->Zv()) < MuonZvCut ) && ( !MuonIsoCutEnable || Isolation < MuonIsoCut ) && ( !MuonTIsoCutEnable || TIsolation < MuonTIsoCut ) && ( !NaxslEnable || muon->NAxSl() >= NaxslCut ) && ( !NstslEnable || muon->NStSl() >= NstslCut ) && ( !NtotslEnable || (muon->NAxSl() + muon->NStSl()) >= NtotslCut ) ){ if( ((!CmpDxCutEnable) || (fabs(muon->CmpDelX()) < CmpDxCut)) && ((!CmuDxCutEnable) || (fabs(muon->CmuDelX()) < CmuDxCut)) ){ cmucmp_zv->Fill(muon->Zv()); } } if(( !MuonPtCutEnable || muon->Momentum()->Pt() > MuonPtCut ) && ( !MuonEmCutEnable || EmE < MuonEmCut ) && ( !MuonHadCutEnable || HadE < MuonHadCut ) && ( !MuonEmHadCutEnable || (EmE + HadE) > MuonEmHadCut) && ( !MuonD0CutEnable || fabs(CorrectedD0(muon)) < MuonD0Cut ) && ( !MuonZvCutEnable || fabs(muon->Zv()) < MuonZvCut ) && ( !MuonIsoCutEnable || Isolation < MuonIsoCut ) && ( !MuonTIsoCutEnable || TIsolation < MuonTIsoCut ) && ( true || muon->NAxSl() >= NaxslCut ) && ( !NstslEnable || muon->NStSl() >= NstslCut ) && ( !NtotslEnable || (muon->NAxSl() + muon->NStSl()) >= NtotslCut ) ){ if( ((!CmpDxCutEnable) || (fabs(muon->CmpDelX()) < CmpDxCut)) && ((!CmuDxCutEnable) || (fabs(muon->CmuDelX()) < CmuDxCut)) ){ cmucmp_Ax->Fill(muon->NAxSl()); } } if(( !MuonPtCutEnable || muon->Momentum()->Pt() > MuonPtCut ) && ( !MuonEmCutEnable || EmE < MuonEmCut ) && ( !MuonHadCutEnable || HadE < MuonHadCut ) && ( !MuonEmHadCutEnable || (EmE + HadE) > MuonEmHadCut) && ( !MuonD0CutEnable || fabs(CorrectedD0(muon)) < MuonD0Cut ) && ( !MuonZvCutEnable || fabs(muon->Zv()) < MuonZvCut ) && ( !MuonIsoCutEnable || Isolation < MuonIsoCut ) && ( !MuonTIsoCutEnable || TIsolation < MuonTIsoCut ) && ( !NaxslEnable || muon->NAxSl() >= NaxslCut ) && ( true || muon->NStSl() >= NstslCut ) && ( !NtotslEnable || (muon->NAxSl() + muon->NStSl()) >= NtotslCut ) ){ if( ((!CmpDxCutEnable) || (fabs(muon->CmpDelX()) < CmpDxCut)) && ((!CmuDxCutEnable) || (fabs(muon->CmuDelX()) < CmuDxCut)) ){ cmucmp_St->Fill(muon->NStSl()); } } if(( !MuonPtCutEnable || muon->Momentum()->Pt() > MuonPtCut ) && ( !MuonEmCutEnable || EmE < MuonEmCut ) && ( !MuonHadCutEnable || HadE < MuonHadCut ) && ( !MuonEmHadCutEnable || (EmE + HadE) > MuonEmHadCut) && ( !MuonD0CutEnable || fabs(CorrectedD0(muon)) < MuonD0Cut ) && ( !MuonZvCutEnable || fabs(muon->Zv()) < MuonZvCut ) && ( !MuonIsoCutEnable || Isolation < MuonIsoCut ) && ( !MuonTIsoCutEnable || TIsolation < MuonTIsoCut ) && ( !NaxslEnable || muon->NAxSl() >= NaxslCut ) && ( !NstslEnable || muon->NStSl() >= NstslCut ) && ( true || (muon->NAxSl() + muon->NStSl()) >= NtotslCut ) ){ if( ((!CmpDxCutEnable) || (fabs(muon->CmpDelX()) < CmpDxCut)) && ((!CmuDxCutEnable) || (fabs(muon->CmuDelX()) < CmuDxCut)) ){ cmucmp_AxSt->Fill(muon->NAxSl() + muon->NStSl()); } } } // cmu && cmp } // if IsHistEnable true //======================================== } // loop over muons Nevents++; if (ientry%1000 == 0) printf("\n Events processed = %d, ientry = %d \n",Nevents,ientry); return 0; } // event() method //================================== // Display() //================================== void TMuoCand::Display(bool ENABLE) { printf("----- Display(): ---- %s\n",GetName()); if(ENABLE){ char name[] = "TMuoCand_detector"; char title[] = "det"; TCanvas* testC = (TCanvas*) gROOT->FindObject(name); testC = new TCanvas(name, title,10,10,400,400); testC->Divide(1,1); testC->cd(1); DetCode->SetFillColor(5); DetCode->Draw(); testC->Modified(); testC->Update(); for (int i=2; i <= 10 ; i++) std::cout << " Detector code " << (i-1) << " = " << DetCode->GetBinContent(i) << std::endl; // cmu nocut canvas //================== char ncmu_name[] = "CMU_TMuoCand_nocut_c1"; char ncmu_title[] = "cmu_TMuoCand_nocut_c1"; int colour = 5; // yellow //nCPt->SetFillColor(colour); TCanvas* ncmu_ = (TCanvas*) gROOT->FindObject(ncmu_name); if (! ncmu_) { ncmu_ = new TCanvas(ncmu_title, ncmu_title,10,10,700,700); ncmu_->Divide(3,4); ncmu_->SetFillColor(33); ncmu_Pt->SetFillColor(colour); ncmu_Pt->SetXTitle("transverse momentum (GeV/c)"); ncmu_Em->SetFillColor(colour); ncmu_Em->SetXTitle("Em Energy (GeV)"); ncmu_Had->SetFillColor(colour); ncmu_Had->SetXTitle("Hadronic Energy (GeV)"); ncmu_HadEm->SetFillColor(colour); ncmu_HadEm->SetXTitle("Hadronic + Em Energy (GeV)"); ncmu_ISO->SetFillColor(colour); ncmu_ISO->SetXTitle("Isolation"); ncmu_TISO->SetFillColor(colour); ncmu_TISO->SetXTitle("Track Isolation"); ncmu_d0->SetFillColor(colour); ncmu_d0->SetXTitle("Impact Parameter (cm)"); ncmu_zv->SetFillColor(colour); ncmu_zv->SetXTitle("event z vertex (cm)"); ncmu_Ax->SetFillColor(colour); ncmu_Ax->SetXTitle("Number of Axial Superlayers"); ncmu_St->SetFillColor(colour); ncmu_St->SetXTitle("Number of Stereo Superlayers"); ncmu_AxSt->SetFillColor(colour); ncmu_AxSt->SetXTitle("Number of Axial + Stereo Superlayers"); ncmu_Dx->SetXTitle("track stub r-phi (cm)"); ncmu_Dx->SetFillColor(colour); ncmu_->cd(1); ncmu_Pt->Draw(); ncmu_->cd(2); ncmu_Em->Draw(); ncmu_->cd(3); ncmu_Had->Draw(); ncmu_->cd(4); ncmu_HadEm->Draw(); ncmu_->cd(5); ncmu_ISO->Draw(); ncmu_->cd(6); ncmu_TISO->Draw(); ncmu_->cd(7); ncmu_d0->Draw(); ncmu_->cd(8); ncmu_zv->Draw(); ncmu_->cd(9); ncmu_Ax->Draw(); ncmu_->cd(10); ncmu_St->Draw(); ncmu_->cd(11); ncmu_AxSt->Draw(); ncmu_->cd(12); ncmu_Dx->Draw(); ncmu_->Modified(); ncmu_->Update(); } //================== // cmp nocut canvas //================== char ncmp_name[] = "CMP_TMuoCand_nocut_c1"; char ncmp_title[] = "cmp_TMuoCand_nocut_c1"; colour = 5; // yellow TCanvas* ncmp_ = (TCanvas*) gROOT->FindObject(ncmp_name); if (! ncmp_) { ncmp_ = new TCanvas(ncmp_title, ncmp_title,20,20,700,700); ncmp_->Divide(3,4); ncmp_->SetFillColor(33); ncmp_Pt->SetFillColor(colour); ncmp_Em->SetFillColor(colour); ncmp_Had->SetFillColor(colour); ncmp_HadEm->SetFillColor(colour); ncmp_ISO->SetFillColor(colour); ncmp_TISO->SetFillColor(colour); ncmp_d0->SetFillColor(colour); ncmp_zv->SetFillColor(colour); ncmp_Ax->SetFillColor(colour); ncmp_St->SetFillColor(colour); ncmp_AxSt->SetFillColor(colour); ncmp_Dx->SetFillColor(colour); ncmp_->cd(1); ncmp_Pt->Draw(); ncmp_->cd(2); ncmp_Em->Draw(); ncmp_->cd(3); ncmp_Had->Draw(); ncmp_->cd(4); ncmp_HadEm->Draw(); ncmp_->cd(5); ncmp_ISO->Draw(); ncmp_->cd(6); ncmp_TISO->Draw(); ncmp_->cd(7); ncmp_d0->Draw(); ncmp_->cd(8); ncmp_zv->Draw(); ncmp_->cd(9); ncmp_Ax->Draw(); ncmp_->cd(10); ncmp_St->Draw(); ncmp_->cd(11); ncmp_AxSt->Draw(); ncmp_->cd(12); ncmp_Dx->Draw(); ncmp_->Modified(); ncmp_->Update(); } //================== //================== // cmucmp nocut canvas //================== char ncmucmp_name[] = "CMUCMP_TMuoCand_nocut_c1"; char ncmucmp_title[] = "cmucmp_TMuoCand_nocut_c1"; colour = 5; // yellow //nCPt->SetFillColor(colour); TCanvas* ncmucmp_ = (TCanvas*) gROOT->FindObject(ncmucmp_name); if (! ncmucmp_) { ncmucmp_ = new TCanvas(ncmucmp_title, ncmucmp_title,30,30,700,700); ncmucmp_->Divide(3,4); ncmucmp_->SetFillColor(33); ncmucmp_Pt->SetFillColor(colour); ncmucmp_Em->SetFillColor(colour); ncmucmp_Had->SetFillColor(colour); ncmucmp_HadEm->SetFillColor(colour); ncmucmp_ISO->SetFillColor(colour); ncmucmp_TISO->SetFillColor(colour); ncmucmp_d0->SetFillColor(colour); ncmucmp_zv->SetFillColor(colour); ncmucmp_Ax->SetFillColor(colour); ncmucmp_St->SetFillColor(colour); ncmucmp_AxSt->SetFillColor(colour); ncmucmp_Dx->SetFillColor(colour); ncmucmp_->cd(1); ncmucmp_Pt->Draw(); ncmucmp_->cd(2); ncmucmp_Em->Draw(); ncmucmp_->cd(3); ncmucmp_Had->Draw(); ncmucmp_->cd(4); ncmucmp_HadEm->Draw(); ncmucmp_->cd(5); ncmucmp_ISO->Draw(); ncmucmp_->cd(6); ncmucmp_TISO->Draw(); ncmucmp_->cd(7); ncmucmp_d0->Draw(); ncmucmp_->cd(8); ncmucmp_zv->Draw(); ncmucmp_->cd(9); ncmucmp_Ax->Draw(); ncmucmp_->cd(10); ncmucmp_St->Draw(); ncmucmp_->cd(11); ncmucmp_AxSt->Draw(); ncmucmp_->cd(12); ncmucmp_Dx->Draw(); ncmucmp_->Modified(); ncmucmp_->Update(); } //================== //================== // cmx nocut canvas //================== char ncmx_name[] = "CMX_TMuoCand_nocut_c1"; char ncmx_title[] = "cmx_TMuoCand_nocut_c1"; colour = 5; // yellow //nCPt->SetFillColor(colour); TCanvas* ncmx_ = (TCanvas*) gROOT->FindObject(ncmx_name); if (! ncmx_) { ncmx_ = new TCanvas(ncmx_title, ncmx_title,40,40,700,700); ncmx_->Divide(3,4); ncmx_->SetFillColor(33); ncmx_Pt->SetFillColor(colour); ncmx_Em->SetFillColor(colour); ncmx_Had->SetFillColor(colour); ncmx_HadEm->SetFillColor(colour); ncmx_ISO->SetFillColor(colour); ncmx_TISO->SetFillColor(colour); ncmx_d0->SetFillColor(colour); ncmx_zv->SetFillColor(colour); ncmx_Ax->SetFillColor(colour); ncmx_St->SetFillColor(colour); ncmx_AxSt->SetFillColor(colour); ncmx_Dx->SetFillColor(colour); ncmx_->cd(1); ncmx_Pt->Draw(); ncmx_->cd(2); ncmx_Em->Draw(); ncmx_->cd(3); ncmx_Had->Draw(); ncmx_->cd(4); ncmx_HadEm->Draw(); ncmx_->cd(5); ncmx_ISO->Draw(); ncmx_->cd(6); ncmx_TISO->Draw(); ncmx_->cd(7); ncmx_d0->Draw(); ncmx_->cd(8); ncmx_zv->Draw(); ncmx_->cd(9); ncmx_Ax->Draw(); ncmx_->cd(10); ncmx_St->Draw(); ncmx_->cd(11); ncmx_AxSt->Draw(); ncmx_->cd(12); ncmx_Dx->Draw(); ncmx_->Modified(); ncmx_->Update(); } //================== //***************************************************************************** // Cut samples: //***************************************************************************** // cmu cut canvas //================== char cmu_name[] = "CMU_TMuoCand_cut_c1"; char cmu_title[] = "cmu_TMuoCand_cut_c1"; colour = 5; // yellow //nCPt->SetFillColor(colour); TCanvas* cmu_ = (TCanvas*) gROOT->FindObject(cmu_name); if (! cmu_) { cmu_ = new TCanvas(cmu_title, cmu_title,50,50,700,700); cmu_->Divide(3,4); cmu_->cd(1); cmu_Pt->Draw(); cmu_->cd(2); cmu_Em->Draw(); cmu_->cd(3); cmu_Had->Draw(); cmu_->cd(4); cmu_HadEm->Draw(); cmu_->cd(5); cmu_ISO->Draw(); cmu_->cd(6); cmu_TISO->Draw(); cmu_->cd(7); cmu_d0->Draw(); cmu_->cd(8); cmu_zv->Draw(); cmu_->cd(9); cmu_Ax->Draw(); cmu_->cd(10); cmu_St->Draw(); cmu_->cd(11); cmu_AxSt->Draw(); cmu_->cd(12); cmu_Dx->Draw(); cmu_->Modified(); cmu_->Update(); } //================== // cmp cut canvas //================== char cmp_name[] = "CMP_TMuoCand_cut_c1"; char cmp_title[] = "cmp_TMuoCand_cut_c1"; colour = 5; // yellow //nCPt->SetFillColor(colour); TCanvas* cmp_ = (TCanvas*) gROOT->FindObject(cmp_name); if (! cmp_) { cmp_ = new TCanvas(cmp_title, cmp_title,60,60,700,700); cmp_->Divide(3,4); cmp_->cd(1); cmp_Pt->Draw(); cmp_->cd(2); cmp_Em->Draw(); cmp_->cd(3); cmp_Had->Draw(); cmp_->cd(4); cmp_HadEm->Draw(); cmp_->cd(5); cmp_ISO->Draw(); cmp_->cd(6); cmp_TISO->Draw(); cmp_->cd(7); cmp_d0->Draw(); cmp_->cd(8); cmp_zv->Draw(); cmp_->cd(9); cmp_Ax->Draw(); cmp_->cd(10); cmp_St->Draw(); cmp_->cd(11); cmp_AxSt->Draw(); cmp_->cd(12); cmp_Dx->Draw(); cmp_->Modified(); cmp_->Update(); } //================== //================== // cmucmp cut canvas //================== char cmucmp_name[] = "CMUCMP_TMuoCand_cut_c1"; char cmucmp_title[] = "cmucmp_TMuoCand_cut_c1"; colour = 5; // yellow //nCPt->SetFillColor(colour); TCanvas* cmucmp_ = (TCanvas*) gROOT->FindObject(cmucmp_name); if (! cmucmp_) { cmucmp_ = new TCanvas(cmucmp_title, cmucmp_title,70,70,700,700); cmucmp_->Divide(3,4); cmucmp_->cd(1); cmucmp_Pt->Draw(); cmucmp_->cd(2); cmucmp_Em->Draw(); cmucmp_->cd(3); cmucmp_Had->Draw(); cmucmp_->cd(4); cmucmp_HadEm->Draw(); cmucmp_->cd(5); cmucmp_ISO->Draw(); cmucmp_->cd(6); cmucmp_TISO->Draw(); cmucmp_->cd(7); cmucmp_d0->Draw(); cmucmp_->cd(8); cmucmp_zv->Draw(); cmucmp_->cd(9); cmucmp_Ax->Draw(); cmucmp_->cd(10); cmucmp_St->Draw(); cmucmp_->cd(11); cmucmp_AxSt->Draw(); cmucmp_->cd(12); cmucmp_Dx->Draw(); cmucmp_->Modified(); cmucmp_->Update(); } //================== //================== // cmx cut canvas //================== char cmx_name[] = "CMX_TMuoCand_cut_c1"; char cmx_title[] = "cmx_TMuoCand_cut_c1"; colour = 5; // yellow //nCPt->SetFillColor(colour); TCanvas* cmx_ = (TCanvas*) gROOT->FindObject(cmx_name); if (! cmx_) { cmx_ = new TCanvas(cmx_title, cmx_title,80,80,700,700); cmx_->Divide(3,4); cmx_->cd(1); cmx_Pt->Draw(); cmx_->cd(2); cmx_Em->Draw(); cmx_->cd(3); cmx_Had->Draw(); cmx_->cd(4); cmx_HadEm->Draw(); cmx_->cd(5); cmx_ISO->Draw(); cmx_->cd(6); cmx_TISO->Draw(); cmx_->cd(7); cmx_d0->Draw(); cmx_->cd(8); cmx_zv->Draw(); cmx_->cd(9); cmx_Ax->Draw(); cmx_->cd(10); cmx_St->Draw(); cmx_->cd(11); cmx_AxSt->Draw(); cmx_->cd(12); cmx_Dx->Draw(); cmx_->Modified(); cmx_->Update(); } //================== //***************************************************************************** } // DISPLAY ENABLE } // display method //================================== // Count() Muons //================================== void TMuoCand::Count() { printf("----- Muon Count Summary ---- %s\n",GetName()); std::cout << " Total events " << Nevents << std::endl; std::cout << " Total Muons " << NMu << std::endl; std::cout << " Ncmu only " << Ncmu << std::endl; std::cout << " Ncmp only " << Ncmp << std::endl; std::cout << " Ncmu AND Ncmp " << Ncmucmp << std::endl; std::cout << " Ncmx " << Ncmx << std::endl; std::cout << " Good cmu, cmp, and cmx Muons " << NgoodMuontot << endl << std::endl; } /** * Calculates the x,y,z position of a charged track passing through the * COT, at a given radius from the origin. * @param radius is the radius from x=0,y=0 to determine the x,y,z * @param curvature is the half curvature for the charged track * @param PhiZeroIn is the phi at the origin for the charged track * @param cotan is the cot(theta) for the charged track * @param D_O is the impact parameter for the charged track * @param Z_O is the z position at the distance of closest approach * to x=0,y=0 * @return Returns xyz position in a 3-element array. */ void TMuoCand::track_Prop(float &radius, float &curvature, float &PhiZeroIn, float &cotan, float &D_0, float &Z_0, float* xyz) { float epsilon = 1.0; // epsilon is outgoing so is 1 track_Prop(epsilon,radius,curvature,PhiZeroIn,cotan,D_0,Z_0,xyz); } /** * Calculates the x,y,z position of a charged track passing through the * COT, at a given radius from the origin. * @param radius is the radius from x=0,y=0 to determine the x,y,z * @param curvature is the half curvature for the charged track * @param PhiZeroIn is the phi at the origin for the charged track * @param cotan is the cot(theta) for the charged track * @param D_O is the impact parameter for the charged track * @param Z_O is the z position at the distance of closest approach * to x=0,y=0 * @return Returns xyz position in a 3-element array. */ void TMuoCand::track_Prop(float &epsilon, float &radius, float &curvature, float &PhiZeroIn, float &cotan, float &D_O, float &Z_0, float* xyz) { // // float xyz[] = new float[3]; // // calculate some constants on entry // float epsilon = 1.0; // epsilon is outgoing so is 1 float B = curvature* sqrt((radius*radius-D_O*D_O)/(1.0+2.0*curvature*D_O)); // We have to fix this //if (B*B>=1.0) printf("ERROR sqrt of negative number in track_prop -> rad %f d0 %f \n",radius,D_O); float U_O = cos(PhiZeroIn); float V_O = sin(PhiZeroIn); float rho = 2.0*curvature; float XO = -D_O*V_O; float YO = D_O*U_O; float cosPhiZero = cos(PhiZeroIn); float sinPhiZero = sin(PhiZeroIn); float Radius_of_Arc = fabs(1.0/(2*curvature)); // float X_C = -(1/(2*curvature)+D_O)*sinPhiZero; // X_C calculated here // float Y_C = (1/(2*curvature)+D_O)*cosPhiZero; // Y_C calculated here // if(B*B<1.0){ xyz[0] = XO + (U_O*2.0*epsilon*B*sqrt(1.0-B*B)-V_O*2.0*B*B)/rho; xyz[1] = YO + (V_O*2.0*epsilon*B*sqrt(1.0-B*B)+U_O*2.0*B*B)/rho; xyz[2] = Z_0 + ((cotan)*asin(B))/curvature; } else { xyz[0] = 0.0; xyz[1] = 0.0; xyz[2] = 0.0; } } //------------------------------------------------------------------------ // This function returns the phi value in 0 to 2*PI range. //------------------------------------------------------------------------ float TMuoCand::cdfphi(const float &phi) { Float_t pi = 3.141592653; Float_t twopi = 2*pi; Float_t myphi = phi; if (myphi < 0) { while (myphi < 0) { myphi = myphi + twopi; } } else { while (myphi > twopi) { myphi = myphi - twopi; } } return myphi; } //------------------------------------------------------------------------ // This function returns the detector eta from y and z detector coor. //------------------------------------------------------------------------ Float_t TMuoCand::cdfeta(const float &Y, const float &Z) { Float_t pi = 3.141592653; Float_t twopi = 2*pi; Float_t theta = atan2(Y,Z); if (theta < 0) { while (theta < 0) { theta = theta + twopi; } } else { while (theta > twopi) { theta = theta - twopi; } } if(theta > pi )theta = 2*pi - theta; theta = theta/2.0; return ( (-1)*log(tan(theta)) ); } //------------------------------------------------------------------------ // kludge: return track number in the list for electrons and muons // based on the proximity between the track and lepton dr... // will go away when I'll start storing track number in the STNTUPLE // correctly (soon) //------------------------------------------------------------------------ Int_t TMuoCand::TrackNumber(const Double_t &meta, const Double_t &mphi, TStnTrackBlock* track_block) { Int_t it_match = -1; Double_t dr_min = 999.0; Double_t dr, tphi, teta, dphi, deta; Int_t ntrk = track_block->NTracks(); for (int i=0; iTrack(i); teta = track->fEta; tphi = track->fPhi0; deta = meta-teta; dphi = TVector2::Phi_mpi_pi(mphi-tphi); dr = sqrt(dphi*dphi + deta*deta); if (dr < dr_min) { dr_min = dr; it_match = i; //std::cout << " teta = " << teta << " tphi = " << tphi << std::endl; //std::cout << " meta = " << meta << " mphi = " << mphi << std::endl; //std::cout << " drmin " << dr_min << std::endl; } } if (it_match < 0) { printf("\n track number not found,"); std::cout << " dr_min = " << dr_min << std::endl; std::cout << " it_match = " << it_match << std::endl; } return it_match; } //------------------------------------------------------------------------ // Kludge: // return cal isolation for muons (could be used for ele...) // based on the proximity between the cal towers and extrapolated lepton. //------------------------------------------------------------------------ Double_t TMuoCand::Iso(Float_t &PT, float* xyz, TCalDataBlock* cal_block ) { // if x,y,z all = 0 we have no extrapolation, therefore no measurement. if ( xyz[0]==0.0 && xyz[1]==0.0 && xyz[2]==0.0 ){ //std::cerr << " TMuoCand::Iso -> no isolation measurement " << std::endl; return 0.0; } TCalTower* t; Double_t isolation = 1000000.0; Double_t sum_et = 0; Float_t towphi,toweta; Float_t CONE = 0.4 ; Float_t dr, deta, dphi; Float_t ext_phi = cdfphi(atan2(xyz[1],xyz[0])); Float_t ext_eta = cdfeta(xyz[1],xyz[2]); Geometry towGeo; // Get tower eta and phi indices from extrapolated muon. Int_t muIEta = towGeo.iEta(xyz[0], xyz[1], xyz[2]); Int_t muIPhi = towGeo.iPhi(muIEta, ext_phi); // int ntowers = pCalDataBlock->NTowers(); for (int tow=0; towTower(tow); if( (t->IEta() != muIEta) && (t->IPhi() != muIPhi) ){ towphi = towGeo.phi(t->IEta(), t->IPhi()); toweta = towGeo.eta(t->IEta()); deta = ext_eta-toweta; dphi = ext_phi-towphi; dphi = TVector2::Phi_mpi_pi(dphi); dr = sqrt(dphi*dphi + deta*deta); if( dr < CONE ){ sum_et += t->Et(); //std::cout << " TMuoCand::Iso -> dr < CONE " << std::endl; //std::cout << " t->Et() = " << t->Et() << std::endl; //std::cout << " ext_eta = " << ext_eta << " ext_phi = " << ext_phi << std::endl; //std::cout << " toweta = " << toweta << " towphi = " << towphi << std::endl; //std::cout << " dr " << dr << std::endl; } } } if (PT>0.0) isolation = sum_et/PT; //std::cout << " TMuoCand::Iso -> isolation, sum_et, PT " << isolation << " " << sum_et << " " << PT << std::endl; return isolation; } //------------------------------------------------------------------------ // return track isolation for muons (could be used for ele...) // based on the proximity between the track and lepton dr... //------------------------------------------------------------------------ Double_t TMuoCand::TrackIso(Int_t &trknum, TStnTrackBlock* track_block, Double_t &CONE, Double_t &DZ, Double_t &PTMIN) { Int_t ok = 0; Double_t sum_pt = 0.0; Double_t dr, tpt, tphi, teta, dphi, deta; Double_t pt = track_block->Track(trknum)->fPt; Double_t z0 = track_block->Track(trknum)->fZ0; Double_t mphi = track_block->Track(trknum)->fPhi0; Double_t meta = track_block->Track(trknum)->fEta; Int_t ntrk = track_block->NTracks(); for (int i=0; iTrack(i); tpt = track->fPt; //check pt and z if(tpt >= PTMIN){ // high pt track if( fabs(z0 - (track->fZ0)) >= DZ )ok = 0; } if(ok){ teta = track->fEta; tphi = track->fPhi0; deta = meta-teta; dphi = TVector2::Phi_mpi_pi(mphi-tphi); dr = sqrt(dphi*dphi + deta*deta); if (dr < CONE){ sum_pt += tpt; } } // trk ok ? } // trknum check } // track loop if(pt>0.0){ return sum_pt/pt; } else { return 1000000.0; } } //------------------------------------------------------------------------ // KLUDGE // Return corrected D0 for track based on new beam position // // This calculation assumes track has no curvature. // At the moment I have been hardwiring Beam Pos. info because // the data base beam position is unavailable at the moment. // //------------------------------------------------------------------------ Double_t TMuoCand::CorrectedD0(TStnMuon* Muon) { TStnHeaderBlock* header = GetHeaderBlock(); Double_t corrected_d0, beam_d0, beam_phi0; // Current estimate as of 8/8/01 ptk Double_t X_BEAM = -0.1125; Double_t Y_BEAM = 0.3230; const TLorentzVector* mom = Muon->Momentum(); beam_d0 = sqrt(X_BEAM*X_BEAM + Y_BEAM*Y_BEAM); beam_phi0 = atan2(Y_BEAM,X_BEAM)-TMath::Pi(); corrected_d0 = Muon->D0() - beam_d0*sin( mom->Phi() - beam_phi0 ); if(header->McFlag()>0){ return Muon->D0(); } else{ return corrected_d0; } } //------------------------------------------------------------------------ // Kludge: // return MuonCalEnergy array: // tower choice based on the extrapolation of muon to ces //------------------------------------------------------------------------ Double_t* TMuoCand::MuonCalEnergy(float &CurvMatch, float &Phi0Match, float &CotMatch, float &D0Match, float &Z0Match, TCalDataBlock* cal_block){ Double_t MuonEmHad[3] = {-999.0,-999.0}; float XYZ[] = {0.0, 0.0, 0.0}; Float_t rces = 183.9; Float_t ext_phi = 999.0; Float_t ext_eta = 999.0; Int_t muIEta = 999; Int_t muIPhi = 999; // extrapolate the muon to rces and fill XYZ track_Prop(rces, CurvMatch, Phi0Match, CotMatch, D0Match, Z0Match, XYZ); // if x,y,z all = 0 we have no extrapolation, therefore no measurement. if ( XYZ[0]==0.0 && XYZ[1]==0.0 && XYZ[2]==0.0 ){ //std::cerr << " TMuoCand::MuonCalEnergy -> no measurement " << std::endl; MuonEmHad[0] = 0.0; MuonEmHad[1] = 0.0; } // get Muon's extrapolated eta and phi ext_phi = cdfphi(atan2(XYZ[1],XYZ[0])); ext_eta = cdfeta(XYZ[1],XYZ[2]); //Create a TowerGeometry object; Geometry TowGeo; // Get tower eta and phi indices from extrapolated muon. muIEta = TowGeo.iEta(XYZ[0], XYZ[1], XYZ[2]); muIPhi = TowGeo.iPhi(muIEta, ext_phi); // Loop over towers to match eta and phi indices // of the extrapolated muon in the ces. // Then take the em and had energy of the matching tower. for (int tow=0; tow < (cal_block->NTowers()); tow++) { if( (cal_block->Tower(tow)->IEta() == muIEta) && (cal_block->Tower(tow)->IPhi() == muIPhi) ){ MuonEmHad[0] = cal_block->Tower(tow)->EmEnergy(); MuonEmHad[1] = cal_block->Tower(tow)->HadEnergy(); } } return(MuonEmHad); } //-------------------------------------------------------------------------- // returns HadTDCtime for muon(a track) passing through that tower. // Will need fixing: // Tower choice based on the extrapolation of muon to ces. // Only using CHA tdc time. //-------------------------------------------------------------------------- Int_t TMuoCand::HadTDCtime(float &CurvMatch, float &Phi0Match, float &CotMatch, float &D0Match, float &Z0Match, TCalDataBlock* cal_block){ Int_t TDCtime = 999; Int_t muIEta = 999; Int_t muIPhi = 999; float XYZ[] = {0.0, 0.0, 0.0}; Float_t rces = 183.9; Float_t ext_phi = 999.0; Float_t ext_eta = 999.0; // extrapolate the muon to rces and fill XYZ track_Prop(rces, CurvMatch, Phi0Match, CotMatch, D0Match, Z0Match, XYZ); // get Muon's extrapolated eta and phi ext_phi = cdfphi(atan2(XYZ[1],XYZ[0])); ext_eta = cdfeta(XYZ[1],XYZ[2]); //Create a TowerGeometry object; Geometry TowGeo; // Get tower eta and phi indices from extrapolated muon. muIEta = TowGeo.iEta(XYZ[0], XYZ[1], XYZ[2]); muIPhi = TowGeo.iPhi(muIEta, ext_phi); // Loop over towers to match eta and phi indices // of the extrapolated muon in the ces. // Then take the CHA(for now) tdc time of the matching tower. for (int tow=0; tow < (cal_block->NTowers()); tow++) { if( (cal_block->Tower(tow)->IEta() == muIEta) && (cal_block->Tower(tow)->IPhi() == muIPhi) ){ TDCtime = cal_block->Tower(tow)->HadTdc0(); //std::cout << " muon-cal tower match: had tdc 0 : had tdc 1 = " << cal_block->Tower(tow)->HadTdc0() // << " : " << cal_block->Tower(tow)->HadTdc1() << std::endl; } } return(TDCtime); } //================================== // printcuts() //================================== void TMuoCand::printcuts() { printf("\n Current Muon Selection Cuts:\n"); if(getMuonPtCutEnable()) printf(" Pt > %f\n",getMuonPtCut()); if(getMuonEmCutEnable()) printf(" Em energy < %f\n",getMuonEmCut()); if(getMuonHadCutEnable()) printf(" Had energy < %f\n",getMuonHadCut()); if(getMuonEmHadCutEnable()) printf(" Em + Had > %f\n",getMuonEmHadCut()); if(getMuonD0CutEnable()) printf(" |D0| < %f\n",getMuonD0Cut()); if(getMuonZvCutEnable()) printf(" |Z| vertex < %f\n",getMuonZvCut()); if(getMuonIsoCutEnable()) printf(" Cal Isolation < %f\n",getMuonIsoCut()); if(getMuonTIsoCutEnable()) printf(" Track Isolation < %f\n",getMuonTIsoCut()); if(getCmuDxCutEnable()) printf(" Cmu |dx| < %f\n",getCmuDxCut()); if(getCmpDxCutEnable()) printf(" Cmp |dx| < %f\n",getCmpDxCut()); if(getCmxDxCutEnable()) printf(" Cmx |dx| < %f\n",getCmxDxCut()); if(getNaxslEnable()) printf(" # COT Axial SL > %f\n",getNaxslCut()); if(getNstslEnable()) printf(" # COT Stereo SL > %f\n",getNstslCut()); if(getNtotslEnable()) printf(" # COT total SL > %f\n",getNtotslCut()); printf("\n"); } //================================== // EndJob() //================================== int TMuoCand::EndJob() { printf("----- end job: ---- %s\n",GetName()); // Watch out for histo plot spew! Display( IsHistEnable() && IsDisplayEnable() ); //SaveHistograms(); Count(); return 0; }