void treeTest( const TString fList = "temp.list", const TString fOutName = "fOut.root", Long64_t nEvents = 9999 ) { gROOT->LoadMacro("$STAR/StRoot/StMuDSTMaker/COMMON/macros/loadSharedLibraries.C"); gROOT->LoadMacro("makeEventList.C"); loadSharedLibraries(); TFile* fOut = new TFile(fOutName.Data(),"RECREATE"); TH1D* hZdc = new TH1D("hZdc","hZdc", 50, 0.5, 5000.5); //----------------- Read data using StMuDstMaker ---------------// StChain* muChain = new StChain("StChain"); StMuDstMaker* muMaker = new StMuDstMaker(0,0,"",fList.Data(),"st:MuDst.root", 100, "MuDst"); muChain->Init(); Float_t zdcCut = 1623; TEventList* eventList = makeEventList(muMaker->chain(), zdcCut); muMaker->SetEventList(eventList); Long64_t nList = eventList->GetN(); if(nList < nEvents) {nEvents = nList;} for(Int_t i = 0; i <= (nEvents-1); i++) { muChain->Make(); Float_t zdcWest = muMaker->muDst()->event()->zdcTriggerDetector().adc(0); Float_t zdcEast = muMaker->muDst()->event()->zdcTriggerDetector().adc(4); hZdc->Fill(zdcWest); hZdc->Fill(zdcEast); } muChain->Finish(); fOut->Write(); fOut->Close(); delete muChain; delete eventList; }
/** * 1. Data sample : pp200 W->e nu with pile-up corresponding to 1 MHz min. bias * events, 50 K event y2011, 10 K event y2012. * * 2. Proof of principal: no pile-up for both PPV and KFV * * a. Reconstructed primary track multiplicity versus corresponding MC * "reconstructable" (i.e. in n STAR acceptance,no. TPC MC hits >= 15) tracks * multiplicity. * * b. Corrected reconstructed primary track multiplicity (i.e. multiplied by * QA/100.) versus corresponding MC "reconstructable" (i.e. in n STAR * acceptance,no. TPC MC hits >= 15) tracks multiplicity. * * c. Efficiency primary vertex reconstruction versus MC "reconstructable" * tracks multiplicity. * * 3. With pileup. repeat above (a-c) with old ranking scheme for * * I. Any reconstructed primary vertex which is matched with MC trigger * vertex (MC = 1) * * II. The best (in sense of ranking) reconstructed primary vertex which is * matched with MC trigger vertex (MC = 1) * * III. The best (in sense of ranking) reconstructed primary vertex which is * not matched with MC trigger vertex (MC != 1) * * 4. With pileup. repeat above (a-c) with new ranking scheme for cases I-III */ void MuMcPrVKFV2012(Long64_t nevent, const char *file, const std::string& outFile, bool fillNtuple) { #ifdef __TMVA__ boost::replace_last(outFile, ".root", ""); outFile += ".TMVArank.root"; // create a set of variables and declare them to the reader // - the variable names must corresponds in name and type to // those given in the weight file(s) that you use TString separator(":"); TString Vnames(vnames); TObjArray *array = Vnames.Tokenize(separator); std::vector<std::string> inputVars; TIter next(array); TObjString *objs; while ((objs = (TObjString *) next())) { std::cout << objs->GetString() << std::endl; } inputVars.push_back("beam"); inputVars.push_back("postx"); inputVars.push_back("prompt"); inputVars.push_back("cross"); inputVars.push_back("tof"); inputVars.push_back("notof"); inputVars.push_back("EEMC"); inputVars.push_back("noEEMC"); inputVars.push_back("chi2"); std::vector<double> *inputVec = new std::vector<double>( inputVars.size() ); IClassifierReader *classReader = new ReadBDT( inputVars ); #endif /* __TMVA__ */ TFile *fOut = TFile::Open(outFile.c_str(), "recreate"); data_t data; // Book histograms const int nMcRecMult = 75; TArrayD xMult(nMcRecMult + 1); xMult[0] = -0.5; for (int i = 1; i <= nMcRecMult; i++) { if (xMult[i - 1] < 50) xMult[i] = xMult[i - 1] + 1; // 1 - 50 else if (xMult[i - 1] < 100) xMult[i] = xMult[i - 1] + 2; // 51 - 75 else if (xMult[i - 1] < 200) xMult[i] = xMult[i - 1] + 10; // 76 - 85 else xMult[i] = xMult[i - 1] + 100; // 86 -100 } TH1D *McRecMulT = new TH1D("McRecMulT", "Reconstructable multiplicity for trigger Mc Vertex", nMcRecMult, xMult.GetArray()); struct Name_t { const Char_t *Name; const Char_t *Title; }; const Name_t HCases[3] = { {"Any", "Any vertex matched with MC == 1"}, {"Good", "The best rank vertex with MC == 1"}, {"Bad", "The best rank vertex with MC != 1"} }; const Name_t Plots[4] = { {"Mult" , "the reconstructed (uncorrected) track multiplicity versus Reconstructable multiplicity"}, {"MultQA" , "the reconstructed (corrected for QA) track multiplicity versus Reconstructable multiplicity"}, {"McRecMul", "Reconstructable multiplicity"}, {"YvsX" , "Bad versus Good value"} }; /* h p */ TH1 *hists[3][4]; for (int h = 0; h < 3; h++) { for (int p = 0; p < 4; p++) { TString Name(Plots[p].Name); Name += HCases[h].Name; TString Title(Plots[p].Title); Title += " for "; Title += HCases[h].Title; Title += " vertex"; if (p < 2) hists[h][p] = new TH2D(Name, Title, nMcRecMult, xMult.GetArray(), nMcRecMult, xMult.GetArray()); else if (p == 2) hists[h][p] = new TH1D(Name, Title, nMcRecMult, xMult.GetArray()); } } TNtuple *VertexG = new TNtuple("VertexG", "good vertex & global params info", vnames); TNtuple *VertexB = new TNtuple("VertexB", "bad vertex & global params info", vnames); // ---------------------------------------------- StMuDstMaker *maker = new StMuDstMaker(0, 0, "", file, "st:MuDst.root", 1e9); // set up maker in read mode // 0,0 this mean read mode // dir read all files in this directory // file bla.lis real all file in this list, if (file!="") dir is ignored // filter apply filter to filenames, multiple filters are separated by ':' // 10 maximum number of file to read maker->SetStatus("*", 0); std::vector<std::string> activeBranchNames = { "MuEvent", "PrimaryVertices", "StStMuMcVertex", "StStMuMcTrack" }; // Set Active braches for (const auto& branchName : activeBranchNames) maker->SetStatus(branchName.c_str(), 1); TChain *tree = maker->chain(); Long64_t nentries = tree->GetEntries(); nevent = TMath::Min(nevent, nentries); std::cout << nentries << " events in chain " << nevent << " will be read." << std::endl; tree->SetCacheSize(-1); //by setting the read cache to -1 we set it to the AutoFlush value when writing tree->SetCacheLearnEntries(1); //one entry is sufficient to learn tree->SetCacheEntryRange(0, nevent); for (Long64_t ev = 0; ev < nevent; ev++) { if (maker->Make()) break; StMuDst *muDst = maker->muDst(); // get a pointer to the StMuDst class, the class that points to all the data StMuEvent *muEvent = muDst->event(); // get a pointer to the class holding event-wise information int referenceMultiplicity = muEvent->refMult(); // get the reference multiplicity TClonesArray *PrimaryVertices = muDst->primaryVertices(); int nPrimaryVertices = PrimaryVertices->GetEntriesFast(); TClonesArray *MuMcVertices = muDst->mcArray(0); int nMuMcVertices = MuMcVertices->GetEntriesFast(); TClonesArray *MuMcTracks = muDst->mcArray(1); int nMuMcTracks = MuMcTracks->GetEntriesFast(); if ( nevent >= 10 && ev % int(nevent*0.1) == 0 ) { std::cout << "Event #" << ev << "\tRun\t" << muEvent->runId() << "\tId: " << muEvent->eventId() << " refMult= " << referenceMultiplicity << "\tPrimaryVertices " << nPrimaryVertices << "\t" << " " << nMuMcVertices << "\t" << " " << nMuMcTracks << std::endl; } // const Double_t field = muEvent->magneticField()*kilogauss; if (! nMuMcVertices || ! nMuMcTracks || nPrimaryVertices <= 0) { std::cout << "Ev. " << ev << " has no MC information ==> skip it" << std::endl; std::cout << "OR no reconstructed verticies found" << std::endl; continue; } // Count number of MC tracks at a vertex with TPC reconstructable tracks std::multimap<int, int> Mc2McHitTracks; for (int m = 0; m < nMuMcTracks; m++) { StMuMcTrack *McTrack = (StMuMcTrack *) MuMcTracks->UncheckedAt(m); if (McTrack->No_tpc_hit() < 15) continue; Mc2McHitTracks.insert(std::pair<int, int>(McTrack->IdVx(), McTrack->Id())); } // This is the "reconstructable" track multiplicity int nMcTracksWithHits = Mc2McHitTracks.count(1); // Let's skip events in which we do not expect to reconstruct any tracks // (and thus vertex) from the primary vertex if (nMcTracksWithHits <= 0) continue; // This is our denominator histogram for efficiencies McRecMulT->Fill(nMcTracksWithHits); // ============= Build map between Rc and Mc vertices std::map<StMuPrimaryVertex *, StMuMcVertex *> reco2McVertices; TArrayF vertexRanks(nPrimaryVertices); int mcMatchedVertexIndex = -1; // any vertex with MC==1 and highest reconstrated multiplicity. int vertexMaxMultiplicity = -1; // First loop over all verticies in this event. There is at least one // must be available for (int recoVertexIndex = 0; recoVertexIndex < nPrimaryVertices; recoVertexIndex++) { vertexRanks[recoVertexIndex] = -1e10; StMuPrimaryVertex *recoVertex = (StMuPrimaryVertex *) PrimaryVertices->UncheckedAt(recoVertexIndex); if ( !AcceptVX(recoVertex) ) continue; // Check Mc if (recoVertex->idTruth() < 0 || recoVertex->idTruth() > nMuMcVertices) { std::cout << "ERROR: Illegal idTruth " << recoVertex->idTruth() << " The track is ignored" << std::endl; continue; } StMuMcVertex *mcVertex = (StMuMcVertex *) MuMcVertices->UncheckedAt(recoVertex->idTruth() - 1); if (mcVertex->Id() != recoVertex->idTruth()) { std::cout << "ERROR: Mismatched idTruth " << recoVertex->idTruth() << " and mcVertex Id " << mcVertex->Id() << " The vertex is ignored" << std::endl; continue; } reco2McVertices[recoVertex] = mcVertex; vertexRanks[recoVertexIndex] = recoVertex->ranking(); if (recoVertex->idTruth() == 1 && recoVertex->noTracks() > vertexMaxMultiplicity) { mcMatchedVertexIndex = recoVertexIndex; vertexMaxMultiplicity = recoVertex->noTracks(); } FillData(data, recoVertex); #ifdef __TMVA__ Float_t *dataArray = &data.beam; for (size_t j = 0; j < inputVec->size(); j++) (*inputVec)[j] = dataArray[j]; vertexRanks[recoVertexIndex] = classReader->GetMvaValue( *inputVec ); #endif } // If we reconstructed a vertex which matches the MC one we fill the // numerator of the "Any" efficiency histogram if (mcMatchedVertexIndex != -1) { StMuPrimaryVertex *recoVertexMatchedMc = (StMuPrimaryVertex*) PrimaryVertices->UncheckedAt(mcMatchedVertexIndex); double nTracks = recoVertexMatchedMc->noTracks(); double nTracksQA = nTracks * recoVertexMatchedMc->qaTruth() / 100.; hists[0][0]->Fill(nMcTracksWithHits, nTracks); hists[0][1]->Fill(nMcTracksWithHits, nTracksQA); hists[0][2]->Fill(nMcTracksWithHits); } // Now deal with the highest rank vertex int maxRankVertexIndex = TMath::LocMax(nPrimaryVertices, vertexRanks.GetArray()); StMuPrimaryVertex *recoVertexMaxRank = (StMuPrimaryVertex*) PrimaryVertices->UncheckedAt(maxRankVertexIndex); StMuMcVertex *mcVertex = reco2McVertices[recoVertexMaxRank]; double nTracks = recoVertexMaxRank->noTracks(); double nTracksQA = nTracks * recoVertexMaxRank->qaTruth() / 100.; // Fill numerator for "good" and "bad" efficiencies int h = ( mcVertex && mcVertex->Id() == 1) ? 1 : 2; hists[h][0]->Fill(nMcTracksWithHits, nTracks); hists[h][1]->Fill(nMcTracksWithHits, nTracksQA); hists[h][2]->Fill(nMcTracksWithHits); // Proceed with filling ntuple only if requested by the user if ( !fillNtuple ) continue; // Second loop over all verticies in this event for (int recoVertexIndex = 0; recoVertexIndex < nPrimaryVertices; recoVertexIndex++) { StMuPrimaryVertex *recoVertex = (StMuPrimaryVertex *) PrimaryVertices->UncheckedAt(recoVertexIndex); if ( !AcceptVX(recoVertex) ) continue; StMuMcVertex *mcVertex = reco2McVertices[recoVertex]; if ( !mcVertex ) { std::cout << "No Match from RC to MC" << std::endl; continue; } if (vtxeval::gDebugFlag) { std::cout << Form("Vx[%3i]", recoVertexIndex) << *recoVertex << " " << *mcVertex; int nMcTracksWithHitsatL = Mc2McHitTracks.count(recoVertex->idTruth()); std::cout << Form("Number of McTkHit %4i rank %8.3f", nMcTracksWithHitsatL, vertexRanks[recoVertexIndex]); } int IdPar = mcVertex->IdParTrk(); if (IdPar > 0 && IdPar <= nMuMcTracks) { StMuMcTrack *mcTrack = (StMuMcTrack *) MuMcTracks->UncheckedAt(IdPar - 1); if (mcTrack && vtxeval::gDebugFlag) std::cout << " " << mcTrack->GeName(); } FillData(data, recoVertex); double nTracks = recoVertex->noTracks(); if (mcVertex->Id() == 1 && nTracks == vertexMaxMultiplicity) {// good VertexG->Fill(&data.beam); } else { // bad VertexB->Fill(&data.beam); } } if ( !gROOT->IsBatch() ) { if (vtxeval::ask_user()) return; } else { vtxeval::gDebugFlag = false; } } fOut->Write(); }
void makePicoDst(const Int_t runnumber=999999, const Char_t *inputFile="/star/institutions/lbl_prod/mlomnitz/SSD_Simu/StEvent/hijing_**.MuDst.root", const Char_t *inputGeant="/star/institutions/lbl_prod/mlomnitz/SSD_Simu/StEvent/hijing_**.McEvent.root", TString outfilename="out", const bool creatingPhiWgt = kFALSE, const int prodMod = 0, const int emcMode=0, const bool createMcBranch = kTRUE ){ Int_t nEvents = 10000000; //Int_t nEvents = 50; //Load all the System libraries cout<<inputFile<<endl; gSystem->Load("libTable"); gSystem->Load("libPhysics"); gSystem->Load("St_base"); gSystem->Load("StChain"); gSystem->Load("St_Tables"); gSystem->Load("StUtilities"); // new addition 22jul99 gSystem->Load("StTreeMaker"); gSystem->Load("StIOMaker"); gSystem->Load("StarClassLibrary"); gSystem->Load("StTriggerDataMaker"); // new starting from April 2003 gSystem->Load("StBichsel"); gSystem->Load("StEvent"); gSystem->Load("StEventUtilities"); gSystem->Load("StDbLib"); gSystem->Load("StEmcUtil"); gSystem->Load("StTofUtil"); gSystem->Load("StPmdUtil"); gSystem->Load("StPreEclMaker"); gSystem->Load("StStrangeMuDstMaker"); gSystem->Load("StMuDSTMaker"); if( createMcBranch){ gSystem->Load("StMcEvent"); gSystem->Load("StAssociationMaker"); } if(!creatingPhiWgt&&emcMode) { gSystem->Load("StTpcDb"); gSystem->Load("StMcEvent"); gSystem->Load("StMcEventMaker"); gSystem->Load("StDaqLib"); gSystem->Load("libgen_Tables"); gSystem->Load("libsim_Tables"); gSystem->Load("libglobal_Tables"); gSystem->Load("StEmcTriggerMaker"); gSystem->Load("StEmcUtil");//mine gSystem->Load("StEmcRawMaker"); gSystem->Load("StEmcADCtoEMaker"); gSystem->Load("StPreEclMaker"); gSystem->Load("StEpcMaker"); gSystem->Load("StEmcSimulatorMaker"); gSystem->Load("StEmcUtil"); gSystem->Load("StDbBroker"); gSystem->Load("StDetectorDbMaker"); gSystem->Load("StDbUtilities"); gSystem->Load("StEEmcUtil"); gSystem->Load("StEEmcDbMaker"); gSystem->Load("St_db_Maker"); gSystem->Load("StTriggerUtilities"); } gSystem->Load("StPicoDstMaker"); chain = new StChain(); if( createMcBranch ){ StIOMaker* ioMaker = new StIOMaker("IO","r",inputGeant,"bfcTree"); ioMaker->SetDebug(); ioMaker->SetIOMode("r"); ioMaker->SetBranch("*",0,"0"); //deactivate all branches //ioMaker->SetBranch("geantBranch",0,"r"); //activate geant Branch ioMaker->SetBranch("McEventBranch",0,"r"); //activate geant Branch ioMaker->SetBranch("eventBranch",0,"r"); //activate geant Branch StAssociationMaker* associator = new StAssociationMaker; cout<<"created new StAssociationMaker"<<endl; associator->useInTracker(); } StMuDstMaker *MuDstMaker = new StMuDstMaker(0,0,"",inputFile,"MuDst",100); MuDstMaker->SetStatus("*",0); MuDstMaker->SetStatus("MuEvent",1); MuDstMaker->SetStatus("PrimaryVertices",1); MuDstMaker->SetStatus("PrimaryTracks",1); MuDstMaker->SetStatus("GlobalTracks",1); MuDstMaker->SetStatus("CovGlobTrack",1); //MuDstMaker->SetStatus("BTof*",1); //MuDstMaker->SetStatus("Emc*",1); if(!creatingPhiWgt&&emcMode) { St_db_Maker *dbMk = new St_db_Maker("db","MySQL:StarDb","$STAR/StarDb","StarDb"); // Endcap database StEEmcDbMaker* eemcDb = new StEEmcDbMaker; StEmcADCtoEMaker *adc2e = new StEmcADCtoEMaker(); adc2e->setPrint(false); //adc2e->setFillHisto(false); //adc2e->setDebug(false); //more histograms //adc2e->setSMDRmsCut(0,0); adc2e->saveAllStEvent(true); //adc2e->setRemoveGhostEvent(false); //adc2e->setTallyHist(mTally); //adc2e->setDbName("Calibrations/emc/y3"); StPreEclMaker *pre_ecl=new StPreEclMaker(); pre_ecl->setPrint(kFALSE); StEpcMaker *epc=new StEpcMaker(); epc->setPrint(kFALSE); #if 1 // Trigger simulator StTriggerSimuMaker* trigSimu = new StTriggerSimuMaker; trigSimu->setMC(false); trigSimu->useBemc(); trigSimu->useEemc(); trigSimu->useOnlineDB(); trigSimu->bemc->setConfig(StBemcTriggerSimu::kOffline); #endif } StPicoDstMaker *picoMaker = new StPicoDstMaker(1,Form("st_%i.picoDst.root",runnumber),"picoDst"); picoMaker->setRunNumber(runnumber); picoMaker->setEmcMode(emcMode); // 0-No EMC, 1-EMC ON picoMaker->setMcMode(createMcBranch); chain->Init(); cout<<"chain->Init();"<<endl; int total = 0; cout<<MuDstMaker->chain()->GetEntries()<<endl; if( nEvents > MuDstMaker->chain()->GetEntries() ) nEvents=MuDstMaker->chain()->GetEntries(); for (Int_t i=0; i<nEvents; i++){ if(i%100==0) cout << "Working on eventNumber " << i << endl; chain->Clear(); int iret = chain->Make(i); if (iret) { cout << "Bad return code!" << iret << endl; break;} total++; } cout << "****************************************** " << endl; cout << "Work done... now its time to close up shop!"<< endl; cout << "****************************************** " << endl; chain->Finish(); cout << "****************************************** " << endl; cout << "total number of events " << total << endl; cout << "****************************************** " << endl; delete chain; }
void Run2006SimuTriggerMaker(const char *dir ="", const char* file="/star/data32/reco/pp200/pythia6_205/above_35gev/cdf_a/y2004y/gheisha_on/p05ih/rcf1230_10_4000evts.MuDst.root", const char *fname="/star/data32/reco/pp200/pythia6_205/above_35gev/cdf_a/y2004y/gheisha_on/p05ih/rcf1230_10_4000evts.event.root", const char *filter = "") { int nevents = 10; gROOT->LoadMacro("$STAR/StRoot/StMuDSTMaker/COMMON/macros/loadSharedLibraries.C"); loadSharedLibraries(); gSystem->Load("StTpcDb"); gSystem->Load("StDetectorDbMaker"); gSystem->Load("StDbUtilities"); gSystem->Load("StMcEvent"); gSystem->Load("StMcEventMaker"); gSystem->Load("StDaqLib"); gSystem->Load("StEmcRawMaker"); gSystem->Load("StEmcADCtoEMaker"); gSystem->Load("StPreEclMaker"); gSystem->Load("StEpcMaker"); gSystem->Load("StEmcSimulatorMaker"); gSystem->Load("StEmcUtil"); gSystem->Load("StDbBroker"); gSystem->Load("St_db_Maker"); gSystem->Load("StEEmcUtil"); gSystem->Load("StEEmcDbMaker"); gSystem->Load("StEmcTriggerMaker"); double pi = atan(1.0)*4.0; cout << " loading done " << endl; chain= new StChain("StChain"); chain->SetDebug(1); gMessMgr->SwitchOff("D"); gMessMgr->SwitchOff("I"); StIOMaker* ioMaker = new StIOMaker(); ioMaker->SetFile(fname); ioMaker->SetIOMode("r"); ioMaker->SetBranch("*",0,"0"); //deactivate all branches ioMaker->SetBranch("geantBranch",0,"r"); //activate geant Branch class StMcEventMaker *mcEventMaker = new StMcEventMaker(); mcEventMaker->doPrintEventInfo = false; mcEventMaker->doPrintMemoryInfo = false; StMuDebug::setLevel(1); StMuDstMaker* muDstMaker = new StMuDstMaker(0,0,dir,file,filter,1e6,"MuDst"); //Database -- get a real calibration from the database St_db_Maker* dbMk = new St_db_Maker("StarDb","MySQL:StarDb","MySQL:StarDb","$STAR/StarDb"); dbMk->SetDateTime(20060506,214129 ); // for simulation //to use ideal ideal gains/status/calib uncommment correct line below //dbMk->SetFlavor("sim","bemcPed"); //dbMk->SetFlavor("sim","bemcStatus"); //dbMk->SetFlavor("sim","bemcCalib"); //dbMk->SetFlavor("sim","bemcGain"); //dbMk->SetFlavor("sim","eemcPMTcal"); //dbMk->SetFlavor("sim","eemcPIXcal"); chain->ls(3); //Database interface StDetectorDbMaker* detDbMk = new StDetectorDbMaker(); //Endcap DB StEEmcDbMaker* eemcb = new StEEmcDbMaker("eemcDb"); //StEmcADCtoEMaker *adc = new StEmcADCtoEMaker(); // this will just convert what's in MuDst to ADC, use for data only! StEmcSimulatorMaker* emcSim = new StEmcSimulatorMaker(); //use this instead to "redo" converstion from geant->adc emcSim->setCalibSpread(kBarrelEmcTowerId, 0.15); StPreEclMaker* preEcl = new StPreEclMaker(); //need this to fill new StEvent information //StEmcTrigger StEmcTriggerMaker *emcTrig = new StEmcTriggerMaker("bemctrigger"); chain->Init(); chain->PrintInfo(); chain->ls(3); TChain* fileChain = muDstMaker->chain(); int BL1_ADC[6]; int hold=-1; for (Int_t iev=0;iev<nevents; iev++) { cout << "****************************************** " << endl; cout << "Working on eventNumber:\t" << iev <<"\tof:\t"<<nevents<<endl; cout << "*************************1***************** " << endl; chain->Clear(); int iret = chain->Make(iev); total++; if (iret) { cout << "Bad return code!" << endl; break; } cout<<" "<<endl; map<int,int>::iterator iter; map<int,int> tower; map<int,int> tpatch; map<int,int> jpatch; cout<<endl; cout<<endl; cout<<" 1101 ht1 = "<<emcTrig->isTrigger(1101)<<" = "<<emcTrig->is2003HT1()<<endl; tower=emcTrig->barrelTowersAboveThreshold(1101); cout<<"Total #'s of towers="<<tower.size()<<endl; for ( iter=tower.begin();iter !=tower.end(); iter++){ cout<<"tower id="<<iter->first<<" adc="<<iter->second<<endl; cout<<"old tower id="<<emcTrig->get2003HT1_ID()<<" adc="<<emcTrig->get2003HT1_ADC()<<endl; } cout<<endl; cout<<endl; cout<<" 2101 ht1 = "<<emcTrig->isTrigger(2201)<<" = "<<emcTrig->is2003HT1()<<endl; tower=emcTrig->barrelTowersAboveThreshold(2201); cout<<"Total #'s of towers="<<tower.size()<<endl; for ( iter=tower.begin();iter !=tower.end(); iter++){ cout<<"tower id="<<iter->first<<" adc="<<iter->second<<endl; cout<<"old tower id="<<emcTrig->get2003HT1_ID()<<" adc="<<emcTrig->get2003HT1_ADC()<<endl; } cout<<endl; cout<<endl; cout<<" 2202 ht2 = "<<emcTrig->isTrigger(2202)<<" = "<<emcTrig->is2003HT2()<<endl; tower=emcTrig->barrelTowersAboveThreshold(2202); cout<<"Total #'s of towers="<<tower.size()<<endl; for ( iter=tower.begin();iter !=tower.end(); iter++){ cout<<"tower id="<<iter->first<<" adc="<<iter->second<<endl; cout<<"old tower id="<<emcTrig->get2003HT2_ID()<<" adc="<<emcTrig->get2003HT2_ADC()<<endl; } cout<<endl; cout<<endl; cout<<" 45201 ht1 = "<<emcTrig->isTrigger(45201)<<" = "<<emcTrig->is2004HT1()<<endl; tower=emcTrig->barrelTowersAboveThreshold(45201); cout<<"Total #'s of towers="<<tower.size()<<endl; for ( iter=tower.begin();iter !=tower.end(); iter++){ cout<<"tower id="<<iter->first<<" adc="<<iter->second<<endl; cout<<"old tower id="<<emcTrig->get2004HT1_ID()<<" adc="<<emcTrig->get2004HT1_ADC()<<endl; } cout<<endl; cout<<endl; cout<<" 45202 ht1 = "<<emcTrig->isTrigger(45202)<<" = "<<emcTrig->is2004HT2()<<endl; tower=emcTrig->barrelTowersAboveThreshold(45202); cout<<"Total #'s of towers="<<tower.size()<<endl; for ( iter=tower.begin();iter !=tower.end(); iter++){ cout<<"tower id="<<iter->first<<" adc="<<iter->second<<endl; cout<<"old tower id="<<emcTrig->get2004HT2_ID()<<" adc="<<emcTrig->get2004HT2_ADC()<<endl; } cout<<endl; cout<<endl; cout<<" 45206 jp1 = "<<emcTrig->isTrigger(45206)<<" = "<<emcTrig->is2004JP1()<<endl; jpatch=emcTrig->barrelJetPatchesAboveThreshold(45206); cout<<"Total #'s of jpatches="<<jpatch.size()<<endl; for ( iter=jpatch.begin();iter !=jpatch.end(); iter++){ cout<<"jpatch id="<<iter->first<<" adc="<<iter->second<<endl; cout<<"old patch id="<<emcTrig->get2004JP1_ID()<<" adc="<<emcTrig->get2004JP1_ADC()<<endl; } cout<<endl; cout<<endl; cout<<" 45207 jp2 = "<<emcTrig->isTrigger(45207)<<" = "<<emcTrig->is2004JP2()<<endl; jpatch=emcTrig->barrelJetPatchesAboveThreshold(45207); cout<<"Total #'s of jpatches="<<jpatch.size()<<endl; for ( iter=jpatch.begin();iter !=jpatch.end(); iter++){ cout<<"jpatch id="<<iter->first<<" adc="<<iter->second<<endl; cout<<"old patch id="<<emcTrig->get2004JP2_ID()<<" adc="<<emcTrig->get2004JP2_ADC()<<endl; } cout<<endl; cout<<endl; cout<<" 127212 ht2 (matrix0)="<<emcTrig->isTrigger(127212)<<endl; tower=emcTrig->barrelTowersAboveThreshold(127212); cout<<"Total #'s of towers="<<tower.size()<<endl; for ( iter=tower.begin();iter !=tower.end(); iter++){ cout<<"tower id="<<iter->first<<" adc="<<iter->second<<endl; } cout<<endl; cout<<endl; cout<<" 127213 ht2 (matrix1)="<<emcTrig->isTrigger(127213)<<endl; tower=emcTrig->barrelTowersAboveThreshold(127213); cout<<"Total #'s of towers="<<tower.size()<<endl; for ( iter=tower.begin();iter !=tower.end(); iter++){ cout<<"tower id="<<iter->first<<" adc="<<iter->second<<endl; } cout<<endl; cout<<endl; cout<<" 137213 ht2 (matrix3) ="<<emcTrig->isTrigger(127213)<<endl; tower=emcTrig->barrelTowersAboveThreshold(127213); cout<<"Total #'s of towers="<<tower.size()<<endl; for ( iter=tower.begin();iter !=tower.end(); iter++){ cout<<"tower id="<<iter->first<<" adc="<<iter->second<<endl; } cout<<endl; cout<<endl; cout<<" 127501 jp0 (matrix1)="<<emcTrig->isTrigger(127501)<<endl; jpatch=emcTrig->barrelJetPatchesAboveThreshold(127501); cout<<"Total #'s of jpatches="<<jpatch.size()<<endl; for ( iter=jpatch.begin();iter !=jpatch.end(); iter++){ cout<<"jpatch id="<<iter->first<<" adc="<<iter->second<<endl; } cout<<endl; cout<<endl; cout<<" 137501 jp0 (matrix3) ="<<emcTrig->isTrigger(137501)<<endl; jpatch=emcTrig->barrelJetPatchesAboveThreshold(137501); cout<<"Total #'s of jpatches="<<jpatch.size()<<endl; for ( iter=jpatch.begin();iter !=jpatch.end(); iter++){ cout<<"jpatch id="<<iter->first<<" adc="<<iter->second<<endl; } cout<<endl; cout<<endl; cout<<" 127221 jp1 (matrix1)="<<emcTrig->isTrigger(127221)<<endl; jpatch=emcTrig->barrelJetPatchesAboveThreshold(127221); cout<<"Total #'s of jpatches="<<jpatch.size()<<endl; for ( iter=jpatch.begin();iter !=jpatch.end(); iter++){ cout<<"jpatch id="<<iter->first<<" adc="<<iter->second<<endl; } cout<<endl; cout<<endl; cout<<" 137221 jp1 (matrix2)="<<emcTrig->isTrigger(137221)<<endl; jpatch=emcTrig->barrelJetPatchesAboveThreshold(137221); cout<<"Total #'s of jpatches="<<jpatch.size()<<endl; for ( iter=jpatch.begin();iter !=jpatch.end(); iter++){ cout<<"jpatch id="<<iter->first<<" adc="<<iter->second<<endl; } cout<<endl; cout<<endl; cout<<" 137222 jp1 (matrix3)="<<emcTrig->isTrigger(137222)<<endl; jpatch=emcTrig->barrelJetPatchesAboveThreshold(127501); cout<<"Total #'s of jpatches="<<jpatch.size()<<endl; for ( iter=jpatch.begin();iter !=jpatch.end(); iter++){ cout<<"jpatch id="<<iter->first<<" adc="<<iter->second<<endl; } cout<<endl; cout<<endl; cout<<" 127821 http (matrix1)="<<emcTrig->isTrigger(127821)<<endl; tpatch=emcTrig->barrelTriggerPatchesAboveThreshold(127821); cout<<"Total #'s of tpatches="<<tpatch.size()<<endl; for ( iter=tpatch.begin();iter !=tpatch.end(); iter++){ cout<<"tpatch id="<<iter->first<<" adc="<<iter->second<<endl; } tower=emcTrig->barrelTowersAboveThreshold(127821); cout<<"Total #'s of towers="<<tower.size()<<endl; for ( iter=tower.begin();iter !=tower.end(); iter++){ int triggerPatch = emcTrig->barrelTriggerPatchForTower(iter->first); cout<<"tower id="<<iter->first<<" adc="<<iter->second<<" tp (id,adc)=("<< triggerPatch << "," << tpatch[triggerPatch] << ")" <<endl; } cout<<endl; cout<<endl; cout<<" 137821 http (matrix3) ="<<emcTrig->isTrigger(137821)<<endl; tpatch=emcTrig->barrelTriggerPatchesAboveThreshold(137821); cout<<"Total #'s of tpatches="<<tpatch.size()<<endl; for ( iter=tpatch.begin();iter !=tpatch.end(); iter++){ cout<<"tpatch id="<<iter->first<<" adc="<<iter->second<<endl; } tower=emcTrig->barrelTowersAboveThreshold(137821); cout<<"Total #'s of towers="<<tower.size()<<endl; for ( iter=tower.begin();iter !=tower.end(); iter++){ int triggerPatch = emcTrig->barrelTriggerPatchForTower(iter->first); cout<<"tower id="<<iter->first<<" adc="<<iter->second<<" tp (id,adc)=("<< triggerPatch << "," << tpatch[triggerPatch] << ")" <<endl; } cout<<endl; cout<<endl; cout<<" 137822 http (matrix4)="<<emcTrig->isTrigger(137822)<<endl; tpatch=emcTrig->barrelTriggerPatchesAboveThreshold(137822); cout<<"Total #'s of tpatches="<<tpatch.size()<<endl; for ( iter=tpatch.begin();iter !=tpatch.end(); iter++){ cout<<"tpatch id="<<iter->first<<" adc="<<iter->second<<endl; } tower=emcTrig->barrelTowersAboveThreshold(137822); cout<<"Total #'s of towers="<<tower.size()<<endl; for ( iter=tower.begin();iter !=tower.end(); iter++){ int triggerPatch = emcTrig->barrelTriggerPatchForTower(iter->first); cout<<"tower id="<<iter->first<<" adc="<<iter->second<<" tp (id,adc)=("<< triggerPatch << "," << tpatch[triggerPatch] << ")" <<endl; } cout<<endl; cout<<endl; cout<<" 117705 jpsi (matrix1)="<<emcTrig->isTrigger(117705)<<endl; tower=emcTrig->barrelTowersAboveThreshold(117705); cout<<"Total #'s of towers="<<tower.size()<<endl; for ( iter=tower.begin();iter !=tower.end(); iter++){ cout<<"tower id="<<iter->first<<" adc="<<iter->second<<endl; } cout<<endl; cout<<endl; cout<<" 117602 upsilon (matrix1)="<<emcTrig->isTrigger(117602)<<endl; tower=emcTrig->barrelTowersAboveThreshold(117602); cout<<"Total #'s of towers="<<tower.size()<<endl; for ( iter=tower.begin();iter !=tower.end(); iter++){ cout<<"tower id="<<iter->first<<" adc="<<iter->second<<endl; } cout<<endl; cout<<endl; cout<<" 137602 upsilon (matrix3)="<<emcTrig->isTrigger(137602)<<endl; tower=emcTrig->barrelTowersAboveThreshold(137602); cout<<"Total #'s of towers="<<tower.size()<<endl; for ( iter=tower.begin();iter !=tower.end(); iter++){ cout<<"tower id="<<iter->first<<" adc="<<iter->second<<endl; } cout<<endl; cout<<endl; cout<<" 127611 http-L2="<<emcTrig->isTrigger(127611)<<endl; cout<<endl; cout<<endl; cout<<" 127622 jp0-etot-L2="<<emcTrig->isTrigger(127622)<<endl; cout<<endl; cout<<endl; cout<<" 137622 jp0-etot-L2="<<emcTrig->isTrigger(137622)<<endl; for (int j=0;j<6;j++){ BL1_ADC[j]=0.0; emcTrig->get2006BL1_ADC(j,&hold); BL1_ADC[j]=hold; cout<<" 2x1 Patch "<<j<<" = "<<BL1_ADC[j]<<endl; } } chain->Finish(); cout << "****************************************** " << endl; cout << "total number of events " << total << endl; cout << "****************************************** " << endl; }