Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Porting 5_3_X HI reco updates to 7_2_X #4945

Closed
wants to merge 130 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
130 commits
Select commit Hold shift + click to select a range
5c23da6
started to import 53X reco updates
yetkinyilmaz Jul 25, 2014
758a58c
voronoi jet updates committed
yetkinyilmaz Aug 4, 2014
3e2d6eb
voronoi jet updates committed
yetkinyilmaz Aug 4, 2014
926b2a7
UE calib files temporarily added in
yetkinyilmaz Aug 4, 2014
2d9eb8a
UE calib files temporarily added in
yetkinyilmaz Aug 4, 2014
ac46901
example reco cfg for testing the full reco
yetkinyilmaz Aug 4, 2014
6b39f1e
Merged HiTracking 53X stuff into 72X
mandrenguyen Aug 4, 2014
c934bc6
reco cff updated
yetkinyilmaz Aug 5, 2014
2a23745
updated egamma and tracking for 72X forward port
mandrenguyen Aug 6, 2014
71c8675
centrality cfi update
yetkinyilmaz Aug 6, 2014
a1a8f40
trying to merge
yetkinyilmaz Aug 6, 2014
8c8ecf9
centrality cfi added back after conflict
yetkinyilmaz Aug 6, 2014
80b3a85
UE db object in progress
yetkinyilmaz Aug 6, 2014
ddd16fd
test
quertenmont Aug 7, 2014
c21765a
fixed estimator
quertenmont Aug 8, 2014
61e2324
added update to track DQM from Jaime
mandrenguyen Aug 8, 2014
5dc7dda
fix discriminator
quertenmont Aug 11, 2014
25c4120
Reorganize RecoTracker/DeDx to reduce the memory footprint and cpu time
quertenmont Aug 11, 2014
8e1595a
Add Higgs Photon Jet DQM
Aug 11, 2014
9b7fe93
DQM update from Jaime
mandrenguyen Aug 12, 2014
bd98a91
add triggers check
Aug 13, 2014
444076b
clean out the new UE db stuff for minimal update
yetkinyilmaz Aug 13, 2014
65f0460
add triggered check
Aug 14, 2014
367e164
remove deprecated files
quertenmont Aug 14, 2014
1144221
continue print removed
yetkinyilmaz Aug 14, 2014
683f55c
remove unused function
quertenmont Aug 14, 2014
551c68a
underlying event calibration txt tables removed
yetkinyilmaz Aug 14, 2014
181d47e
comment out not used code
Aug 14, 2014
d492005
clean up
Aug 14, 2014
54a17e6
clean up
Aug 14, 2014
aee7aec
remove unused code
Aug 14, 2014
0d982d5
add HigPhotonJet in DQM
Aug 14, 2014
6e34f88
add number of pfjets
Aug 15, 2014
1cc5b64
add photon rapidity
Aug 15, 2014
00dcc9e
add pfmet phi
Aug 15, 2014
1766d16
add triggerAccept switch
Aug 15, 2014
0ab6788
add triggerAccept switch
Aug 15, 2014
740cf36
add delphijetmet
Aug 16, 2014
da7757f
add invmassjj
Aug 17, 2014
71697c3
add deltajj
Aug 17, 2014
cb08cc2
Merged DEDXUpdates from repository quertenmont
quertenmont Aug 18, 2014
aafa148
fix python reference in DQM and Validation packages
quertenmont Aug 18, 2014
3d72656
yet another bug fix in python config
quertenmont Aug 18, 2014
cc90b2b
Merged refs/pull/4945/head from repository cms-sw
yetkinyilmaz Aug 18, 2014
22b753a
duplicate line removed
yetkinyilmaz Aug 18, 2014
0e570be
add triggers 1D
Aug 18, 2014
3be22ce
add trigvsnvtx
Aug 18, 2014
ff30016
comment out calojets
Aug 18, 2014
5c5a526
remove calojets, clean up code
Aug 18, 2014
261b8ce
add scaled per run
Aug 18, 2014
a025ae5
Implement fixes suggested by Slava K.
quertenmont Aug 19, 2014
47ff4e3
fix these files for PR#4973, but I fear that SUSYBSMAnalysis/Skimming…
quertenmont Aug 19, 2014
81dab27
avoid division by size==0
quertenmont Aug 20, 2014
272131c
add pt cuts for photon and jet
Aug 20, 2014
eafa375
clean up unused lines
Aug 20, 2014
597516b
set to defaul value
Aug 20, 2014
7960aa3
fix typo in parameter name: should be CSCUseGasGainCorrections
slava77devel Aug 21, 2014
1b28f59
add back the packer (use version 2013) and the unpacker (should know …
slava77devel Aug 21, 2014
1203cea
change vertex collection names
MiheeJo Aug 21, 2014
6cd8467
fixed scale problem
Aug 21, 2014
6c7f7c1
clean up code
Aug 21, 2014
56cb080
remove the higphotonjet part
Aug 21, 2014
a8d2194
remove the Client
Aug 21, 2014
174e1a6
reintroduce validation pieces; start using repacked digis
slava77devel Aug 21, 2014
7b57487
fix bug at HLT and add the fillDescriptions function to define defaul…
quertenmont Aug 22, 2014
7d2431a
Bug fix for the dE/dx plots
avartak Aug 22, 2014
73b64a1
Bug fix for the dE/dx plots
avartak Aug 22, 2014
049748b
Adding the efficiency/fakerate v/s dR plots
avartak Aug 22, 2014
1a105fb
Updating the validation script
avartak Aug 22, 2014
0e4ff6d
fix matched hits and conflict (not for the conflicts)
quertenmont Aug 22, 2014
ccf802b
made tracking DQM fixes
jgomez2 Aug 22, 2014
267fb49
forgot to remove old cfi
jgomez2 Aug 22, 2014
9ef8da3
don't use pre-triggers in the packer (one step back from data-like; u…
slava77devel Aug 22, 2014
7ff2bf1
bypass flag added to the packer
slava77devel Aug 22, 2014
533f40d
initialize data members
slava77devel Aug 23, 2014
1850369
add the double photons and the double leptons paths from the template…
Aug 25, 2014
9cda40b
Merge pull request #1 from MiheeJo/mihee_01
yetkinyilmaz Aug 25, 2014
c723070
Merge pull request #2 from jgomez2/jgomez2_02
yetkinyilmaz Aug 25, 2014
9e08666
comments cleaned out
yetkinyilmaz Aug 25, 2014
987b344
Switched off IOV caching in pages
ggovi Aug 25, 2014
5fe2bfc
Merge pull request #4973 from quertenmont/DEDXUpdates
ktf Aug 26, 2014
5af09eb
Merge pull request #5043 from ggovi/new-conddb-iovpages-off
ktf Aug 26, 2014
66f2527
PAT fix to deal with GTs with added payloads
Martin-Grunewald Aug 26, 2014
5e59fa7
Merge pull request #5047 from dabelknap/config_dec2012
ktf Aug 26, 2014
b828b70
fix the summing of TriggerResults across multiple streams
fwyzard Aug 26, 2014
0a41caf
Merge pull request #5053 from Martin-Grunewald/PATfix
ktf Aug 26, 2014
a7d1ac8
Migrate DQMFileSaver to use LogAbsolute instead of std::cout.
Aug 26, 2014
7de6f06
Merge pull request #5056 from fwyzard/fix_TriggerResults_sums
ktf Aug 26, 2014
b7194e2
DQMFileSaver now outputs everything to LogAbsolute in a single line.
Aug 26, 2014
a676a6b
Merge pull request #5034 from slava77/CMSSW_7_2_0_pre4/cscRepackRun2
ktf Aug 26, 2014
3277a32
extend the DQMEDHarvester interface to trigger also Runs and Lumis tr…
deguio Aug 26, 2014
ea5f869
somebody is actually using the beginRun in harvesting for log messages
deguio Aug 26, 2014
33ffa7d
Merge pull request #5059 from dmitrijus/coutfix
davidlange6 Aug 26, 2014
087e6b4
Merge pull request #5042 from HuguesBrun/addNewHggAndHwwPaths
davidlange6 Aug 26, 2014
92884bf
Merge pull request #5030 from avartak/tkvalidation-dedxplotfix-addeff…
davidlange6 Aug 26, 2014
9f4648a
Merge pull request #4946 from xshi/xshi-hlt-photon-jet-dqm
davidlange6 Aug 26, 2014
e957ed0
Fix clang compiler error by explicitly calling default constructor
Dr15Jones Aug 26, 2014
e6dc464
remove assert so that relvals run - need to fix the real problem too...
davidlange6 Aug 26, 2014
c9541bd
whoops - remove log file
davidlange6 Aug 26, 2014
2051d30
simple clang fix for electronMVAEstimator
Dr15Jones Aug 26, 2014
9d26238
Merge pull request #5068 from davidlange6/remove_taudau_assert
ktf Aug 26, 2014
600c5f9
Fix clang error.
alja Aug 26, 2014
723ae83
Fix clang warning.
alja Aug 26, 2014
c2c46b0
Adding to GRun the Higgs Control Triggers (CMSHLT-83)
Martin-Grunewald Aug 27, 2014
875e735
Merged refs/pull/5072/head from repository cms-sw
Martin-Grunewald Aug 27, 2014
579c1f1
add cms.Sequence to the three 2012-json filters, to facilitate inport…
Aug 27, 2014
aeb8ae3
Fix L1 for placeholder HIon/PIon menus
Martin-Grunewald Aug 27, 2014
ccf80f6
Merged refs/pull/5072/head from repository cms-sw
Martin-Grunewald Aug 27, 2014
3a69dbf
Merge pull request #5070 from alja/72_pf_clang
ktf Aug 27, 2014
7fbe336
Fix confdb.py extraction and FULL
Martin-Grunewald Aug 27, 2014
967ba43
Merge pull request #5069 from Dr15Jones/clangFoxForElectronMVAEstimator
ktf Aug 27, 2014
fd0e72f
Merge pull request #5067 from Dr15Jones/clangFixForGeomDet
ktf Aug 27, 2014
80b7009
Merge pull request #5073 from franzoni/from-CMSSW_7_2_X_2014-08-27-02…
ktf Aug 27, 2014
cc61546
Merge pull request #5078 from dabelknap/config_dec2012
davidlange6 Aug 27, 2014
683ad0a
Merge pull request #5072 from Martin-Grunewald/HiggsControlTriggers
davidlange6 Aug 27, 2014
7c3eecb
Merge pull request #5062 from deguio/extendDQMEDHarvester
davidlange6 Aug 27, 2014
e962fbf
use of EDProduct.h removed
yetkinyilmaz Sep 1, 2014
b53c46a
Merged refs/pull/4945/head from repository cms-sw
yetkinyilmaz Sep 1, 2014
6ccf1e9
Merge remote-tracking branch 'remotes/yetkin/pr_02' into from-CMSSW_7…
yetkinyilmaz Sep 1, 2014
ccb7675
First migration to consumes
mandrenguyen Sep 3, 2014
c5f0643
finished fixing consumes
mandrenguyen Sep 5, 2014
fd67865
replaced dropped isolation cff
mandrenguyen Sep 5, 2014
af7a6aa
HI Gen validation now doesn't crash when HI products are missing
mandrenguyen Sep 6, 2014
e08881b
one liner to tracking DQM
mandrenguyen Sep 8, 2014
c3abd0a
fixed alca workflow problems
mandrenguyen Sep 8, 2014
5f9c2e5
more hiSelectedTracks->hiGeneralTracks
mandrenguyen Sep 9, 2014
bea647e
clean up, override statements back in
yetkinyilmaz Sep 9, 2014
70c3df0
Merge branch 'pr_03' of github.com:CmsHI/cmssw into pr_03
yetkinyilmaz Sep 9, 2014
9333ea9
removed extra stuff from HI PF jets
mandrenguyen Sep 10, 2014
8d8366f
Merge pull request #3 from CmsHI/pr_03
yetkinyilmaz Sep 11, 2014
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
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
ALCARECOTkAlMinBiasHIDCSFilter = ALCARECOTkAlMinBiasDCSFilter.clone()

ALCARECOTkAlMinBiasHI = ALCARECOTkAlMinBias.clone(
src = 'hiSelectedTracks'
src = 'hiGeneralTracks'
)

seqALCARECOTkAlMinBiasHI = cms.Sequence(ALCARECOTkAlMinBiasHIHLT+ALCARECOTkAlMinBiasHIDCSFilter+ALCARECOTkAlMinBiasHI)
1 change: 1 addition & 0 deletions CalibTracker/SiStripChannelGain/plugins/BuildFile.xml
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
<use name="DataFormats/TrackerRecHit2D"/>
<use name="DataFormats/TrajectorySeed"/>
<use name="DataFormats/MuonReco"/>
<use name="RecoTracker/DeDx"/>
<use name="Geometry/CommonDetUnit"/>
<use name="Geometry/CommonTopologies"/>
<use name="Geometry/Records"/>
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
// -*- C++ -*-
//
// Package: DeDxDiscriminatorLearnerFromCalibTree
// Class: DeDxDiscriminatorLearnerFromCalibTree
// Package: DeDxDiscriminatorLearner
// Class: DeDxDiscriminatorLearner
//
/**\class DeDxDiscriminatorLearnerFromCalibTree DeDxDiscriminatorLearnerFromCalibTree.cc RecoTracker/DeDxDiscriminatorLearnerFromCalibTree/src/DeDxDiscriminatorLearnerFromCalibTree.cc
/**\class DeDxDiscriminatorLearner DeDxDiscriminatorLearner.cc RecoTracker/DeDxDiscriminatorLearner/src/DeDxDiscriminatorLearner.cc

Description: <one line class summary>

Expand All @@ -19,9 +19,8 @@
// system include files
#include <memory>

#include "RecoTracker/DeDx/plugins/DeDxDiscriminatorLearnerFromCalibTree.h"
#include "CalibTracker/SiStripChannelGain/plugins/DeDxDiscriminatorLearner.h"

//#include "DataFormats/TrackReco/interface/DeDxData.h"
#include "DataFormats/TrackReco/interface/Track.h"
#include "TrackingTools/PatternTools/interface/TrajTrackAssociation.h"

Expand All @@ -33,9 +32,10 @@ using namespace reco;
using namespace std;
using namespace edm;

DeDxDiscriminatorLearnerFromCalibTree::DeDxDiscriminatorLearnerFromCalibTree(const edm::ParameterSet& iConfig) : ConditionDBWriter<PhysicsTools::Calibration::HistogramD3D>(iConfig)
DeDxDiscriminatorLearner::DeDxDiscriminatorLearner(const edm::ParameterSet& iConfig) : ConditionDBWriter<PhysicsTools::Calibration::HistogramD3D>(iConfig)
{
std::cout << "TEST 0 " << endl;
m_tracksTag = consumes<reco::TrackCollection>(iConfig.getParameter<edm::InputTag>("tracks"));
m_trajTrackAssociationTag = consumes<TrajTrackAssociationCollection>(iConfig.getParameter<edm::InputTag>("trajectoryTrackAssociation"));

P_Min = iConfig.getParameter<double> ("P_Min" );
P_Max = iConfig.getParameter<double> ("P_Max" );
Expand All @@ -47,112 +47,162 @@ std::cout << "TEST 0 " << endl;
Charge_Max = iConfig.getParameter<double> ("Charge_Max" );
Charge_NBins = iConfig.getParameter<int> ("Charge_NBins");

MinTrackTMomentum = iConfig.getUntrackedParameter<double> ("minTrackMomentum" , 5.0);
MaxTrackTMomentum = iConfig.getUntrackedParameter<double> ("maxTrackMomentum" , 99999.0);
MinTrackMomentum = iConfig.getUntrackedParameter<double> ("minTrackMomentum" , 5.0);
MaxTrackMomentum = iConfig.getUntrackedParameter<double> ("maxTrackMomentum" , 99999.0);
MinTrackEta = iConfig.getUntrackedParameter<double> ("minTrackEta" , -5.0);
MaxTrackEta = iConfig.getUntrackedParameter<double> ("maxTrackEta" , 5.0);
MaxNrStrips = iConfig.getUntrackedParameter<unsigned>("maxNrStrips" , 255);
MinTrackHits = iConfig.getUntrackedParameter<unsigned>("MinTrackHits" , 4);

algoMode = iConfig.getUntrackedParameter<string> ("AlgoMode" , "SingleJob");
HistoFile = iConfig.getUntrackedParameter<string> ("HistoFile" , "out.root");
VInputFiles = iConfig.getUntrackedParameter<vector<string> > ("InputFiles");

VInputFiles = iConfig.getParameter<vector<string> > ("InputFiles");

std::cout << "TEST 1 " << endl;


useCalibration = iConfig.getUntrackedParameter<bool>("UseCalibration", false);
shapetest = iConfig.getParameter<bool>("ShapeTest");
useCalibration = iConfig.getUntrackedParameter<bool>("UseCalibration");
m_calibrationPath = iConfig.getUntrackedParameter<string>("calibrationPath");

std::cout << "TEST 2 " << endl;

}


DeDxDiscriminatorLearnerFromCalibTree::~DeDxDiscriminatorLearnerFromCalibTree(){

std::cout << "TEST Z " << endl;
}
DeDxDiscriminatorLearner::~DeDxDiscriminatorLearner(){}

// ------------ method called once each job just before starting event loop ------------

void DeDxDiscriminatorLearnerFromCalibTree::algoBeginJob(const edm::EventSetup& iSetup)
void DeDxDiscriminatorLearner::algoBeginJob(const edm::EventSetup& iSetup)
{
std::cout << "TEST 3 " << endl;

// Charge_Vs_Path = new TH2F ("Charge_Vs_Path" , "Charge_Vs_Path" , 24, 0.2, 1.4, 250, 0, 5000);
Charge_Vs_Path = new TH3F ("Charge_Vs_Path" , "Charge_Vs_Path" , P_NBins, P_Min, P_Max, Path_NBins, Path_Min, Path_Max, Charge_NBins, Charge_Min, Charge_Max);

std::cout << "TEST A " << endl;
if(useCalibration && calibGains.size()==0){
edm::ESHandle<TrackerGeometry> tkGeom;
iSetup.get<TrackerDigiGeometryRecord>().get( tkGeom );
m_off = tkGeom->offsetDU(GeomDetEnumerators::PixelBarrel); //index start at the first pixel

edm::ESHandle<TrackerGeometry> tkGeom;
iSetup.get<TrackerDigiGeometryRecord>().get( tkGeom );
m_tracker = tkGeom.product();

auto const & Det = tkGeom->dets();
for(unsigned int i=0;i<Det.size();i++){
DetId Detid = Det[i]->geographicalId();
int SubDet = Detid.subdetId();

if( SubDet == StripSubdetector::TIB || SubDet == StripSubdetector::TID ||
SubDet == StripSubdetector::TOB || SubDet == StripSubdetector::TEC ){

auto DetUnit = dynamic_cast<StripGeomDetUnit const*> (Det[i]);
if(!DetUnit)continue;

const StripTopology& Topo = DetUnit->specificTopology();
unsigned int NAPV = Topo.nstrips()/128;

double Eta = DetUnit->position().basicVector().eta();
double R = DetUnit->position().basicVector().transverse();
double Thick = DetUnit->surface().bounds().thickness();
for(unsigned int j=0;j<NAPV;j++){

stAPVInfo* APV = new stAPVInfo;
APV->DetId = Detid.rawId();
APV->SubDet = SubDet;
APV->Eta = Eta;
APV->R = R;
APV->Thickness = Thick;
APV->APVId = j;
APVsColl[APV->DetId<<3 | APV->APVId] = APV;
}
}
DeDxTools::makeCalibrationMap(m_calibrationPath, *tkGeom, calibGains, m_off);
}

std::cout << "TEST B " << endl;


MakeCalibrationMap();
std::cout << "TEST C " << endl;


algoAnalyzeTheTree();
std::cout << "TEST D " << endl;

//Read the calibTree if in calibTree mode
if(strcmp(algoMode.c_str(),"CalibTree")==0)algoAnalyzeTheTree(iSetup);
}

// ------------ method called once each job just after ending the event loop ------------


void DeDxDiscriminatorLearnerFromCalibTree::algoEndJob()
void DeDxDiscriminatorLearner::algoEndJob()
{
if( strcmp(algoMode.c_str(),"MultiJob")==0){
TFile* Output = new TFile(HistoFile.c_str(), "RECREATE");
Charge_Vs_Path->Write();
Output->Write();
Output->Close();
}else if( strcmp(algoMode.c_str(),"WriteOnDB")==0){
TFile* Input = new TFile(HistoFile.c_str() );
Charge_Vs_Path = (TH3F*)(Input->FindObjectAny("Charge_Vs_Path"))->Clone();
Input->Close();
}else if(strcmp(algoMode.c_str(),"CalibTree")==0){
TFile* Output = new TFile(HistoFile.c_str(), "RECREATE");
Charge_Vs_Path->Write();
Output->Write();
Output->Close();
TFile* Input = new TFile(HistoFile.c_str() );
Charge_Vs_Path = (TH3F*)(Input->FindObjectAny("Charge_Vs_Path"))->Clone();
Input->Close();
}
}

void DeDxDiscriminatorLearnerFromCalibTree::algoAnalyze(const edm::Event& iEvent, const edm::EventSetup& iSetup)
{
void DeDxDiscriminatorLearner::algoAnalyze(const edm::Event& iEvent, const edm::EventSetup& iSetup)
{
Handle<TrajTrackAssociationCollection> trajTrackAssociationHandle;
iEvent.getByToken(m_trajTrackAssociationTag, trajTrackAssociationHandle);

edm::Handle<reco::TrackCollection> trackCollectionHandle;
iEvent.getByToken(m_tracksTag,trackCollectionHandle);

unsigned track_index = 0;
for(TrajTrackAssociationCollection::const_iterator it = trajTrackAssociationHandle->begin(); it!=trajTrackAssociationHandle->end(); ++it, track_index++) {
const Track& track = *it->val;
const Trajectory& traj = *it->key;

if(track.eta() <MinTrackEta || track.eta()>MaxTrackEta ){continue;}
if(track.pt() <MinTrackMomentum || track.pt() >MaxTrackMomentum){continue;}
if(track.found()<MinTrackHits ){continue;}

const vector<TrajectoryMeasurement> & measurements = traj.measurements();
for(vector<TrajectoryMeasurement>::const_iterator it = measurements.begin(); it!=measurements.end(); it++){
TrajectoryStateOnSurface trajState=it->updatedState();
if( !trajState.isValid()) continue;


const TrackingRecHit * recHit=(*it->recHit()).hit();
if(!recHit || !recHit->isValid())continue;
LocalVector trackDirection = trajState.localDirection();
float cosine = trackDirection.z()/trackDirection.mag();

processHit(recHit, trajState.localMomentum().mag(), cosine, trajState);
}
}

}


void DeDxDiscriminatorLearner::processHit(const TrackingRecHit* recHit, float trackMomentum, float& cosine, const TrajectoryStateOnSurface& trajState){
auto const & thit = static_cast<BaseTrackerRecHit const&>(*recHit);
if(!thit.isValid())return;

auto const & clus = thit.firstClusterRef();
if(!clus.isValid())return;

int NSaturating = 0;
if(clus.isPixel()){
return;
}else if(clus.isStrip() && !thit.isMatched()){
auto& detUnit = *(recHit->detUnit());
auto& cluster = clus.stripCluster();
if( cluster.amplitudes().size()>MaxNrStrips) { return; }
if( DeDxTools::IsSpanningOver2APV (cluster.firstStrip(), cluster.amplitudes().size())) { return; }
if(!DeDxTools::IsFarFromBorder (trajState, &detUnit )) { return; }
float pathLen = 10.0*detUnit.surface().bounds().thickness()/fabs(cosine);
float chargeAbs = DeDxTools::getCharge(&cluster,NSaturating, detUnit, calibGains, m_off);
float charge = chargeAbs/pathLen;
if(!shapetest || (shapetest && DeDxTools::shapeSelection(cluster.amplitudes()))){
Charge_Vs_Path->Fill(trackMomentum, pathLen, charge);
}
}else if(clus.isStrip() && thit.isMatched()){
const SiStripMatchedRecHit2D* matchedHit=dynamic_cast<const SiStripMatchedRecHit2D*>(recHit);
if(!matchedHit)return;
const GluedGeomDet* gdet = static_cast<const GluedGeomDet*>(matchedHit->det());

auto& detUnitM = *(gdet->monoDet());
auto& clusterM = matchedHit->monoCluster();
if( clusterM.amplitudes().size()>MaxNrStrips) { return; }
if( DeDxTools::IsSpanningOver2APV (clusterM.firstStrip(), clusterM.amplitudes().size())) { return; }
if(!DeDxTools::IsFarFromBorder (trajState, &detUnitM )) { return; }
float pathLen = 10.0*detUnitM.surface().bounds().thickness()/fabs(cosine);
float chargeAbs = DeDxTools::getCharge(&clusterM,NSaturating, detUnitM, calibGains, m_off);
float charge = chargeAbs/pathLen;
if(!shapetest || (shapetest && DeDxTools::shapeSelection(clusterM.amplitudes()))){
Charge_Vs_Path->Fill(trackMomentum, pathLen, charge);
}

auto& detUnitS = *(gdet->stereoDet());
auto& clusterS = matchedHit->stereoCluster();
if( clusterS.amplitudes().size()>MaxNrStrips) { return; }
if( DeDxTools::IsSpanningOver2APV (clusterS.firstStrip(), clusterS.amplitudes().size())) { return; }
if(!DeDxTools::IsFarFromBorder (trajState, &detUnitS )) { return; }
pathLen = 10.0*detUnitS.surface().bounds().thickness()/fabs(cosine);
chargeAbs = DeDxTools::getCharge(&clusterS,NSaturating, detUnitS, calibGains, m_off);
charge = chargeAbs/pathLen;
if(!shapetest || (shapetest && DeDxTools::shapeSelection(clusterS.amplitudes()))){
Charge_Vs_Path->Fill(trackMomentum, pathLen, charge);
}
}
}


void DeDxDiscriminatorLearnerFromCalibTree::algoAnalyzeTheTree()
//this function is only used when we run over a calibTree instead of running over EDM files
void DeDxDiscriminatorLearner::algoAnalyzeTheTree(const edm::EventSetup& iSetup)
{
edm::ESHandle<TrackerGeometry> tkGeom;
iSetup.get<TrackerDigiGeometryRecord>().get( tkGeom );

unsigned int NEvent = 0;
for(unsigned int i=0;i<VInputFiles.size();i++){
printf("Openning file %3i/%3i --> %s\n",i+1, (int)VInputFiles.size(), (char*)(VInputFiles[i].c_str())); fflush(stdout);
Expand Down Expand Up @@ -205,11 +255,12 @@ void DeDxDiscriminatorLearnerFromCalibTree::algoAnalyzeTheTree()

int Charge = 0;
if(useCalibration){
stAPVInfo* APV = APVsColl[((*rawid)[c]<<3) | (unsigned int)((*firststrip)[c]/128)];
auto & gains = calibGains[tkGeom->idToDetUnit(DetId((*rawid)[c]))->index()-m_off];
auto & gain = gains[(*firststrip)[c]/128];
for(unsigned int s=0;s<(*nstrips)[c];s++){
int StripCharge = (*amplitude)[FirstAmplitude-(*nstrips)[c]+s];
if(StripCharge<254){
StripCharge=(int)(StripCharge/APV->CalibGain);
StripCharge=(int)(StripCharge/gain);
if(StripCharge>=1024){
StripCharge = 255;
}else if(StripCharge>=254){
Expand All @@ -231,22 +282,14 @@ void DeDxDiscriminatorLearnerFromCalibTree::algoAnalyzeTheTree()
}


PhysicsTools::Calibration::HistogramD3D* DeDxDiscriminatorLearnerFromCalibTree::getNewObject()
PhysicsTools::Calibration::HistogramD3D* DeDxDiscriminatorLearner::getNewObject()
{
std::cout << "TEST X " << endl;


// if( strcmp(algoMode.c_str(),"MultiJob")==0)return NULL;

PhysicsTools::Calibration::HistogramD3D* obj;
obj = new PhysicsTools::Calibration::HistogramD3D(
Charge_Vs_Path->GetNbinsX(), Charge_Vs_Path->GetXaxis()->GetXmin(), Charge_Vs_Path->GetXaxis()->GetXmax(),
Charge_Vs_Path->GetNbinsY(), Charge_Vs_Path->GetYaxis()->GetXmin(), Charge_Vs_Path->GetYaxis()->GetXmax(),
Charge_Vs_Path->GetNbinsZ(), Charge_Vs_Path->GetZaxis()->GetXmin(), Charge_Vs_Path->GetZaxis()->GetXmax());

std::cout << "TEST Y " << endl;


for(int ix=0; ix<=Charge_Vs_Path->GetNbinsX()+1; ix++){
for(int iy=0; iy<=Charge_Vs_Path->GetNbinsY()+1; iy++){
for(int iz=0; iz<=Charge_Vs_Path->GetNbinsZ()+1; iz++){
Expand All @@ -256,36 +299,9 @@ std::cout << "TEST Y " << endl;
}
}

std::cout << "TEST W " << endl;

return obj;
}



void DeDxDiscriminatorLearnerFromCalibTree::MakeCalibrationMap(){
if(!useCalibration)return;


TChain* t1 = new TChain("SiStripCalib/APVGain");
t1->Add(m_calibrationPath.c_str());

unsigned int tree_DetId;
unsigned char tree_APVId;
double tree_Gain;

t1->SetBranchAddress("DetId" ,&tree_DetId );
t1->SetBranchAddress("APVId" ,&tree_APVId );
t1->SetBranchAddress("Gain" ,&tree_Gain );

for (unsigned int ientry = 0; ientry < t1->GetEntries(); ientry++) {
t1->GetEntry(ientry);
stAPVInfo* APV = APVsColl[(tree_DetId<<3) | (unsigned int)tree_APVId];
APV->CalibGain = tree_Gain;
}

}


//define this as a plug-in
DEFINE_FWK_MODULE(DeDxDiscriminatorLearnerFromCalibTree);
DEFINE_FWK_MODULE(DeDxDiscriminatorLearner);
Loading