From b6224f7f9b341c8376ec4881d07591b635a07008 Mon Sep 17 00:00:00 2001 From: Camilo Salazar Date: Mon, 7 Aug 2017 10:33:30 +0200 Subject: [PATCH 01/31] Just a test --- Validation/GEMCR/test/README.txt | 1 + 1 file changed, 1 insertion(+) create mode 100644 Validation/GEMCR/test/README.txt diff --git a/Validation/GEMCR/test/README.txt b/Validation/GEMCR/test/README.txt new file mode 100644 index 0000000000000..20fee0ffa1af0 --- /dev/null +++ b/Validation/GEMCR/test/README.txt @@ -0,0 +1 @@ +New fork made by Camilo Andres Salazar G From 733c7e9c2da11078352927c8390b3711f6453302 Mon Sep 17 00:00:00 2001 From: Camilo Salazar Date: Mon, 7 Aug 2017 13:57:53 +0200 Subject: [PATCH 02/31] Comments on the findSeeds function --- Validation/GEMCR/src/gemcrValidation.cc | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/Validation/GEMCR/src/gemcrValidation.cc b/Validation/GEMCR/src/gemcrValidation.cc index 7a7625a3678b0..ebd56ecdf1b6d 100644 --- a/Validation/GEMCR/src/gemcrValidation.cc +++ b/Validation/GEMCR/src/gemcrValidation.cc @@ -60,7 +60,7 @@ gemcrValidation::gemcrValidation(const edm::ParameterSet& cfg): GEMBaseValidatio void gemcrValidation::bookHistograms(DQMStore::IBooker & ibooker, edm::Run const & Run, edm::EventSetup const & iSetup ) { GEMGeometry_ = initGeometry(iSetup); if ( GEMGeometry_ == nullptr) return ; - + const std::vector& superChambers_ = GEMGeometry_->superChambers(); for (auto sch : superChambers_){ int n_lay = sch->nChambers(); @@ -160,14 +160,21 @@ const GEMGeometry* gemcrValidation::initGeometry(edm::EventSetup const & iSetup) gemcrValidation::~gemcrValidation() { } +///////////////////////////////////////////////// +/// Function to modify CAS +///////////////////////////////////////////////// + +/*This function recives MuonRecHitContainer and return std::vector */ auto_ptr > gemcrValidation::findSeeds(MuonTransientTrackingRecHit::MuonRecHitContainer &muRecHits) +/*auto_ptr is a smart pointer that manages an object obtained via new expression and deletes that object when auto_ptr itself is destroyed*/ +/*std::unique_ptr is preferred for this and other uses. (since C++11)*/ { auto_ptr > tmptrajectorySeeds( new vector()); - for (auto hit1 : muRecHits){ + for (auto hit1 : muRecHits){/* Range-based for loop, access by value, the type of hit1 is MuonTransientTrackingRecHit::MuonRecHitContaine&*/ for (auto hit2 : muRecHits){ - if (hit1->globalPosition().y() < hit2->globalPosition().y()){ - LocalPoint segPos = hit1->localPosition(); - GlobalVector segDirGV(hit2->globalPosition().x() - hit1->globalPosition().x(), + if (hit1->globalPosition().y() < hit2->globalPosition().y()){/*y direction is up-down? (cosmic), see if hit1 is Higher than the hit2*/ + LocalPoint segPos = hit1->localPosition();/**/ + GlobalVector segDirGV(hit2->globalPosition().x() - hit1->globalPosition().x(),/**/ (hit2->globalPosition().y() - hit1->globalPosition().y()), hit2->globalPosition().z() - hit1->globalPosition().z()); From 8cbc7ca152ebc2bd447a8a8fe7e7cb5d4a679ab2 Mon Sep 17 00:00:00 2001 From: Camilo Salazar Date: Mon, 7 Aug 2017 15:05:25 +0200 Subject: [PATCH 03/31] More comments --- Validation/GEMCR/src/gemcrValidation.cc | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Validation/GEMCR/src/gemcrValidation.cc b/Validation/GEMCR/src/gemcrValidation.cc index ebd56ecdf1b6d..3d9c61105ae2f 100644 --- a/Validation/GEMCR/src/gemcrValidation.cc +++ b/Validation/GEMCR/src/gemcrValidation.cc @@ -173,12 +173,12 @@ auto_ptr > gemcrValidation::findSeeds(MuonTransientT for (auto hit1 : muRecHits){/* Range-based for loop, access by value, the type of hit1 is MuonTransientTrackingRecHit::MuonRecHitContaine&*/ for (auto hit2 : muRecHits){ if (hit1->globalPosition().y() < hit2->globalPosition().y()){/*y direction is up-down? (cosmic), see if hit1 is Higher than the hit2*/ - LocalPoint segPos = hit1->localPosition();/**/ - GlobalVector segDirGV(hit2->globalPosition().x() - hit1->globalPosition().x(),/**/ + LocalPoint segPos = hit1->localPosition();/*Define a LocalPoint with the position of hit1*/ + GlobalVector segDirGV(hit2->globalPosition().x() - hit1->globalPosition().x(),/*Define a vector called segDirGV from hit2-hit1 */ (hit2->globalPosition().y() - hit1->globalPosition().y()), hit2->globalPosition().z() - hit1->globalPosition().z()); - segDirGV *=10; + segDirGV *=10;/*multiply per 10 ????*/ //segDirGV *=1; LocalVector segDir = hit1->det()->toLocal(segDirGV); From 49487df03e7df9136143c0dd3872664cecb2a6d3 Mon Sep 17 00:00:00 2001 From: Camilo Salazar Date: Mon, 14 Aug 2017 11:53:13 +0200 Subject: [PATCH 04/31] Struct RefLayer added to only seed from reference layer --- Validation/GEMCR/src/gemcrValidation.cc | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/Validation/GEMCR/src/gemcrValidation.cc b/Validation/GEMCR/src/gemcrValidation.cc index 3d9c61105ae2f..e3fd0022b9cf5 100644 --- a/Validation/GEMCR/src/gemcrValidation.cc +++ b/Validation/GEMCR/src/gemcrValidation.cc @@ -36,6 +36,14 @@ #include using namespace std; + +struct RefLayer{ + //layer 1 is the upper one + bool layer1; + bool layer2; + bool layer3; +}; + gemcrValidation::gemcrValidation(const edm::ParameterSet& cfg): GEMBaseValidation(cfg) { InputTagToken_RH = consumes(cfg.getParameter("recHitsInputLabel")); @@ -71,7 +79,7 @@ void gemcrValidation::bookHistograms(DQMStore::IBooker & ibooker, edm::Run const n_ch = gemChambers.size(); ibooker.setCurrentFolder("MuonGEMRecHitsV/GEMRecHitsTask"); - + gemcr_g = ibooker.book3D("gemcr_g","GEMCR GLOBAL RECHITS", 200,-100,100,20,-55,55, 140,0,140); gem_cls_tot = ibooker.book1D("cluster_size","Cluseter size",20,0,20); gem_bx_tot = ibooker.book1D("bx", "BX" , 30, -15,15); @@ -160,12 +168,13 @@ const GEMGeometry* gemcrValidation::initGeometry(edm::EventSetup const & iSetup) gemcrValidation::~gemcrValidation() { } + ///////////////////////////////////////////////// /// Function to modify CAS ///////////////////////////////////////////////// /*This function recives MuonRecHitContainer and return std::vector */ -auto_ptr > gemcrValidation::findSeeds(MuonTransientTrackingRecHit::MuonRecHitContainer &muRecHits) +auto_ptr > gemcrValidation::findSeeds(MuonTransientTrackingRecHit::MuonRecHitContainer &muRecHits,RefLayer) /*auto_ptr is a smart pointer that manages an object obtained via new expression and deletes that object when auto_ptr itself is destroyed*/ /*std::unique_ptr is preferred for this and other uses. (since C++11)*/ { From 991a2989f46f5fcd9bb80ba1a321440938887ba7 Mon Sep 17 00:00:00 2001 From: Camilo Salazar Date: Mon, 14 Aug 2017 14:44:08 +0200 Subject: [PATCH 05/31] change in the .h RefLayer declared in findSeed function --- Validation/GEMCR/interface/gemcrValidation.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Validation/GEMCR/interface/gemcrValidation.h b/Validation/GEMCR/interface/gemcrValidation.h index d62f000ff0a78..f9a3878166af3 100644 --- a/Validation/GEMCR/interface/gemcrValidation.h +++ b/Validation/GEMCR/interface/gemcrValidation.h @@ -80,7 +80,7 @@ class gemcrValidation : public GEMBaseValidation MuonServiceProxy* theService; CosmicMuonSmoother* theSmoother; KFUpdator* theUpdator; - std::auto_ptr > findSeeds(MuonTransientTrackingRecHit::MuonRecHitContainer &muRecHits); + std::auto_ptr > findSeeds(MuonTransientTrackingRecHit::MuonRecHitContainer &muRecHits,RefLayer); Trajectory makeTrajectory(TrajectorySeed seed, MuonTransientTrackingRecHit::MuonRecHitContainer &muRecHits, std::vector gemChambers, GEMChamber testChamber); edm::EDGetToken InputTagToken_, InputTagToken_RH, InputTagToken_TR, InputTagToken_TS, InputTagToken_DG; }; From da82fa58b604bb415647b40c8ee3a198488452b0 Mon Sep 17 00:00:00 2001 From: Camilo Salazar Date: Tue, 15 Aug 2017 11:15:53 +0200 Subject: [PATCH 06/31] .h modified to have refLayer --- Validation/GEMCR/interface/gemcrValidation.h | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/Validation/GEMCR/interface/gemcrValidation.h b/Validation/GEMCR/interface/gemcrValidation.h index f9a3878166af3..a2c385c780d1c 100644 --- a/Validation/GEMCR/interface/gemcrValidation.h +++ b/Validation/GEMCR/interface/gemcrValidation.h @@ -22,6 +22,12 @@ +struct RefLayer{ + //layer 1 is the upper one + bool layer1; + bool layer2; + bool layer3; +}; class gemcrValidation : public GEMBaseValidation { From 6812842e26c0b889654d025aeb59898948430d53 Mon Sep 17 00:00:00 2001 From: Camilo Salazar Date: Tue, 15 Aug 2017 11:23:33 +0200 Subject: [PATCH 07/31] bug fixed --- Validation/GEMCR/interface/gemcrValidation.h | 2 +- Validation/GEMCR/src/gemcrValidation.cc | 9 ++------- 2 files changed, 3 insertions(+), 8 deletions(-) diff --git a/Validation/GEMCR/interface/gemcrValidation.h b/Validation/GEMCR/interface/gemcrValidation.h index a2c385c780d1c..93b0e9281390c 100644 --- a/Validation/GEMCR/interface/gemcrValidation.h +++ b/Validation/GEMCR/interface/gemcrValidation.h @@ -86,7 +86,7 @@ class gemcrValidation : public GEMBaseValidation MuonServiceProxy* theService; CosmicMuonSmoother* theSmoother; KFUpdator* theUpdator; - std::auto_ptr > findSeeds(MuonTransientTrackingRecHit::MuonRecHitContainer &muRecHits,RefLayer); + std::auto_ptr > findSeeds(MuonTransientTrackingRecHit::MuonRecHitContainer &muRecHits,RefLayer reflayer); Trajectory makeTrajectory(TrajectorySeed seed, MuonTransientTrackingRecHit::MuonRecHitContainer &muRecHits, std::vector gemChambers, GEMChamber testChamber); edm::EDGetToken InputTagToken_, InputTagToken_RH, InputTagToken_TR, InputTagToken_TS, InputTagToken_DG; }; diff --git a/Validation/GEMCR/src/gemcrValidation.cc b/Validation/GEMCR/src/gemcrValidation.cc index e3fd0022b9cf5..da7b1ee70ae1b 100644 --- a/Validation/GEMCR/src/gemcrValidation.cc +++ b/Validation/GEMCR/src/gemcrValidation.cc @@ -37,12 +37,7 @@ #include using namespace std; -struct RefLayer{ - //layer 1 is the upper one - bool layer1; - bool layer2; - bool layer3; -}; + gemcrValidation::gemcrValidation(const edm::ParameterSet& cfg): GEMBaseValidation(cfg) { @@ -174,7 +169,7 @@ gemcrValidation::~gemcrValidation() { ///////////////////////////////////////////////// /*This function recives MuonRecHitContainer and return std::vector */ -auto_ptr > gemcrValidation::findSeeds(MuonTransientTrackingRecHit::MuonRecHitContainer &muRecHits,RefLayer) +auto_ptr > gemcrValidation::findSeeds(MuonTransientTrackingRecHit::MuonRecHitContainer &muRecHits,RefLayer reflayer) /*auto_ptr is a smart pointer that manages an object obtained via new expression and deletes that object when auto_ptr itself is destroyed*/ /*std::unique_ptr is preferred for this and other uses. (since C++11)*/ { From 07dc034942ba1b420fc2c64f3cd48c4645a9693b Mon Sep 17 00:00:00 2001 From: Camilo Salazar Date: Wed, 16 Aug 2017 09:20:22 +0200 Subject: [PATCH 08/31] Start fresh, back in the begining --- Validation/GEMCR/interface/gemcrValidation.h | 9 --------- Validation/GEMCR/src/gemcrValidation.cc | 2 +- 2 files changed, 1 insertion(+), 10 deletions(-) diff --git a/Validation/GEMCR/interface/gemcrValidation.h b/Validation/GEMCR/interface/gemcrValidation.h index 93b0e9281390c..b6ea19e513f35 100644 --- a/Validation/GEMCR/interface/gemcrValidation.h +++ b/Validation/GEMCR/interface/gemcrValidation.h @@ -20,15 +20,6 @@ #include "RecoMuon/StandAloneTrackFinder/interface/StandAloneMuonSmoother.h" #include "TrackingTools/TrajectoryState/interface/TrajectoryStateTransform.h" - - -struct RefLayer{ - //layer 1 is the upper one - bool layer1; - bool layer2; - bool layer3; -}; - class gemcrValidation : public GEMBaseValidation { public: diff --git a/Validation/GEMCR/src/gemcrValidation.cc b/Validation/GEMCR/src/gemcrValidation.cc index da7b1ee70ae1b..3566108f93c3b 100644 --- a/Validation/GEMCR/src/gemcrValidation.cc +++ b/Validation/GEMCR/src/gemcrValidation.cc @@ -169,7 +169,7 @@ gemcrValidation::~gemcrValidation() { ///////////////////////////////////////////////// /*This function recives MuonRecHitContainer and return std::vector */ -auto_ptr > gemcrValidation::findSeeds(MuonTransientTrackingRecHit::MuonRecHitContainer &muRecHits,RefLayer reflayer) +auto_ptr > gemcrValidation::findSeeds(MuonTransientTrackingRecHit::MuonRecHitContainer &muRecHits) /*auto_ptr is a smart pointer that manages an object obtained via new expression and deletes that object when auto_ptr itself is destroyed*/ /*std::unique_ptr is preferred for this and other uses. (since C++11)*/ { From 46b4bd17cb1e3731f8c310dcec00d530b68012bb Mon Sep 17 00:00:00 2001 From: Camilo Salazar Date: Wed, 16 Aug 2017 09:22:47 +0200 Subject: [PATCH 09/31] bug --- Validation/GEMCR/interface/gemcrValidation.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Validation/GEMCR/interface/gemcrValidation.h b/Validation/GEMCR/interface/gemcrValidation.h index b6ea19e513f35..84b6a97aa1798 100644 --- a/Validation/GEMCR/interface/gemcrValidation.h +++ b/Validation/GEMCR/interface/gemcrValidation.h @@ -77,7 +77,7 @@ class gemcrValidation : public GEMBaseValidation MuonServiceProxy* theService; CosmicMuonSmoother* theSmoother; KFUpdator* theUpdator; - std::auto_ptr > findSeeds(MuonTransientTrackingRecHit::MuonRecHitContainer &muRecHits,RefLayer reflayer); + std::auto_ptr > findSeeds(MuonTransientTrackingRecHit::MuonRecHitContainer &muRecHits); Trajectory makeTrajectory(TrajectorySeed seed, MuonTransientTrackingRecHit::MuonRecHitContainer &muRecHits, std::vector gemChambers, GEMChamber testChamber); edm::EDGetToken InputTagToken_, InputTagToken_RH, InputTagToken_TR, InputTagToken_TS, InputTagToken_DG; }; From 2ae44acf5b961afd554be4d8e99979a9fa83805a Mon Sep 17 00:00:00 2001 From: Camilo Salazar Date: Tue, 22 Aug 2017 15:39:41 +0200 Subject: [PATCH 10/31] class MuonRecHitContainerLayered declared. --- Validation/GEMCR/interface/gemcrValidation.h | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/Validation/GEMCR/interface/gemcrValidation.h b/Validation/GEMCR/interface/gemcrValidation.h index 84b6a97aa1798..19ac2839b49ad 100644 --- a/Validation/GEMCR/interface/gemcrValidation.h +++ b/Validation/GEMCR/interface/gemcrValidation.h @@ -20,6 +20,21 @@ #include "RecoMuon/StandAloneTrackFinder/interface/StandAloneMuonSmoother.h" #include "TrackingTools/TrajectoryState/interface/TrajectoryStateTransform.h" + +class MuonRecHitContainerLayered : public MuonTransientTrackingRecHit::MuonRecHitContainer { + protected: + std::vector Layers;//empty vector of bools to contain the reference layer info (true, false, false) means layer 1 (of 3) is the reference + public: + MuonRecHitContainerLayere( MuonTransientTrackingRecHit::MuonRecHitContaine &rechit, std::vector _Layers ); + ~MuonRecHitContainerLayere( void ); + bool GetLayer( unsigned int _L ); + // MuonTransientTrackingRecHit::MuonRecHitContaine& GetmuRecHits(void); + +} + + + + class gemcrValidation : public GEMBaseValidation { public: From 439a609e5a6dbc24d1fac86abeb6ed8317060c9d Mon Sep 17 00:00:00 2001 From: Camilo Salazar Date: Tue, 22 Aug 2017 15:40:25 +0200 Subject: [PATCH 11/31] class MuonRecHitContainerLayered Methods --- Validation/GEMCR/src/gemcrValidation.cc | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/Validation/GEMCR/src/gemcrValidation.cc b/Validation/GEMCR/src/gemcrValidation.cc index 3566108f93c3b..b1324ea81e368 100644 --- a/Validation/GEMCR/src/gemcrValidation.cc +++ b/Validation/GEMCR/src/gemcrValidation.cc @@ -38,6 +38,28 @@ using namespace std; +MuonRecHitContainerLayered::MuonRecHitContainerLayered( MuonTransientTrackingRecHit::MuonRecHitContaine &rechit, std::vector _Layers ) + :MuonRecHitContainer( rechit )//MuonRecHitContaine constructor call +{ + Layers = _Layers; +} + +MuonRecHitContainerLayered::~MuonRecHitContainerLayere( void ){ + +} +//Use of the Error handler??? +bool MuonRecHitContainerLayered::GetLayer( unsigned int _L ){ + if (_L > Layers.capacity()){ + cout<< "Max number of layer exceeded" < Date: Wed, 23 Aug 2017 09:32:37 +0200 Subject: [PATCH 12/31] class MuonRecHitContainerLayered implemented --- Validation/GEMCR/interface/gemcrValidation.h | 7 +++---- Validation/GEMCR/src/gemcrValidation.cc | 21 ++++++++++++-------- 2 files changed, 16 insertions(+), 12 deletions(-) diff --git a/Validation/GEMCR/interface/gemcrValidation.h b/Validation/GEMCR/interface/gemcrValidation.h index 19ac2839b49ad..c9f6bf6897e7b 100644 --- a/Validation/GEMCR/interface/gemcrValidation.h +++ b/Validation/GEMCR/interface/gemcrValidation.h @@ -25,12 +25,11 @@ class MuonRecHitContainerLayered : public MuonTransientTrackingRecHit::MuonRecHi protected: std::vector Layers;//empty vector of bools to contain the reference layer info (true, false, false) means layer 1 (of 3) is the reference public: - MuonRecHitContainerLayere( MuonTransientTrackingRecHit::MuonRecHitContaine &rechit, std::vector _Layers ); - ~MuonRecHitContainerLayere( void ); + MuonRecHitContainerLayered( MuonTransientTrackingRecHit::MuonRecHitContainer &rechit, std::vector _Layers ); + ~MuonRecHitContainerLayered( void ); bool GetLayer( unsigned int _L ); // MuonTransientTrackingRecHit::MuonRecHitContaine& GetmuRecHits(void); - -} +}; diff --git a/Validation/GEMCR/src/gemcrValidation.cc b/Validation/GEMCR/src/gemcrValidation.cc index b1324ea81e368..e64bcbb71076b 100644 --- a/Validation/GEMCR/src/gemcrValidation.cc +++ b/Validation/GEMCR/src/gemcrValidation.cc @@ -33,27 +33,32 @@ #include - +#include #include using namespace std; -MuonRecHitContainerLayered::MuonRecHitContainerLayered( MuonTransientTrackingRecHit::MuonRecHitContaine &rechit, std::vector _Layers ) +MuonRecHitContainerLayered::MuonRecHitContainerLayered( MuonTransientTrackingRecHit::MuonRecHitContainer &rechit, std::vector _Layers ) :MuonRecHitContainer( rechit )//MuonRecHitContaine constructor call { Layers = _Layers; } -MuonRecHitContainerLayered::~MuonRecHitContainerLayere( void ){ +MuonRecHitContainerLayered::~MuonRecHitContainerLayered( void ){ } //Use of the Error handler??? bool MuonRecHitContainerLayered::GetLayer( unsigned int _L ){ - if (_L > Layers.capacity()){ - cout<< "Max number of layer exceeded" < Layers.capacity() ) + { + throw "Max number of layer exceeded"; + } + }catch(const char* msg) + { + std::cerr << msg << endl; + } + return Layers[_L]; } //MuonTransientTrackingRecHit::MuonRecHitContaine& MuonRecHitContainerLayered::GetmuRecHits( void ){ From e2eb3ae86f68e916a8f44047d7b2ae156705663d Mon Sep 17 00:00:00 2001 From: Camilo Salazar Date: Thu, 24 Aug 2017 09:12:07 +0200 Subject: [PATCH 13/31] Class implementatded, and is a working version --- Validation/GEMCR/interface/gemcrValidation.h | 4 +--- Validation/GEMCR/src/gemcrValidation.cc | 11 +++++++++-- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/Validation/GEMCR/interface/gemcrValidation.h b/Validation/GEMCR/interface/gemcrValidation.h index c9f6bf6897e7b..e758c56abe86b 100644 --- a/Validation/GEMCR/interface/gemcrValidation.h +++ b/Validation/GEMCR/interface/gemcrValidation.h @@ -32,8 +32,6 @@ class MuonRecHitContainerLayered : public MuonTransientTrackingRecHit::MuonRecHi }; - - class gemcrValidation : public GEMBaseValidation { public: @@ -91,7 +89,7 @@ class gemcrValidation : public GEMBaseValidation MuonServiceProxy* theService; CosmicMuonSmoother* theSmoother; KFUpdator* theUpdator; - std::auto_ptr > findSeeds(MuonTransientTrackingRecHit::MuonRecHitContainer &muRecHits); + std::auto_ptr > findSeeds(MuonRecHitContainerLayered &muRecHits); Trajectory makeTrajectory(TrajectorySeed seed, MuonTransientTrackingRecHit::MuonRecHitContainer &muRecHits, std::vector gemChambers, GEMChamber testChamber); edm::EDGetToken InputTagToken_, InputTagToken_RH, InputTagToken_TR, InputTagToken_TS, InputTagToken_DG; }; diff --git a/Validation/GEMCR/src/gemcrValidation.cc b/Validation/GEMCR/src/gemcrValidation.cc index e64bcbb71076b..ec11f667d7ee7 100644 --- a/Validation/GEMCR/src/gemcrValidation.cc +++ b/Validation/GEMCR/src/gemcrValidation.cc @@ -196,7 +196,7 @@ gemcrValidation::~gemcrValidation() { ///////////////////////////////////////////////// /*This function recives MuonRecHitContainer and return std::vector */ -auto_ptr > gemcrValidation::findSeeds(MuonTransientTrackingRecHit::MuonRecHitContainer &muRecHits) +auto_ptr > gemcrValidation::findSeeds(MuonRecHitContainerLayered &muRecHits) /*auto_ptr is a smart pointer that manages an object obtained via new expression and deletes that object when auto_ptr itself is destroyed*/ /*std::unique_ptr is preferred for this and other uses. (since C++11)*/ { @@ -414,7 +414,14 @@ void gemcrValidation::analyze(const edm::Event& e, const edm::EventSetup& iSetup if (TCN < 3) continue; gem_chamber_track[findIndex(tch.id())]->Fill(0.5); auto_ptr > trajectorySeeds( new vector()); - trajectorySeeds =findSeeds(muRecHits); + + ///////////////////////////////////////////////////////////////////////////////////// + //Changed to use the new class CAS + ///////////////////////////////////////////////////////////////////////////////////// + std::vector Layers {true, true, false};//temporal + MuonRecHitContainerLayered muRecHitsl(muRecHits,Layers); + trajectorySeeds =findSeeds(muRecHitsl); + ///////////////////////////////////////////////////////////////////////////////////// Trajectory bestTrajectory; TrajectorySeed bestSeed; trajectoryh->Fill(0, trajectorySeeds->size()); From 4d7d9d47279495039f6c0c1fe895f573fc61bc7a Mon Sep 17 00:00:00 2001 From: Camilo Salazar Date: Fri, 25 Aug 2017 08:52:33 +0200 Subject: [PATCH 14/31] comments --- Validation/GEMCR/src/gemcrValidation.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Validation/GEMCR/src/gemcrValidation.cc b/Validation/GEMCR/src/gemcrValidation.cc index ec11f667d7ee7..979f2af6c0f6f 100644 --- a/Validation/GEMCR/src/gemcrValidation.cc +++ b/Validation/GEMCR/src/gemcrValidation.cc @@ -47,7 +47,6 @@ MuonRecHitContainerLayered::MuonRecHitContainerLayered( MuonTransientTrackingRec MuonRecHitContainerLayered::~MuonRecHitContainerLayered( void ){ } -//Use of the Error handler??? bool MuonRecHitContainerLayered::GetLayer( unsigned int _L ){ try { if( _L > Layers.capacity() ) @@ -422,6 +421,7 @@ void gemcrValidation::analyze(const edm::Event& e, const edm::EventSetup& iSetup MuonRecHitContainerLayered muRecHitsl(muRecHits,Layers); trajectorySeeds =findSeeds(muRecHitsl); ///////////////////////////////////////////////////////////////////////////////////// + Trajectory bestTrajectory; TrajectorySeed bestSeed; trajectoryh->Fill(0, trajectorySeeds->size()); From e42fb1ae75f154b2c5cfc7682cf1f9dceefc897a Mon Sep 17 00:00:00 2001 From: Camilo Salazar Date: Tue, 5 Sep 2017 13:51:01 +0200 Subject: [PATCH 15/31] Pass refChambers through python file, reference layers aplied --- Validation/GEMCR/interface/gemcrValidation.h | 11 +- Validation/GEMCR/src/gemcrValidation.cc | 104 ++++++++++++------ .../GEMCR/test/runGEMCosmicStand_sim.py | 64 ++++++----- 3 files changed, 105 insertions(+), 74 deletions(-) diff --git a/Validation/GEMCR/interface/gemcrValidation.h b/Validation/GEMCR/interface/gemcrValidation.h index e758c56abe86b..d62f000ff0a78 100644 --- a/Validation/GEMCR/interface/gemcrValidation.h +++ b/Validation/GEMCR/interface/gemcrValidation.h @@ -21,15 +21,6 @@ #include "TrackingTools/TrajectoryState/interface/TrajectoryStateTransform.h" -class MuonRecHitContainerLayered : public MuonTransientTrackingRecHit::MuonRecHitContainer { - protected: - std::vector Layers;//empty vector of bools to contain the reference layer info (true, false, false) means layer 1 (of 3) is the reference - public: - MuonRecHitContainerLayered( MuonTransientTrackingRecHit::MuonRecHitContainer &rechit, std::vector _Layers ); - ~MuonRecHitContainerLayered( void ); - bool GetLayer( unsigned int _L ); - // MuonTransientTrackingRecHit::MuonRecHitContaine& GetmuRecHits(void); -}; class gemcrValidation : public GEMBaseValidation @@ -89,7 +80,7 @@ class gemcrValidation : public GEMBaseValidation MuonServiceProxy* theService; CosmicMuonSmoother* theSmoother; KFUpdator* theUpdator; - std::auto_ptr > findSeeds(MuonRecHitContainerLayered &muRecHits); + std::auto_ptr > findSeeds(MuonTransientTrackingRecHit::MuonRecHitContainer &muRecHits); Trajectory makeTrajectory(TrajectorySeed seed, MuonTransientTrackingRecHit::MuonRecHitContainer &muRecHits, std::vector gemChambers, GEMChamber testChamber); edm::EDGetToken InputTagToken_, InputTagToken_RH, InputTagToken_TR, InputTagToken_TS, InputTagToken_DG; }; diff --git a/Validation/GEMCR/src/gemcrValidation.cc b/Validation/GEMCR/src/gemcrValidation.cc index 979f2af6c0f6f..0dff221a1b288 100644 --- a/Validation/GEMCR/src/gemcrValidation.cc +++ b/Validation/GEMCR/src/gemcrValidation.cc @@ -27,6 +27,9 @@ #include "RecoMuon/TransientTrackingRecHit/interface/MuonTransientTrackingRecHit.h" #include "RecoMuon/TrackingTools/interface/MuonServiceProxy.h" +#include "DataFormats/MuonDetId/interface/GEMDetId.h" +#include "DataFormats/DetId/interface/DetId.h" + #include "FWCore/Framework/interface/stream/EDProducer.h" #include "DataFormats/GEMDigi/interface/GEMDigiCollection.h" @@ -38,7 +41,7 @@ using namespace std; -MuonRecHitContainerLayered::MuonRecHitContainerLayered( MuonTransientTrackingRecHit::MuonRecHitContainer &rechit, std::vector _Layers ) +MuonRecHitContainerLayered::MuonRecHitContainerLayered( MuonTransientTrackingRecHit::MuonRecHitContainer &rechit, std::vector _Layers ) :MuonRecHitContainer( rechit )//MuonRecHitContaine constructor call { Layers = _Layers; @@ -47,7 +50,7 @@ MuonRecHitContainerLayered::MuonRecHitContainerLayered( MuonTransientTrackingRec MuonRecHitContainerLayered::~MuonRecHitContainerLayered( void ){ } -bool MuonRecHitContainerLayered::GetLayer( unsigned int _L ){ +int MuonRecHitContainerLayered::GetLayer( unsigned int _L ){ try { if( _L > Layers.capacity() ) { @@ -84,6 +87,7 @@ gemcrValidation::gemcrValidation(const edm::ParameterSet& cfg): GEMBaseValidatio edm::ParameterSet smootherPSet = cfg.getParameter("MuonSmootherParameters"); theSmoother = new CosmicMuonSmoother(smootherPSet, theService); theUpdator = new KFUpdator(); + refChambers = cfg.getParameter>("refChambers");//Reference chambers } void gemcrValidation::bookHistograms(DQMStore::IBooker & ibooker, edm::Run const & Run, edm::EventSetup const & iSetup ) { @@ -121,7 +125,7 @@ void gemcrValidation::bookHistograms(DQMStore::IBooker & ibooker, edm::Run const rh2_chamber = ibooker.book1D("rh2_chamber", "cut passed recHits ",n_ch,0,n_ch); rh3_chamber = ibooker.book1D("rh3_chamber", "tracking recHits",n_ch,0,n_ch); for(int c = 0; csetBinLabel(c+1,b_name); @@ -201,38 +205,70 @@ auto_ptr > gemcrValidation::findSeeds(MuonRecHitCont { auto_ptr > tmptrajectorySeeds( new vector()); for (auto hit1 : muRecHits){/* Range-based for loop, access by value, the type of hit1 is MuonTransientTrackingRecHit::MuonRecHitContaine&*/ - for (auto hit2 : muRecHits){ - if (hit1->globalPosition().y() < hit2->globalPosition().y()){/*y direction is up-down? (cosmic), see if hit1 is Higher than the hit2*/ - LocalPoint segPos = hit1->localPosition();/*Define a LocalPoint with the position of hit1*/ - GlobalVector segDirGV(hit2->globalPosition().x() - hit1->globalPosition().x(),/*Define a vector called segDirGV from hit2-hit1 */ - (hit2->globalPosition().y() - hit1->globalPosition().y()), - hit2->globalPosition().z() - hit1->globalPosition().z()); - - segDirGV *=10;/*multiply per 10 ????*/ - //segDirGV *=1; - LocalVector segDir = hit1->det()->toLocal(segDirGV); - - int charge= 1; - LocalTrajectoryParameters param(segPos, segDir, charge); - - AlgebraicSymMatrix mat(5,0); - mat = hit1->parametersError().similarityT( hit1->projectionMatrix() ); - LocalTrajectoryError error(asSMatrix<5>(mat)); - - TrajectoryStateOnSurface tsos(param, error, hit1->det()->surface(), &*theService->magneticField()); - uint32_t id = hit1->rawId(); - PTrajectoryStateOnDet const & seedTSOS = trajectoryStateTransform::persistentState(tsos, id); - - edm::OwnVector seedHits; - seedHits.push_back(hit1->hit()->clone()); - seedHits.push_back(hit2->hit()->clone()); - - TrajectorySeed seed(seedTSOS,seedHits,alongMomentum); - tmptrajectorySeeds->push_back(seed); + + ///////////////////////////////////////////////////////////// + // Requesting Only seed for reference layer + ///////////////////////////////////////////////////////////// + GEMDetId hit1ID(hit1->rawId()); + // cout<< "layer" <rawId()); + bool flaghit2 = false; + for (auto chambers : muRecHits.Layers){ + if( chambers == hit2ID.chamber() ){ + flaghit2 = true; + } + } + + if (flaghit2){//Condition over the hit2 +// cout<< "hit1ID_chamber" <globalPosition().y() < hit2->globalPosition().y()){/*y direction is up-down? (cosmic), see if hit1 is Higher than the hit2*/ + LocalPoint segPos = hit1->localPosition();/*Define a LocalPoint with the position of hit1*/ + GlobalVector segDirGV(hit2->globalPosition().x() - hit1->globalPosition().x(),/*Define a vector called segDirGV from hit2-hit1 */ + (hit2->globalPosition().y() - hit1->globalPosition().y()), + hit2->globalPosition().z() - hit1->globalPosition().z()); + //cout<< " hit1->localPosition().y()" << hit1->localPosition().y()<globalPosition().y()" << hit1->globalPosition().y()<det()->toLocal(segDirGV); + + int charge= 1; + LocalTrajectoryParameters param(segPos, segDir, charge); + + AlgebraicSymMatrix mat(5,0); + mat = hit1->parametersError().similarityT( hit1->projectionMatrix() ); + LocalTrajectoryError error(asSMatrix<5>(mat)); + + TrajectoryStateOnSurface tsos(param, error, hit1->det()->surface(), &*theService->magneticField()); + uint32_t id = hit1->rawId(); + PTrajectoryStateOnDet const & seedTSOS = trajectoryStateTransform::persistentState(tsos, id); + + edm::OwnVector seedHits; + seedHits.push_back(hit1->hit()->clone()); + seedHits.push_back(hit2->hit()->clone()); + + TrajectorySeed seed(seedTSOS,seedHits,alongMomentum); + tmptrajectorySeeds->push_back(seed); + } + } + } + } + } return tmptrajectorySeeds; } @@ -417,8 +453,8 @@ void gemcrValidation::analyze(const edm::Event& e, const edm::EventSetup& iSetup ///////////////////////////////////////////////////////////////////////////////////// //Changed to use the new class CAS ///////////////////////////////////////////////////////////////////////////////////// - std::vector Layers {true, true, false};//temporal - MuonRecHitContainerLayered muRecHitsl(muRecHits,Layers); + //std::vector Layers {, true, false};//temporal + MuonRecHitContainerLayered muRecHitsl(muRecHits,refChambers); trajectorySeeds =findSeeds(muRecHitsl); ///////////////////////////////////////////////////////////////////////////////////// diff --git a/Validation/GEMCR/test/runGEMCosmicStand_sim.py b/Validation/GEMCR/test/runGEMCosmicStand_sim.py index ee7fe346adedd..e44d31aa4d65c 100644 --- a/Validation/GEMCR/test/runGEMCosmicStand_sim.py +++ b/Validation/GEMCR/test/runGEMCosmicStand_sim.py @@ -166,36 +166,38 @@ #process.GEMCosmicMuon.ServiceParameters.UseMuonNavigation = cms.untracked.bool(False) process.gemcrValidation = cms.EDAnalyzer('gemcrValidation', - process.MuonServiceProxy, - verboseSimHit = cms.untracked.int32(1), - simInputLabel = cms.InputTag('g4SimHits',"MuonGEMHits"), - recHitsInputLabel = cms.InputTag('gemRecHits'), - tracksInputLabel = cms.InputTag('GEMCosmicMuon','','RECO'), - seedInputLabel = cms.InputTag('GEMCosmicMuon','','RECO'), - genParticleLabel = cms.InputTag('genParticles','','RECO'), - gemDigiLabel = cms.InputTag("muonGEMDigis","","RECO"), - # st1, st2_short, st2_long of xbin, st1,st2_short,st2_long of ybin - nBinGlobalZR = cms.untracked.vdouble(200,200,200,150,180,250), - # st1 xmin, xmax, st2_short xmin, xmax, st2_long xmin, xmax, st1 ymin, ymax... - RangeGlobalZR = cms.untracked.vdouble(564,572,786,794,786,802,110,260,170,350,100,350), - #nBinGlobalXY = cms.untracked.int32(720), - #detailPlot = cms.bool(True), - #detailPlot = cms.bool(False), - maxClusterSize = cms.double(runConfig.maxClusterSize), - minClusterSize = cms.double(runConfig.minClusterSize), - maxResidual = cms.double(runConfig.maxResidual), - makeTrack = cms.bool(runConfig.makeTrack), - isMC = cms.bool(True), - trackChi2 = cms.double(runConfig.trackChi2), - trackResX = cms.double(runConfig.trackResX), - trackResY = cms.double(runConfig.trackResY), - MuonSmootherParameters = cms.PSet( - PropagatorAlong = cms.string('SteppingHelixPropagatorAny'), - PropagatorOpposite = cms.string('SteppingHelixPropagatorAny'), - RescalingFactor = cms.double(5.0) - ), - -) + process.MuonServiceProxy, + verboseSimHit = cms.untracked.int32(1), + simInputLabel = cms.InputTag('g4SimHits',"MuonGEMHits"), + recHitsInputLabel = cms.InputTag('gemRecHits'), + tracksInputLabel = cms.InputTag('GEMCosmicMuon','','RECO'), + seedInputLabel = cms.InputTag('GEMCosmicMuon','','RECO'), + genParticleLabel = cms.InputTag('genParticles','','RECO'), + gemDigiLabel = cms.InputTag("muonGEMDigis","","RECO"), + # st1, st2_short, st2_long of xbin, st1,st2_short,st2_long of ybin + nBinGlobalZR = cms.untracked.vdouble(200,200,200,150,180,250), + # st1 xmin, xmax, st2_short xmin, xmax, st2_long xmin, xmax, st1 ymin, ymax... + RangeGlobalZR = cms.untracked.vdouble(564,572,786,794,786,802,110,260,170,350,100,350), + #nBinGlobalXY = cms.untracked.int32(720), + #detailPlot = cms.bool(True), + #detailPlot = cms.bool(False), + maxClusterSize = cms.double(runConfig.maxClusterSize), + minClusterSize = cms.double(runConfig.minClusterSize), + maxResidual = cms.double(runConfig.maxResidual), + makeTrack = cms.bool(runConfig.makeTrack), + isMC = cms.bool(True), + trackChi2 = cms.double(runConfig.trackChi2), + trackResX = cms.double(runConfig.trackResX), + trackResY = cms.double(runConfig.trackResY), + MuonSmootherParameters = cms.PSet( + PropagatorAlong = cms.string('SteppingHelixPropagatorAny'), + PropagatorOpposite = cms.string('SteppingHelixPropagatorAny'), + RescalingFactor = cms.double(5.0) + ), + #Reference Chambers + #refChambers=cms.vint32( 1, 11, 21, 3, 13, 23, 5, 15, 25, 7, 17, 27, 9, 19, 29) + refChambers=cms.vint32( 1, 11, 21, 9, 19, 29) + ) # Path and EndPath definitions process.generation_step = cms.Path(process.generator+process.pgen) @@ -271,3 +273,5 @@ #process.SteppingHelixPropagatorAny.sendLogWarning = cms.bool(True) #process.SteppingHelixPropagatorAny.useInTeslaFromMagField = cms.bool(False) #process.SteppingHelixPropagatorAny.useMagVolumes = cms.bool(False) + + From 7e199a523e7235e69a9637af22adf34dea700f0b Mon Sep 17 00:00:00 2001 From: Camilo Salazar Date: Tue, 5 Sep 2017 14:46:23 +0200 Subject: [PATCH 16/31] Heder file fixed --- Validation/GEMCR/interface/gemcrValidation.h | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/Validation/GEMCR/interface/gemcrValidation.h b/Validation/GEMCR/interface/gemcrValidation.h index d62f000ff0a78..517c5f04bf544 100644 --- a/Validation/GEMCR/interface/gemcrValidation.h +++ b/Validation/GEMCR/interface/gemcrValidation.h @@ -21,6 +21,16 @@ #include "TrackingTools/TrajectoryState/interface/TrajectoryStateTransform.h" +class MuonRecHitContainerLayered : public MuonTransientTrackingRecHit::MuonRecHitContainer { + protected: + + public: + std::vector Layers; + MuonRecHitContainerLayered( MuonTransientTrackingRecHit::MuonRecHitContainer &rechit, std::vector _Layers ); + ~MuonRecHitContainerLayered( void ); + int GetLayer( unsigned int _L ); + // MuonTransientTrackingRecHit::MuonRecHitContaine& GetmuRecHits(void); +}; class gemcrValidation : public GEMBaseValidation @@ -80,7 +90,9 @@ class gemcrValidation : public GEMBaseValidation MuonServiceProxy* theService; CosmicMuonSmoother* theSmoother; KFUpdator* theUpdator; - std::auto_ptr > findSeeds(MuonTransientTrackingRecHit::MuonRecHitContainer &muRecHits); + std::vector refChambers; + + std::auto_ptr > findSeeds(MuonRecHitContainerLayered &muRecHits); Trajectory makeTrajectory(TrajectorySeed seed, MuonTransientTrackingRecHit::MuonRecHitContainer &muRecHits, std::vector gemChambers, GEMChamber testChamber); edm::EDGetToken InputTagToken_, InputTagToken_RH, InputTagToken_TR, InputTagToken_TS, InputTagToken_DG; }; From 58c3ca5c2bca18612dccd8e4a7012fd5ed638918 Mon Sep 17 00:00:00 2001 From: Camilo Salazar Date: Wed, 20 Sep 2017 10:26:43 +0200 Subject: [PATCH 17/31] 3D plot of seeds --- Validation/GEMCR/interface/gemcrValidation.h | 9 +++- Validation/GEMCR/src/gemcrValidation.cc | 45 +++++++++++++++++--- 2 files changed, 47 insertions(+), 7 deletions(-) diff --git a/Validation/GEMCR/interface/gemcrValidation.h b/Validation/GEMCR/interface/gemcrValidation.h index 517c5f04bf544..ae1cf3cf09d69 100644 --- a/Validation/GEMCR/interface/gemcrValidation.h +++ b/Validation/GEMCR/interface/gemcrValidation.h @@ -67,7 +67,6 @@ class gemcrValidation : public GEMBaseValidation std::vector gem_chamber_bestChi2; std::vector gem_chamber_track; - MonitorElement* gemcr_g; MonitorElement* gem_cls_tot; MonitorElement* gem_bx_tot; @@ -82,7 +81,8 @@ class gemcrValidation : public GEMBaseValidation MonitorElement* trajectoryh; MonitorElement* firedMul; MonitorElement* firedChamber; - + MonitorElement* NumberOfSeeds; + std::vector gemChambers; @@ -95,6 +95,11 @@ class gemcrValidation : public GEMBaseValidation std::auto_ptr > findSeeds(MuonRecHitContainerLayered &muRecHits); Trajectory makeTrajectory(TrajectorySeed seed, MuonTransientTrackingRecHit::MuonRecHitContainer &muRecHits, std::vector gemChambers, GEMChamber testChamber); edm::EDGetToken InputTagToken_, InputTagToken_RH, InputTagToken_TR, InputTagToken_TS, InputTagToken_DG; + + // ----------member data --------------------------- + + // static unsigned int SeedsNumber; + }; #endif diff --git a/Validation/GEMCR/src/gemcrValidation.cc b/Validation/GEMCR/src/gemcrValidation.cc index 0dff221a1b288..26d039ebf0732 100644 --- a/Validation/GEMCR/src/gemcrValidation.cc +++ b/Validation/GEMCR/src/gemcrValidation.cc @@ -22,7 +22,7 @@ #include "TrackingTools/TrajectoryState/interface/TrajectoryStateTransform.h" #include "FWCore/Framework/interface/Frameworkfwd.h" -#include "DataFormats/TrajectorySeed/interface/TrajectorySeed.h" +#include "DataFormats/TrajectorySeed/interface/" #include "DataFormats/TrackingRecHit/interface/TrackingRecHit.h" #include "RecoMuon/TransientTrackingRecHit/interface/MuonTransientTrackingRecHit.h" #include "RecoMuon/TrackingTools/interface/MuonServiceProxy.h" @@ -40,6 +40,8 @@ #include using namespace std; +// ----------member data --------------------------- +//unsigned int SeedsNumber; MuonRecHitContainerLayered::MuonRecHitContainerLayered( MuonTransientTrackingRecHit::MuonRecHitContainer &rechit, std::vector _Layers ) :MuonRecHitContainer( rechit )//MuonRecHitContaine constructor call @@ -124,6 +126,10 @@ void gemcrValidation::bookHistograms(DQMStore::IBooker & ibooker, edm::Run const rh1_chamber = ibooker.book1D("rh1_chamber", "all recHits",n_ch,0,n_ch); rh2_chamber = ibooker.book1D("rh2_chamber", "cut passed recHits ",n_ch,0,n_ch); rh3_chamber = ibooker.book1D("rh3_chamber", "tracking recHits",n_ch,0,n_ch); + //Counter of Number of seed CAS + NumberOfSeeds = ibooker.book3D("NumberOfSeeds","RECHITS only from seeds", 200,-100,100,20,-55,55, 140,0,140); + + for(int c = 0; cidToDet((*recHit).gemId())->surface().toGlobal(recHitLP); Float_t rh_g_X = recHitGP.x(); Float_t rh_g_Y = recHitGP.y(); @@ -380,6 +387,7 @@ void gemcrValidation::analyze(const edm::Event& e, const edm::EventSetup& iSetup gem_cls_tot->Fill(clusterSize); gem_bx_tot->Fill(bx); rh1_chamber->Fill(index); + for(int i = firstClusterStrip; i < (firstClusterStrip + clusterSize); i++){ gem_chamber_digi_recHit[index]->Fill(i,rh_roll); } @@ -418,10 +426,10 @@ void gemcrValidation::analyze(const edm::Event& e, const edm::EventSetup& iSetup GEMDetId etaPartID = etaPart->id(); GEMRecHitCollection::range range = gemRecHits->get(etaPartID); for (GEMRecHitCollection::const_iterator rechit = range.first; rechit!=range.second; ++rechit){ - const GeomDet* geomDet(etaPart); - if ((*rechit).clusterSize()maxCLS) continue; - testRecHits.push_back(MuonTransientTrackingRecHit::specificBuild(geomDet,&*rechit)); + const GeomDet* geomDet(etaPart); + if ((*rechit).clusterSize()maxCLS) continue; + testRecHits.push_back(MuonTransientTrackingRecHit::specificBuild(geomDet,&*rechit)); } } MuonTransientTrackingRecHit::MuonRecHitContainer muRecHits; @@ -456,6 +464,33 @@ void gemcrValidation::analyze(const edm::Event& e, const edm::EventSetup& iSetup //std::vector Layers {, true, false};//temporal MuonRecHitContainerLayered muRecHitsl(muRecHits,refChambers); trajectorySeeds =findSeeds(muRecHitsl); + + for (GEMRecHitCollection::const_iterator recHit = trajectorySeeds->begin(); recHit != trajectorySeeds->end(); ++recHit){ + Float_t rh_l_x = recHit->localPosition().x(); + Int_t bx = recHit->BunchX(); + Int_t clusterSize = recHit->clusterSize(); + Int_t firstClusterStrip = recHit->firstClusterStrip(); + + GEMDetId id((*recHit).gemId()); + int index = findIndex(id); + firedCh[index] = 1; + rMul[index] += 1; + //checkRH[index] = 1; + Short_t rh_roll = (Short_t) id.roll(); + LocalPoint recHitLP = recHit->localPosition(); + + if ( GEMGeometry_->idToDet((*recHit).gemId()) == nullptr) { + std::cout<<"This gem recHit did not matched with GEMGeometry."<idToDet((*recHit).gemId())->surface().toGlobal(recHitLP); + Float_t rh_g_X = recHitGP.x(); + Float_t rh_g_Y = recHitGP.y(); + Float_t rh_g_Z = recHitGP.z(); + NumberOfSeeds->Fill(rh_g_X,rh_g_Z,rh_g_Y); + } + ///////////////////////////////////////////////////////////////////////////////////// Trajectory bestTrajectory; From 3ab39d315940021319536e466ae0422cedaf9609 Mon Sep 17 00:00:00 2001 From: Camilo Salazar Date: Wed, 20 Sep 2017 10:32:13 +0200 Subject: [PATCH 18/31] litle bug fixed --- Validation/GEMCR/src/gemcrValidation.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Validation/GEMCR/src/gemcrValidation.cc b/Validation/GEMCR/src/gemcrValidation.cc index 26d039ebf0732..7822f1b20f7f6 100644 --- a/Validation/GEMCR/src/gemcrValidation.cc +++ b/Validation/GEMCR/src/gemcrValidation.cc @@ -22,7 +22,7 @@ #include "TrackingTools/TrajectoryState/interface/TrajectoryStateTransform.h" #include "FWCore/Framework/interface/Frameworkfwd.h" -#include "DataFormats/TrajectorySeed/interface/" +#include "DataFormats/TrajectorySeed/interface/TrajectorySeed.h" #include "DataFormats/TrackingRecHit/interface/TrackingRecHit.h" #include "RecoMuon/TransientTrackingRecHit/interface/MuonTransientTrackingRecHit.h" #include "RecoMuon/TrackingTools/interface/MuonServiceProxy.h" From e6944cfc84b904d0160dfd6808086ffae991e25b Mon Sep 17 00:00:00 2001 From: Camilo Salazar Date: Wed, 20 Sep 2017 11:21:07 +0200 Subject: [PATCH 19/31] Ready the graph --- Validation/GEMCR/src/gemcrValidation.cc | 34 +++++-------------------- 1 file changed, 7 insertions(+), 27 deletions(-) diff --git a/Validation/GEMCR/src/gemcrValidation.cc b/Validation/GEMCR/src/gemcrValidation.cc index 7822f1b20f7f6..3e5494a85bc10 100644 --- a/Validation/GEMCR/src/gemcrValidation.cc +++ b/Validation/GEMCR/src/gemcrValidation.cc @@ -387,6 +387,13 @@ void gemcrValidation::analyze(const edm::Event& e, const edm::EventSetup& iSetup gem_cls_tot->Fill(clusterSize); gem_bx_tot->Fill(bx); rh1_chamber->Fill(index); + //CAS + + for (auto chambers : refChambers){ + if( chambers == id.chamber() ){ + NumberOfSeeds->Fill(rh_g_X,rh_g_Z,rh_g_Y); + } + } for(int i = firstClusterStrip; i < (firstClusterStrip + clusterSize); i++){ gem_chamber_digi_recHit[index]->Fill(i,rh_roll); @@ -464,33 +471,6 @@ void gemcrValidation::analyze(const edm::Event& e, const edm::EventSetup& iSetup //std::vector Layers {, true, false};//temporal MuonRecHitContainerLayered muRecHitsl(muRecHits,refChambers); trajectorySeeds =findSeeds(muRecHitsl); - - for (GEMRecHitCollection::const_iterator recHit = trajectorySeeds->begin(); recHit != trajectorySeeds->end(); ++recHit){ - Float_t rh_l_x = recHit->localPosition().x(); - Int_t bx = recHit->BunchX(); - Int_t clusterSize = recHit->clusterSize(); - Int_t firstClusterStrip = recHit->firstClusterStrip(); - - GEMDetId id((*recHit).gemId()); - int index = findIndex(id); - firedCh[index] = 1; - rMul[index] += 1; - //checkRH[index] = 1; - Short_t rh_roll = (Short_t) id.roll(); - LocalPoint recHitLP = recHit->localPosition(); - - if ( GEMGeometry_->idToDet((*recHit).gemId()) == nullptr) { - std::cout<<"This gem recHit did not matched with GEMGeometry."<idToDet((*recHit).gemId())->surface().toGlobal(recHitLP); - Float_t rh_g_X = recHitGP.x(); - Float_t rh_g_Y = recHitGP.y(); - Float_t rh_g_Z = recHitGP.z(); - NumberOfSeeds->Fill(rh_g_X,rh_g_Z,rh_g_Y); - } - ///////////////////////////////////////////////////////////////////////////////////// Trajectory bestTrajectory; From a444b2ae65e39cec417fb2235915e59516f29892 Mon Sep 17 00:00:00 2001 From: Camilo Salazar Date: Thu, 21 Sep 2017 18:43:04 +0200 Subject: [PATCH 20/31] Pair layers done --- Validation/GEMCR/src/gemcrValidation.cc | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/Validation/GEMCR/src/gemcrValidation.cc b/Validation/GEMCR/src/gemcrValidation.cc index 3e5494a85bc10..a5b0b57f6eda9 100644 --- a/Validation/GEMCR/src/gemcrValidation.cc +++ b/Validation/GEMCR/src/gemcrValidation.cc @@ -390,8 +390,17 @@ void gemcrValidation::analyze(const edm::Event& e, const edm::EventSetup& iSetup //CAS for (auto chambers : refChambers){ - if( chambers == id.chamber() ){ - NumberOfSeeds->Fill(rh_g_X,rh_g_Z,rh_g_Y); + if( chambers % 2 == 0 ){ + int SchamberN = chambers - 1; + if (SchamberN == id.chamber()){ + if ( id.layer() == 2 ) { + NumberOfSeeds->Fill(rh_g_X,rh_g_Z,rh_g_Y); + } + } + }else{ + if ( chambers == id.chamber()){ + NumberOfSeeds->Fill(rh_g_X,rh_g_Z,rh_g_Y); + } } } From 2323a8ebe8fa0aa235deeb9df786a0780ae15bef Mon Sep 17 00:00:00 2001 From: Camilo Salazar Date: Tue, 26 Sep 2017 16:32:15 +0200 Subject: [PATCH 21/31] Fixed single detector ask --- Validation/GEMCR/src/gemcrValidation.cc | 58 ++++++++++++++++++++----- 1 file changed, 47 insertions(+), 11 deletions(-) diff --git a/Validation/GEMCR/src/gemcrValidation.cc b/Validation/GEMCR/src/gemcrValidation.cc index 3e5494a85bc10..4c739cb67e819 100644 --- a/Validation/GEMCR/src/gemcrValidation.cc +++ b/Validation/GEMCR/src/gemcrValidation.cc @@ -219,23 +219,47 @@ auto_ptr > gemcrValidation::findSeeds(MuonRecHitCont // cout<< "layer" <rawId()); bool flaghit2 = false; - for (auto chambers : muRecHits.Layers){ - if( chambers == hit2ID.chamber() ){ - flaghit2 = true; + for (auto chambers : muRecHits.Layers){ + if( chambers % 2 == 0 ){ + int SchamberN = chambers - 1; + if (SchamberN == id.chamber()){ + if ( hit2ID.layer() == 1 ) { + flaghit2 = true; + } + } + }else{ + if ( chambers == id.chamber()){ + if ( hit2ID.layer() == 2 ) { + flaghit2 = true; + } + } } } + } if (flaghit2){//Condition over the hit2 // cout<< "hit1ID_chamber" <Fill(clusterSize); gem_bx_tot->Fill(bx); rh1_chamber->Fill(index); - //CAS + + //Filling de 3d graph CAS for (auto chambers : refChambers){ - if( chambers == id.chamber() ){ - NumberOfSeeds->Fill(rh_g_X,rh_g_Z,rh_g_Y); + if( chambers % 2 == 0 ){ + int SchamberN = chambers - 1; + if (SchamberN == id.chamber()){ + if ( id.layer() == 1 ) { + NumberOfSeeds->Fill(rh_g_X,rh_g_Z,rh_g_Y); + } + } + }else{ + if ( chambers == id.chamber()){ + if ( id.layer() == 2 ) { + NumberOfSeeds->Fill(rh_g_X,rh_g_Z,rh_g_Y); + } + } } } From 05d36c2785f24a9a020816dd4ef354fec167828e Mon Sep 17 00:00:00 2001 From: Camilo Salazar Date: Wed, 11 Oct 2017 10:37:12 +0200 Subject: [PATCH 22/31] Build file tu include simgem geometry --- Validation/GEMCR/BuildFile.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/Validation/GEMCR/BuildFile.xml b/Validation/GEMCR/BuildFile.xml index 99fee8d57c584..bcc5d8587a30a 100644 --- a/Validation/GEMCR/BuildFile.xml +++ b/Validation/GEMCR/BuildFile.xml @@ -28,6 +28,7 @@ + From 0e5672394402d8fe394b20c1260cd2f889a16cd9 Mon Sep 17 00:00:00 2001 From: Camilo Salazar Date: Mon, 16 Oct 2017 10:59:07 +0200 Subject: [PATCH 23/31] Fixes --- Validation/GEMCR/src/gemcrValidation.cc | 115 ++++++++++++------------ 1 file changed, 57 insertions(+), 58 deletions(-) diff --git a/Validation/GEMCR/src/gemcrValidation.cc b/Validation/GEMCR/src/gemcrValidation.cc index 0d58f3b776390..e0d64d891b455 100644 --- a/Validation/GEMCR/src/gemcrValidation.cc +++ b/Validation/GEMCR/src/gemcrValidation.cc @@ -219,81 +219,78 @@ auto_ptr > gemcrValidation::findSeeds(MuonRecHitCont // cout<< "layer" <rawId()); + + if(flaghit1){//Condition over hit1 bool flaghit2 = false; - for (auto chambers : muRecHits.Layers){ - if( chambers % 2 == 0 ){ - int SchamberN = chambers - 1; - if (SchamberN == id.chamber()){ - if ( hit2ID.layer() == 1 ) { - flaghit2 = true; + for (auto hit2 : muRecHits){ + GEMDetId hit2ID(hit2->rawId()); + for (auto chambers : muRecHits.Layers){ + if( chambers % 2 == 0 ){ + int SchamberN = chambers - 1; + if (SchamberN == hit2ID.chamber()){ + if ( hit2ID.layer() == 1 ) { + flaghit2 = true; + } } - } - }else{ - if ( chambers == id.chamber()){ - if ( hit2ID.layer() == 2 ) { - flaghit2 = true; + }else{ + if ( chambers == hit2ID.chamber()){ + if ( hit2ID.layer() == 2 ) { + flaghit2 = true; + } } } - } - } - } - - if (flaghit2){//Condition over the hit2 -// cout<< "hit1ID_chamber" <globalPosition().y() < hit2->globalPosition().y()){/*y direction is up-down? (cosmic), see if hit1 is Higher than the hit2*/ - LocalPoint segPos = hit1->localPosition();/*Define a LocalPoint with the position of hit1*/ - GlobalVector segDirGV(hit2->globalPosition().x() - hit1->globalPosition().x(),/*Define a vector called segDirGV from hit2-hit1 */ - (hit2->globalPosition().y() - hit1->globalPosition().y()), - hit2->globalPosition().z() - hit1->globalPosition().z()); - //cout<< " hit1->localPosition().y()" << hit1->localPosition().y()<globalPosition().y()" << hit1->globalPosition().y()<det()->toLocal(segDirGV); - int charge= 1; - LocalTrajectoryParameters param(segPos, segDir, charge); - - AlgebraicSymMatrix mat(5,0); - mat = hit1->parametersError().similarityT( hit1->projectionMatrix() ); - LocalTrajectoryError error(asSMatrix<5>(mat)); - - TrajectoryStateOnSurface tsos(param, error, hit1->det()->surface(), &*theService->magneticField()); - uint32_t id = hit1->rawId(); - PTrajectoryStateOnDet const & seedTSOS = trajectoryStateTransform::persistentState(tsos, id); - - edm::OwnVector seedHits; - seedHits.push_back(hit1->hit()->clone()); - seedHits.push_back(hit2->hit()->clone()); - - TrajectorySeed seed(seedTSOS,seedHits,alongMomentum); - tmptrajectorySeeds->push_back(seed); + if (flaghit2){//Condition over the hit2 + // cout<< "hit1ID_chamber" <globalPosition().y() < hit2->globalPosition().y()){/*y direction is up-down? (cosmic), see if hit1 is Higher than the hit2*/ + LocalPoint segPos = hit1->localPosition();/*Define a LocalPoint with the position of hit1*/ + GlobalVector segDirGV(hit2->globalPosition().x() - hit1->globalPosition().x(),/*Define a vector called segDirGV from hit2-hit1 */ + (hit2->globalPosition().y() - hit1->globalPosition().y()), + hit2->globalPosition().z() - hit1->globalPosition().z()); + //cout<< " hit1->localPosition().y()" << hit1->localPosition().y()<globalPosition().y()" << hit1->globalPosition().y()<det()->toLocal(segDirGV); + + int charge= 1; + LocalTrajectoryParameters param(segPos, segDir, charge); + + AlgebraicSymMatrix mat(5,0); + mat = hit1->parametersError().similarityT( hit1->projectionMatrix() ); + LocalTrajectoryError error(asSMatrix<5>(mat)); + + TrajectoryStateOnSurface tsos(param, error, hit1->det()->surface(), &*theService->magneticField()); + uint32_t id = hit1->rawId(); + PTrajectoryStateOnDet const & seedTSOS = trajectoryStateTransform::persistentState(tsos, id); + + edm::OwnVector seedHits; + seedHits.push_back(hit1->hit()->clone()); + seedHits.push_back(hit2->hit()->clone()); + + TrajectorySeed seed(seedTSOS,seedHits,alongMomentum); + tmptrajectorySeeds->push_back(seed); + } + } } } } @@ -418,13 +415,15 @@ void gemcrValidation::analyze(const edm::Event& e, const edm::EventSetup& iSetup if( chambers % 2 == 0 ){ int SchamberN = chambers - 1; if (SchamberN == id.chamber()){ - if ( id.layer() == 2 ) { + if ( id.layer() == 1 ) { NumberOfSeeds->Fill(rh_g_X,rh_g_Z,rh_g_Y); } } }else{ if ( chambers == id.chamber()){ - NumberOfSeeds->Fill(rh_g_X,rh_g_Z,rh_g_Y); + if ( id.layer() == 2 ) { + NumberOfSeeds->Fill(rh_g_X,rh_g_Z,rh_g_Y); + } } } } From b16787dc4670b01cf0dd20ed11b7c747604673e5 Mon Sep 17 00:00:00 2001 From: Camilo Salazar Date: Mon, 16 Oct 2017 11:26:49 +0200 Subject: [PATCH 24/31] bug Fixed --- Validation/GEMCR/test/runGEMCosmicStand_sim.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Validation/GEMCR/test/runGEMCosmicStand_sim.py b/Validation/GEMCR/test/runGEMCosmicStand_sim.py index e44d31aa4d65c..7d69595ef45fd 100644 --- a/Validation/GEMCR/test/runGEMCosmicStand_sim.py +++ b/Validation/GEMCR/test/runGEMCosmicStand_sim.py @@ -51,7 +51,7 @@ process.XMLIdealGeometryESSource.geomXMLFiles.append('Geometry/MuonCommonData/data/cosmic1/gem11L_c3_r5.xml') #process.maxEvents = cms.untracked.PSet(input = cms.untracked.int32(20000)) -process.maxEvents = cms.untracked.PSet(input = cms.untracked.int32(5000)) +process.maxEvents = cms.untracked.PSet(input = cms.untracked.int32(50000)) # Input source process.source = cms.Source("EmptySource") From 6f421baa138d6205cc1b12ff027029ddf5baaf35 Mon Sep 17 00:00:00 2001 From: Camilo Salazar Date: Mon, 16 Oct 2017 16:07:23 +0200 Subject: [PATCH 25/31] To generate what we analize --- .../CosmicMuonProducer/src/GEMCosmicMuon.cc | 249 +++++++++++++++--- 1 file changed, 213 insertions(+), 36 deletions(-) diff --git a/RecoMuon/CosmicMuonProducer/src/GEMCosmicMuon.cc b/RecoMuon/CosmicMuonProducer/src/GEMCosmicMuon.cc index 637256b852618..8e9939e8d3e3b 100644 --- a/RecoMuon/CosmicMuonProducer/src/GEMCosmicMuon.cc +++ b/RecoMuon/CosmicMuonProducer/src/GEMCosmicMuon.cc @@ -35,6 +35,39 @@ #include "Geometry/Records/interface/MuonGeometryRecord.h" using namespace std; +//CAS ADD MuonRecHitContainerLayered +class MuonRecHitContainerLayered : public MuonTransientTrackingRecHit::MuonRecHitContainer { + protected: + + public: + std::vector Layers; + MuonRecHitContainerLayered( MuonTransientTrackingRecHit::MuonRecHitContainer &rechit, std::vector _Layers ); + ~MuonRecHitContainerLayered( void ); + int GetLayer( unsigned int _L ); + // MuonTransientTrackingRecHit::MuonRecHitContaine& GetmuRecHits(void); +}; + +MuonRecHitContainerLayered::MuonRecHitContainerLayered( MuonTransientTrackingRecHit::MuonRecHitContainer &rechit, std::vector _Layers ) + :MuonRecHitContainer( rechit )//MuonRecHitContaine constructor call +{ + Layers = _Layers; +} + +MuonRecHitContainerLayered::~MuonRecHitContainerLayered( void ){ + +} +int MuonRecHitContainerLayered::GetLayer( unsigned int _L ){ + try { + if( _L > Layers.capacity() ) + { + throw "Max number of layer exceeded"; + } + }catch(const char* msg) + { + std::cerr << msg << endl; + } + return Layers[_L]; +} class GEMCosmicMuon : public edm::stream::EDProducer<> { public: @@ -53,7 +86,9 @@ class GEMCosmicMuon : public edm::stream::EDProducer<> { CosmicMuonSmoother* theSmoother; MuonServiceProxy* theService; KFUpdator* theUpdator; - unique_ptr > findSeeds(MuonTransientTrackingRecHit::MuonRecHitContainer &muRecHits); + std::vector refChambers; + //CAS MuonRecHitContainerLayered &muRecHits + unique_ptr > findSeeds(MuonRecHitContainerLayered &muRecHits); Trajectory makeTrajectory(TrajectorySeed seed, MuonTransientTrackingRecHit::MuonRecHitContainer &muRecHits, vector gemChambers); }; @@ -70,6 +105,8 @@ GEMCosmicMuon::GEMCosmicMuon(const edm::ParameterSet& ps) : iev(0) { edm::ParameterSet smootherPSet = ps.getParameter("MuonSmootherParameters"); theSmoother = new CosmicMuonSmoother(smootherPSet,theService); theUpdator = new KFUpdator(); + //CAS Add refChambers + refChambers = cfg.getParameter>("refChambers");//Reference chambers produces(); produces(); produces(); @@ -146,10 +183,15 @@ void GEMCosmicMuon::produce(edm::Event& ev, const edm::EventSetup& setup) { } } // cout<< "Number of GEM rechits = " << muRecHits.size()< Layers {, true, false};//temporal + MuonRecHitContainerLayered muRecHitsl(muRecHits,refChambers); + trajectorySeeds =findSeeds(muRecHitsl); + ///////////////////////////////////////////////////////////////////////////////////// // cout << "GEMCosmicMuon::trajectorySeeds->size() " << trajectorySeeds->size() << endl; - + // need to loop over seeds, make best track and save only best track //TrajectorySeed seed =trajectorySeeds->at(0); Trajectory bestTrajectory; @@ -240,40 +282,175 @@ void GEMCosmicMuon::produce(edm::Event& ev, const edm::EventSetup& setup) { unique_ptr > GEMCosmicMuon::findSeeds(MuonTransientTrackingRecHit::MuonRecHitContainer &muRecHits) { unique_ptr > trajectorySeeds( new vector()); - for (auto hit1 : muRecHits){ - for (auto hit2 : muRecHits){ - if (hit1->globalPosition().y() < hit2->globalPosition().y()){ - LocalPoint segPos = hit1->localPosition(); - GlobalVector segDirGV(hit2->globalPosition().x() - hit1->globalPosition().x(), - (hit2->globalPosition().y() - hit1->globalPosition().y()), - hit2->globalPosition().z() - hit1->globalPosition().z()); - - segDirGV *=10; - LocalVector segDir = hit1->det()->toLocal(segDirGV); - // cout << "GEMCosmicMuon::GlobalVector " << segDirGV << endl; - // cout << "GEMCosmicMuon::LocalVector " << segDir << endl; - - int charge= 1; - LocalTrajectoryParameters param(segPos, segDir, charge); - - AlgebraicSymMatrix mat(5,0); - mat = hit1->parametersError().similarityT( hit1->projectionMatrix() ); - //float p_err = 0.2; - //mat[0][0]= p_err; - LocalTrajectoryError error(asSMatrix<5>(mat)); + for (auto hit1 : muRecHits){/* Range-based for loop, access by value, the type of hit1 is MuonTransientTrackingRecHit::MuonRecHitContaine&*/ + + ///////////////////////////////////////////////////////////// + // Requesting Only seed for reference layer + ///////////////////////////////////////////////////////////// + GEMDetId hit1ID(hit1->rawId()); + // cout<< "layer" <det()->surface(), &*theService->magneticField()); - //cout << "GEMCosmicMuon::tsos " << tsos << endl; - uint32_t id = hit1->rawId(); - PTrajectoryStateOnDet const & seedTSOS = trajectoryStateTransform::persistentState(tsos, id); - - edm::OwnVector seedHits; - seedHits.push_back(hit1->hit()->clone()); - seedHits.push_back(hit2->hit()->clone()); + if(flaghit1){//Condition over hit1 + bool flaghit2 = false; + for (auto hit2 : muRecHits){ + GEMDetId hit2ID(hit2->rawId()); + for (auto chambers : muRecHits.Layers){ + if( chambers % 2 == 0 ){ + int SchamberN = chambers - 1; + if (SchamberN == hit2ID.chamber()){ + if ( hit2ID.layer() == 1 ) { + flaghit2 = true; + } + } + }else{ + if ( chambers == hit2ID.chamber()){ + if ( hit2ID.layer() == 2 ) { + flaghit2 = true; + } + } + } + + if (flaghit2){//Condition over the hit2 + // cout<< "hit1ID_chamber" <globalPosition().y() < hit2->globalPosition().y()){/*y direction is up-down? (cosmic), see if hit1 is Higher than the hit2*/ + LocalPoint segPos = hit1->localPosition();/*Define a LocalPoint with the position of hit1*/ + GlobalVector segDirGV(hit2->globalPosition().x() - hit1->globalPosition().x(),/*Define a vector called segDirGV from hit2-hit1 */ + (hit2->globalPosition().y() - hit1->globalPosition().y()), + hit2->globalPosition().z() - hit1->globalPosition().z()); + //cout<< " hit1->localPosition().y()" << hit1->localPosition().y()<globalPosition().y()" << hit1->globalPosition().y()<det()->toLocal(segDirGV); + + int charge= 1; + LocalTrajectoryParameters param(segPos, segDir, charge); + + AlgebraicSymMatrix mat(5,0); + mat = hit1->parametersError().similarityT( hit1->projectionMatrix() ); + LocalTrajectoryError error(asSMatrix<5>(mat)); + + TrajectoryStateOnSurface tsos(param, error, hit1->det()->surface(), &*theService->magneticField()); + uint32_t id = hit1->rawId(); + PTrajectoryStateOnDet const & seedTSOS = trajectoryStateTransform::persistentState(tsos, id); + + edm::OwnVector seedHits; + seedHits.push_back(hit1->hit()->clone()); + seedHits.push_back(hit2->hit()->clone()); + + TrajectorySeed seed(seedTSOS,seedHits,alongMomentum); + tmptrajectorySeeds->push_back(seed); + } + } + } + } + } + } + } + for (auto hit1 : muRecHits){/* Range-based for loop, access by value, the type of hit1 is MuonTransientTrackingRecHit::MuonRecHitContaine&*/ + + ///////////////////////////////////////////////////////////// + // Requesting Only seed for reference layer + ///////////////////////////////////////////////////////////// + GEMDetId hit1ID(hit1->rawId()); + // cout<< "layer" <push_back(seed); + if(flaghit1){//Condition over hit1 + bool flaghit2 = false; + for (auto hit2 : muRecHits){ + GEMDetId hit2ID(hit2->rawId()); + for (auto chambers : muRecHits.Layers){ + if( chambers % 2 == 0 ){ + int SchamberN = chambers - 1; + if (SchamberN == hit2ID.chamber()){ + if ( hit2ID.layer() == 1 ) { + flaghit2 = true; + } + } + }else{ + if ( chambers == hit2ID.chamber()){ + if ( hit2ID.layer() == 2 ) { + flaghit2 = true; + } + } + } + + if (flaghit2){//Condition over the hit2 + // cout<< "hit1ID_chamber" <globalPosition().y() < hit2->globalPosition().y()){/*y direction is up-down? (cosmic), see if hit1 is Higher than the hit2*/ + LocalPoint segPos = hit1->localPosition();/*Define a LocalPoint with the position of hit1*/ + GlobalVector segDirGV(hit2->globalPosition().x() - hit1->globalPosition().x(),/*Define a vector called segDirGV from hit2-hit1 */ + (hit2->globalPosition().y() - hit1->globalPosition().y()), + hit2->globalPosition().z() - hit1->globalPosition().z()); + //cout<< " hit1->localPosition().y()" << hit1->localPosition().y()<globalPosition().y()" << hit1->globalPosition().y()<det()->toLocal(segDirGV); + + int charge= 1; + LocalTrajectoryParameters param(segPos, segDir, charge); + + AlgebraicSymMatrix mat(5,0); + mat = hit1->parametersError().similarityT( hit1->projectionMatrix() ); + LocalTrajectoryError error(asSMatrix<5>(mat)); + + TrajectoryStateOnSurface tsos(param, error, hit1->det()->surface(), &*theService->magneticField()); + uint32_t id = hit1->rawId(); + PTrajectoryStateOnDet const & seedTSOS = trajectoryStateTransform::persistentState(tsos, id); + + edm::OwnVector seedHits; + seedHits.push_back(hit1->hit()->clone()); + seedHits.push_back(hit2->hit()->clone()); + + TrajectorySeed seed(seedTSOS,seedHits,alongMomentum); + tmptrajectorySeeds->push_back(seed); + } + } + } + } } } } From c105702a41a7a4f1e272ca48792a3610f43c2a6a Mon Sep 17 00:00:00 2001 From: Camilo Salazar Date: Mon, 16 Oct 2017 16:29:44 +0200 Subject: [PATCH 26/31] bug fixed --- RecoMuon/CosmicMuonProducer/src/GEMCosmicMuon.cc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/RecoMuon/CosmicMuonProducer/src/GEMCosmicMuon.cc b/RecoMuon/CosmicMuonProducer/src/GEMCosmicMuon.cc index 8e9939e8d3e3b..09871183fd22d 100644 --- a/RecoMuon/CosmicMuonProducer/src/GEMCosmicMuon.cc +++ b/RecoMuon/CosmicMuonProducer/src/GEMCosmicMuon.cc @@ -106,7 +106,7 @@ GEMCosmicMuon::GEMCosmicMuon(const edm::ParameterSet& ps) : iev(0) { theSmoother = new CosmicMuonSmoother(smootherPSet,theService); theUpdator = new KFUpdator(); //CAS Add refChambers - refChambers = cfg.getParameter>("refChambers");//Reference chambers + refChambers = ps.getParameter>("refChambers");//Reference chambers produces(); produces(); produces(); @@ -279,7 +279,7 @@ void GEMCosmicMuon::produce(edm::Event& ev, const edm::EventSetup& setup) { } -unique_ptr > GEMCosmicMuon::findSeeds(MuonTransientTrackingRecHit::MuonRecHitContainer &muRecHits) +unique_ptr > GEMCosmicMuon::findSeeds(MuonRecHitContainerLayered &muRecHits) { unique_ptr > trajectorySeeds( new vector()); for (auto hit1 : muRecHits){/* Range-based for loop, access by value, the type of hit1 is MuonTransientTrackingRecHit::MuonRecHitContaine&*/ From 37b4ae1676623433e26ae574b823f2229dc8ba2e Mon Sep 17 00:00:00 2001 From: Camilo Salazar Date: Mon, 16 Oct 2017 16:33:53 +0200 Subject: [PATCH 27/31] big bug fixed --- .../CosmicMuonProducer/src/GEMCosmicMuon.cc | 86 ------------------- 1 file changed, 86 deletions(-) diff --git a/RecoMuon/CosmicMuonProducer/src/GEMCosmicMuon.cc b/RecoMuon/CosmicMuonProducer/src/GEMCosmicMuon.cc index 09871183fd22d..249e2a8330020 100644 --- a/RecoMuon/CosmicMuonProducer/src/GEMCosmicMuon.cc +++ b/RecoMuon/CosmicMuonProducer/src/GEMCosmicMuon.cc @@ -308,92 +308,6 @@ unique_ptr > GEMCosmicMuon::findSeeds(MuonRecHitCont } - if(flaghit1){//Condition over hit1 - bool flaghit2 = false; - for (auto hit2 : muRecHits){ - GEMDetId hit2ID(hit2->rawId()); - for (auto chambers : muRecHits.Layers){ - if( chambers % 2 == 0 ){ - int SchamberN = chambers - 1; - if (SchamberN == hit2ID.chamber()){ - if ( hit2ID.layer() == 1 ) { - flaghit2 = true; - } - } - }else{ - if ( chambers == hit2ID.chamber()){ - if ( hit2ID.layer() == 2 ) { - flaghit2 = true; - } - } - } - - if (flaghit2){//Condition over the hit2 - // cout<< "hit1ID_chamber" <globalPosition().y() < hit2->globalPosition().y()){/*y direction is up-down? (cosmic), see if hit1 is Higher than the hit2*/ - LocalPoint segPos = hit1->localPosition();/*Define a LocalPoint with the position of hit1*/ - GlobalVector segDirGV(hit2->globalPosition().x() - hit1->globalPosition().x(),/*Define a vector called segDirGV from hit2-hit1 */ - (hit2->globalPosition().y() - hit1->globalPosition().y()), - hit2->globalPosition().z() - hit1->globalPosition().z()); - //cout<< " hit1->localPosition().y()" << hit1->localPosition().y()<globalPosition().y()" << hit1->globalPosition().y()<det()->toLocal(segDirGV); - - int charge= 1; - LocalTrajectoryParameters param(segPos, segDir, charge); - - AlgebraicSymMatrix mat(5,0); - mat = hit1->parametersError().similarityT( hit1->projectionMatrix() ); - LocalTrajectoryError error(asSMatrix<5>(mat)); - - TrajectoryStateOnSurface tsos(param, error, hit1->det()->surface(), &*theService->magneticField()); - uint32_t id = hit1->rawId(); - PTrajectoryStateOnDet const & seedTSOS = trajectoryStateTransform::persistentState(tsos, id); - - edm::OwnVector seedHits; - seedHits.push_back(hit1->hit()->clone()); - seedHits.push_back(hit2->hit()->clone()); - - TrajectorySeed seed(seedTSOS,seedHits,alongMomentum); - tmptrajectorySeeds->push_back(seed); - } - } - } - } - } - } - } - for (auto hit1 : muRecHits){/* Range-based for loop, access by value, the type of hit1 is MuonTransientTrackingRecHit::MuonRecHitContaine&*/ - - ///////////////////////////////////////////////////////////// - // Requesting Only seed for reference layer - ///////////////////////////////////////////////////////////// - GEMDetId hit1ID(hit1->rawId()); - // cout<< "layer" < Date: Mon, 16 Oct 2017 16:38:30 +0200 Subject: [PATCH 28/31] bug fixed --- RecoMuon/CosmicMuonProducer/src/GEMCosmicMuon.cc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/RecoMuon/CosmicMuonProducer/src/GEMCosmicMuon.cc b/RecoMuon/CosmicMuonProducer/src/GEMCosmicMuon.cc index 249e2a8330020..6dd9f3dede9ba 100644 --- a/RecoMuon/CosmicMuonProducer/src/GEMCosmicMuon.cc +++ b/RecoMuon/CosmicMuonProducer/src/GEMCosmicMuon.cc @@ -281,7 +281,7 @@ void GEMCosmicMuon::produce(edm::Event& ev, const edm::EventSetup& setup) { unique_ptr > GEMCosmicMuon::findSeeds(MuonRecHitContainerLayered &muRecHits) { - unique_ptr > trajectorySeeds( new vector()); + unique_ptr > tmptrajectorySeeds( new vector()); for (auto hit1 : muRecHits){/* Range-based for loop, access by value, the type of hit1 is MuonTransientTrackingRecHit::MuonRecHitContaine&*/ ///////////////////////////////////////////////////////////// @@ -369,7 +369,7 @@ unique_ptr > GEMCosmicMuon::findSeeds(MuonRecHitCont } } - return trajectorySeeds; + return tmptrajectorySeeds; } Trajectory GEMCosmicMuon::makeTrajectory(TrajectorySeed seed, MuonTransientTrackingRecHit::MuonRecHitContainer &muRecHits, vector gemChambers) { From e7e1d6aa979cb4fecf95152991bc04d28b05633a Mon Sep 17 00:00:00 2001 From: Camilo Salazar Date: Mon, 16 Oct 2017 16:49:49 +0200 Subject: [PATCH 29/31] default run modify --- Validation/GEMCR/test/runGEMCosmicStand_sim.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/Validation/GEMCR/test/runGEMCosmicStand_sim.py b/Validation/GEMCR/test/runGEMCosmicStand_sim.py index 7d69595ef45fd..707d28a95f4b1 100644 --- a/Validation/GEMCR/test/runGEMCosmicStand_sim.py +++ b/Validation/GEMCR/test/runGEMCosmicStand_sim.py @@ -51,7 +51,7 @@ process.XMLIdealGeometryESSource.geomXMLFiles.append('Geometry/MuonCommonData/data/cosmic1/gem11L_c3_r5.xml') #process.maxEvents = cms.untracked.PSet(input = cms.untracked.int32(20000)) -process.maxEvents = cms.untracked.PSet(input = cms.untracked.int32(50000)) +process.maxEvents = cms.untracked.PSet(input = cms.untracked.int32(500)) # Input source process.source = cms.Source("EmptySource") @@ -159,6 +159,7 @@ PropagatorOpposite = cms.string('SteppingHelixPropagatorAny'), RescalingFactor = cms.double(5.0) ), + refChambers=cms.vint32(11,20) ) process.GEMCosmicMuon.ServiceParameters.GEMLayers = cms.untracked.bool(True) process.GEMCosmicMuon.ServiceParameters.CSCLayers = cms.untracked.bool(False) @@ -196,7 +197,7 @@ ), #Reference Chambers #refChambers=cms.vint32( 1, 11, 21, 3, 13, 23, 5, 15, 25, 7, 17, 27, 9, 19, 29) - refChambers=cms.vint32( 1, 11, 21, 9, 19, 29) + refChambers=cms.vint32( 11, 20) ) # Path and EndPath definitions From e6c35a5ae6e0360ec46ecfab9335b8cad60b2cb7 Mon Sep 17 00:00:00 2001 From: Camilo Salazar Date: Tue, 14 Nov 2017 11:41:48 +0100 Subject: [PATCH 30/31] Changes made to implement the new seed algorithm --- .../GEMCR/test/runGEMCosmicStand_data.py | 72 ++++++++++--------- 1 file changed, 39 insertions(+), 33 deletions(-) diff --git a/Validation/GEMCR/test/runGEMCosmicStand_data.py b/Validation/GEMCR/test/runGEMCosmicStand_data.py index 98a7840cb832e..917b7a0b788eb 100644 --- a/Validation/GEMCR/test/runGEMCosmicStand_data.py +++ b/Validation/GEMCR/test/runGEMCosmicStand_data.py @@ -120,10 +120,13 @@ trackResX = cms.double(runConfig.trackResX), trackResY = cms.double(runConfig.trackResY), MuonSmootherParameters = cms.PSet( - PropagatorAlong = cms.string('SteppingHelixPropagatorAny'), - PropagatorOpposite = cms.string('SteppingHelixPropagatorAny'), - RescalingFactor = cms.double(5.0) - ), + PropagatorAlong = cms.string('SteppingHelixPropagatorAny'), + PropagatorOpposite = cms.string('SteppingHelixPropagatorAny'), + RescalingFactor = cms.double(5.0) + ), + #Reference Chambers + #refChambers=cms.vint32( 1, 11, 21, 3, 13, 23, 5, 15, 25, 7, 17, 27, 9, 19, 29) + refChambers=cms.vint32( 11, 20) ) process.GEMCosmicMuon.ServiceParameters.GEMLayers = cms.untracked.bool(True) @@ -131,35 +134,38 @@ #process.GEMCosmicMuon.ServiceParameters.UseMuonNavigation = cms.untracked.bool(False) process.gemcrValidation = cms.EDAnalyzer('gemcrValidation', - process.MuonServiceProxy, - verboseSimHit = cms.untracked.int32(1), - simInputLabel = cms.InputTag('g4SimHits',"MuonGEMHits"), - recHitsInputLabel = cms.InputTag('gemRecHits'), - tracksInputLabel = cms.InputTag('GEMCosmicMuon','','RECO'), - seedInputLabel = cms.InputTag('GEMCosmicMuon','','RECO'), - gemDigiLabel = cms.InputTag("muonGEMDigis","","RECO"), - #genParticleLabel = cms.InputTag('genParticles','','RECO'), - # st1, st2_short, st2_long of xbin, st1,st2_short,st2_long of ybin - nBinGlobalZR = cms.untracked.vdouble(200,200,200,150,180,250), - # st1 xmin, xmax, st2_short xmin, xmax, st2_long xmin, xmax, st1 ymin, ymax... - RangeGlobalZR = cms.untracked.vdouble(564,572,786,794,786,802,110,260,170,350,100,350), - #nBinGlobalXY = cms.untracked.int32(720), - #detailPlot = cms.bool(True), - #detailPlot = cms.bool(False), - maxClusterSize = cms.double(runConfig.maxClusterSize), - minClusterSize = cms.double(runConfig.minClusterSize), - maxResidual = cms.double(runConfig.maxResidual), - makeTrack = cms.bool(runConfig.makeTrack), - isMC = cms.bool(False), - trackChi2 = cms.double(runConfig.trackChi2), - trackResX = cms.double(runConfig.trackResX), - trackResY = cms.double(runConfig.trackResY), - MuonSmootherParameters = cms.PSet( - PropagatorAlong = cms.string('SteppingHelixPropagatorAny'), - PropagatorOpposite = cms.string('SteppingHelixPropagatorAny'), - RescalingFactor = cms.double(5.0)) - -) + process.MuonServiceProxy, + verboseSimHit = cms.untracked.int32(1), + simInputLabel = cms.InputTag('g4SimHits',"MuonGEMHits"), + recHitsInputLabel = cms.InputTag('gemRecHits'), + tracksInputLabel = cms.InputTag('GEMCosmicMuon','','RECO'), + seedInputLabel = cms.InputTag('GEMCosmicMuon','','RECO'), + gemDigiLabel = cms.InputTag("muonGEMDigis","","RECO"), + #genParticleLabel = cms.InputTag('genParticles','','RECO'), + # st1, st2_short, st2_long of xbin, st1,st2_short,st2_long of ybin + nBinGlobalZR = cms.untracked.vdouble(200,200,200,150,180,250), + # st1 xmin, xmax, st2_short xmin, xmax, st2_long xmin, xmax, st1 ymin, ymax... + RangeGlobalZR = cms.untracked.vdouble(564,572,786,794,786,802,110,260,170,350,100,350), + #nBinGlobalXY = cms.untracked.int32(720), + #detailPlot = cms.bool(True), + #detailPlot = cms.bool(False), + maxClusterSize = cms.double(runConfig.maxClusterSize), + minClusterSize = cms.double(runConfig.minClusterSize), + maxResidual = cms.double(runConfig.maxResidual), + makeTrack = cms.bool(runConfig.makeTrack), + isMC = cms.bool(False), + trackChi2 = cms.double(runConfig.trackChi2), + trackResX = cms.double(runConfig.trackResX), + trackResY = cms.double(runConfig.trackResY), + MuonSmootherParameters = cms.PSet( + PropagatorAlong = cms.string('SteppingHelixPropagatorAny'), + PropagatorOpposite = cms.string('SteppingHelixPropagatorAny'), + RescalingFactor = cms.double(5.0)), + #Reference Chambers + #refChambers=cms.vint32( 1, 11, 21, 3, 13, 23, 5, 15, 25, 7, 17, 27, 9, 19, 29) + refChambers=cms.vint32( 11, 20) + + ) # Path and EndPath definitions process.digi_step = cms.Path(process.muonGEMDigis) From 410db0ceb75e4e8d9f7da04356320d25e8a4a220 Mon Sep 17 00:00:00 2001 From: Camilo Salazar Date: Tue, 14 Nov 2017 11:48:47 +0100 Subject: [PATCH 31/31] Empty README Removed --- Validation/GEMCR/test/README.txt | 1 - 1 file changed, 1 deletion(-) delete mode 100644 Validation/GEMCR/test/README.txt diff --git a/Validation/GEMCR/test/README.txt b/Validation/GEMCR/test/README.txt deleted file mode 100644 index 20fee0ffa1af0..0000000000000 --- a/Validation/GEMCR/test/README.txt +++ /dev/null @@ -1 +0,0 @@ -New fork made by Camilo Andres Salazar G