diff --git a/Dumpers/plugins/RecoSimDumper.cc b/Dumpers/plugins/RecoSimDumper.cc index 286295c..b4b6995 100644 --- a/Dumpers/plugins/RecoSimDumper.cc +++ b/Dumpers/plugins/RecoSimDumper.cc @@ -1020,6 +1020,9 @@ void RecoSimDumper::analyze(const edm::Event& ev, const edm::EventSetup& iSetup) if(scoreType_=="sim_fraction_min3_100MeVCut") simScore.push_back(scores_100MeVCut[6]); if(scoreType_=="hgcal_caloToCluster") simScore.push_back(scores[7]); if(scoreType_=="hgcal_clusterToCalo") simScore.push_back(scores[8]); + if(scoreType_=="sim_rechit_combined_fraction10") simScore.push_back(scores[17]); + if(scoreType_=="sim_rechit_combined_fraction30") simScore.push_back(scores[18]); + if(scoreType_=="sim_rechit_combined_fraction50") simScore.push_back(scores[19]); } if(saveScores_){ pfCluster_dR_simScore[iPFCl] = dR_simScore; @@ -1142,7 +1145,10 @@ void RecoSimDumper::analyze(const edm::Event& ev, const edm::EventSetup& iSetup) if(scoreType_=="sim_fraction_min3_50MeVCut") simScore.push_back(scores_50MeVCut[6]); if(scoreType_=="sim_fraction_min3_100MeVCut") simScore.push_back(scores_100MeVCut[6]); if(scoreType_=="hgcal_caloToCluster") simScore.push_back(scores[7]); - if(scoreType_=="hgcal_clusterToCalo") simScore.push_back(scores[8]); + if(scoreType_=="hgcal_clusterToCalo") simScore.push_back(scores[8]); + if(scoreType_=="sim_rechit_combined_fraction10") simScore.push_back(scores[17]); + if(scoreType_=="sim_rechit_combined_fraction30") simScore.push_back(scores[18]); + if(scoreType_=="sim_rechit_combined_fraction50") simScore.push_back(scores[19]); } if(saveScores_){ superCluster_dR_simScore[iSC] = dR_simScore; @@ -1811,29 +1817,26 @@ std::vector >* RecoSimDumper::getHitsAndEnergiesSC(const std::vector RecoSimDumper::getScores(const std::vector >*hits_and_energies_Cluster, const std::vector > *hits_and_energies_CaloPart, edm::Handle recHitsEB, edm::Handle recHitsEE) { std::vector scores; - scores.resize(17); + scores.resize(20); int nSharedXtals=-999; double simFraction=-999.; double simFraction_old=999.; double sim_rechit_diff=0.; - double sim_rechit_fraction=0.; + double sim_rechit_fraction=0.; + double sim_rechit_combined_fraction=0.; double global_sim_rechit_fraction=-999.; double hgcal_caloToCluster=999.; double hgcal_clusterToCalo=999.; double rechits_tot_CaloPart = 0.; - double rechits_tot_CaloPart_noEnergy = 0.; for(const std::pair& hit_CaloPart : *hits_and_energies_CaloPart) { rechits_tot_CaloPart+=hit_CaloPart.second; - rechits_tot_CaloPart_noEnergy+=1.; } double rechits_tot_Cluster = 0.; - double rechits_tot_Cluster_noEnergy = 0.; for(const std::pair& hit_Cluster : *hits_and_energies_Cluster) { rechits_tot_Cluster+=hit_Cluster.second; - rechits_tot_Cluster_noEnergy+=1.; } double rechits_match_Cluster = 0.; @@ -1881,8 +1884,14 @@ std::vector RecoSimDumper::getScores(const std::vector RecoSimDumper::getScores(const std::vector1.) scores[16] = simFraction; else scores[16] = -999.; + + if (simFraction > 0.01 && sim_rechit_combined_fraction > 0.1) scores[17] = simFraction; + else scores[17] = -999.; + if (simFraction > 0.01 && sim_rechit_combined_fraction > 0.3) scores[18] = simFraction; + else scores[18] = -999.; + if (simFraction > 0.01 && sim_rechit_combined_fraction > 0.5) scores[19] = simFraction; + else scores[19] = -999.; return scores; } diff --git a/Dumpers/test/condor_production_onlydumper.py b/Dumpers/test/condor_production_onlydumper.py new file mode 100644 index 0000000..66321ed --- /dev/null +++ b/Dumpers/test/condor_production_onlydumper.py @@ -0,0 +1,117 @@ +import sys +import os +import argparse +import random +from math import * + +with open("command.txt", "w") as of: + of.write(" ".join(["python"]+sys.argv)) + +''' +This scripts runs hadd on single crystal files to +group them in strips reading a DOF file +''' +parser = argparse.ArgumentParser() + +#parser.add_argument("-f", "--files", type=str, help="input file", required=True) +parser.add_argument("-i", "--inputdir", type=str, help="Inputdir", required=True) +parser.add_argument("-o", "--outputdir", type=str, help="Outputdir", required=True) +parser.add_argument("-c", "--cmssw", type=str, help="CMSSW tar", required=True) +parser.add_argument("-d", "---dumper", type=str, help="Dumper to run", required=True, default="RecoSimDumper") +parser.add_argument("-q", "--queue", type=str, help="Condor queue", default="longlunch", required=True) +parser.add_argument("-e", "--eos", type=str, default="user", help="EOS instance user/cms", required=False) +parser.add_argument("--redo", action="store_true", default=False, help="Redo all files") +args = parser.parse_args() + + +# Prepare condor jobs +condor = '''executable = run_script.sh +output = output/strips.$(ClusterId).$(ProcId).out +error = error/strips.$(ClusterId).$(ProcId).err +log = log/strips.$(ClusterId).log +transfer_input_files = run_script.sh + ++JobFlavour = "{queue}" ++AccountingGroup = "group_u_CMS.CAF.COMM" +queue arguments from arguments.txt +''' + +condor = condor.replace("{queue}", args.queue) +user = os.environ["USER"] + +script = '''#!/bin/sh -e + +export X509_USER_PROXY=/afs/cern.ch/user/{user1}/{user}/.proxy +voms-proxy-info + +cp -r {cmssw_loc} . +cd {cmssw_file}/src + +echo -e "evaluate" +eval `scramv1 ru -sh` +export HOME='/afs/cern.ch/user/{user1}/{user}' + +JOBID=$1; +INPUTFILE=$2; +OUTPUTFILE=$3; + +cd RecoSimStudies/Dumpers/ + +echo -e "cmsRun.."; + +echo -e ">>> copy from STEP3"; +xrdcp --nopbar root://eos{eosinstance}.cern.ch/${INPUTFILE} step3.root; + +echo -e "Running dumper.." + +cmsRun python/{dumper}_cfg.py inputFile=step3.root outputFile=output_${JOBID}.root + + +echo -e "Copying result to: $OUTPUTFILE"; +xrdcp -f --nopbar output_${JOBID}.root root://eos{eosinstance}.cern.ch/${OUTPUTFILE}; + +echo -e "DONE"; +''' + +script = script.replace("{eosinstance}", args.eos) +script = script.replace("{user1}", user[:1]) +script = script.replace("{user}", user) +cmssw_file = args.cmssw.split("/")[-1] +script = script.replace("{cmssw_loc}", args.cmssw) +script = script.replace("{cmssw_file}", cmssw_file) +script = script.replace("{dumper}", args.dumper) + +arguments= [] +if not os.path.exists(args.outputdir): + os.makedirs(args.outputdir) + +outputfiles = [args.outputdir +"/"+f for f in os.listdir(args.outputdir)] +inputfiles = [ f for f in os.listdir(args.inputdir)] + +jobid = 0 +for ifile in inputfiles: + jobid +=1 + inputfile = args.inputdir + "/" + ifile + outputfile = args.outputdir + "/" + ifile[:-5] + "_output.root" + + if not args.redo and outputfile in outputfiles: + continue + + arguments.append("{} {} {}".format(jobid,inputfile,outputfile)) + +print("Njobs: ", len(arguments)) + +with open("condor_job.txt", "w") as cnd_out: + cnd_out.write(condor) + +with open("arguments.txt", "w") as args: + args.write("\n".join(arguments)) + +with open("run_script.sh", "w") as rs: + rs.write(script) + +#os.system("condor_submit condor_job.txt") + + + +