Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
34 changes: 25 additions & 9 deletions Dumpers/plugins/RecoSimDumper.cc
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -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;
Expand Down Expand Up @@ -1811,29 +1817,26 @@ std::vector<std::pair<DetId, float> >* RecoSimDumper::getHitsAndEnergiesSC(const
std::vector<double> RecoSimDumper::getScores(const std::vector<std::pair<DetId, float> >*hits_and_energies_Cluster, const std::vector<std::pair<DetId, float> > *hits_and_energies_CaloPart, edm::Handle<EcalRecHitCollection> recHitsEB, edm::Handle<EcalRecHitCollection> recHitsEE)
{
std::vector<double> 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<DetId, float>& 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<DetId, float>& hit_Cluster : *hits_and_energies_Cluster) {
rechits_tot_Cluster+=hit_Cluster.second;
rechits_tot_Cluster_noEnergy+=1.;
}

double rechits_match_Cluster = 0.;
Expand Down Expand Up @@ -1881,8 +1884,14 @@ std::vector<double> RecoSimDumper::getScores(const std::vector<std::pair<DetId,
nSharedXtals = (int)rechits_match_CaloPart_noEnergy;
if(nSharedXtals==0) nSharedXtals=-999;

if(rechits_tot_CaloPart!=0.) simFraction = (double)rechits_match_CaloPart/(double)rechits_tot_CaloPart;
else simFraction = -999.;
if(rechits_tot_CaloPart!=0.){
simFraction = (double)rechits_match_CaloPart/(double)rechits_tot_CaloPart;
sim_rechit_combined_fraction = ( (double) rechits_match_CaloPart / rechits_tot_Cluster );
}
else {
simFraction = -999.;
sim_rechit_combined_fraction = -999.;
}
if(simFraction==0.) simFraction = -999.;

if(rechits_match_CaloPart!=0.) simFraction_old = fabs(1.-(double)rechits_match_Cluster/(double)rechits_match_CaloPart);
Expand Down Expand Up @@ -1930,6 +1939,13 @@ std::vector<double> RecoSimDumper::getScores(const std::vector<std::pair<DetId,
else scores[15] = -999.;
if((double)rechits_match_CaloPart>1.) 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;
}
Expand Down
117 changes: 117 additions & 0 deletions Dumpers/test/condor_production_onlydumper.py
Original file line number Diff line number Diff line change
@@ -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")