ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/L1RpcTriggerAnalysis/src/PatternManager.cc
(Generate patch)

Comparing UserCode/L1RpcTriggerAnalysis/src/PatternManager.cc (file contents):
Revision 1.11 by akalinow, Tue Jun 25 11:06:03 2013 UTC vs.
Revision 1.12 by akalinow, Fri Jun 28 08:31:12 2013 UTC

# Line 50 | Line 50 | PatternManager::~PatternManager()
50  
51   void PatternManager::run(const EventObj* ev, const TrackObj * simu, const HitSpecObj * hitSpec,  const VDigiSpec & vDigi)
52   {
53 +
54 +  if (theConfig.exists("patternInpFile") &&
55 +      theConfig.exists("patternOutFile")) return;
56 +
57    if (!hitSpec) return;
58    if (hitSpec->rawId() == 0 ) return;
59 <  double phiref = hitSpec->position().phi();
60 <  double ptref  = simu->pt();
59 >
60 >  int stripRef = -1;
61 >  for (VDigiSpec::const_iterator is= vDigi.begin(); is!=vDigi.end(); ++is) {  
62 >    if(is->first!=hitSpec->rawId()) continue;
63 >    RPCDigiSpec digi(is->first, is->second);
64 >    stripRef = digi.halfStrip();
65 >  }
66 >
67 >  ///Use only events with a digi in reference station
68 >  if(stripRef<0) return;
69 >
70 >  //float phiref = hitSpec->position().phi();
71 >  float phiref = stripRef;
72 >  float ptref  = simu->pt();
73    int    chargeref = simu->charge();
74    unsigned int detref =  hitSpec->rawId();
59 /*
60  if (detref != 637602109 && detref != 637634877 &&
61      detref != 637599914 && detref != 637632682 ) return;
62
63  bool precisePos = ( fabs(hitSpec->position().phi()-1.025) < 0.001);
64  if (!precisePos) return;
65  if ( simu->pt() < 16.) return;
66 */
67
75  
76    GoldenPattern::Key key( detref, ptref, chargeref, phiref);
77 +  //if(detref!=637602109 || chargeref<0 || phiref!=80) return;
78 +  //std::cout<<key<<std::endl;
79  
80    Pattern pattern;
81    theEvForPatCounter++;
# Line 85 | Line 94 | void PatternManager::run(const EventObj*
94   L1Obj PatternManager::check(const EventObj* ev, const TrackObj * simu, const HitSpecObj * hitSpec,  const VDigiSpec & vDigi)
95   {
96    L1Obj candidate;
97 +
98 +  if (theConfig.exists("patternInpFile") &&
99 +      theConfig.exists("patternOutFile")) return candidate;
100 +
101    if (!hitSpec) return candidate;
102    if (hitSpec->rawId() == 0 ) return candidate;
103 <  double phiref = hitSpec->position().phi();
104 <  double ptref  = simu->pt();
103 >  float phiref = hitSpec->position().phi();
104 >  float ptref  = simu->pt();
105    int    chargeref = simu->charge();
106    unsigned int detref =  hitSpec->rawId();
107   /*
# Line 119 | Line 132 | L1Obj PatternManager::check(const EventO
132    //std::cout <<" ------------------ END EVENT, NOW COMPARE, has #patterns: "<<vpattern.size()<<" vpattern[0].size="<<vpattern[0].size() << std::endl;
133  
134    GoldenPattern::Key thisKey(detref, ptref, chargeref, phiref );
135 < //  std::cout << thisKey << std::endl;
135 >  //std::cout << thisKey << std::endl;
136  
137    GoldenPattern::Result bestMatching;
138    GoldenPattern::Key    bestKey;
# Line 127 | Line 140 | L1Obj PatternManager::check(const EventO
140      const Pattern & pattern = *ip;
141      //  std::cout << " HAS PATTERN "<<pattern << std::endl;
142      for (std::map< GoldenPattern::Key, GoldenPattern>::iterator igps = theGPs.begin(); igps != theGPs.end(); ++igps) {
143 <      //    if (!(thisKey==igps->first)) continue;
143 >      //if (!(thisKey==igps->first)) continue;
144        GoldenPattern & gp = igps->second;
145        GoldenPattern::Result result = gp.compare(pattern);
146 <      //    if (!result.hasRpcDet(637602109) && !result.hasRpcDet(637634877) && !result.hasRpcDet(637599914) && !result.hasRpcDet(637632682)) continue;
147 <      //    if (!result.hasRpcDet(igps->first.theDet)) continue;
135 <      //    if (result.nMatchedTot() < 5 )continue;
136 <      //    if (!result) continue;
137 <      //     std::cout <<"PATT KEY: "<<igps->first<<" "<<result ; //<<std::endl;
146 >      
147 >      std::cout <<"PATT KEY: "<<igps->first<<" "<<result<<std::endl;
148        if (bestMatching < result) {
149          bestMatching = result;
150          bestKey =  igps->first;
# Line 175 | Line 185 | void PatternManager::beginJob()
185      key.thePtCode =  entry.key_pt;
186      key.thePhiCode = entry.key_phi;
187      key.theCharge =  entry.key_ch;
188 +
189 +    /*
190 +    if(entry.key_det!=637602109 ||
191 +       entry.key_pt!=7 ||
192 +       entry.key_phi!=166 ||
193 +       entry.key_ch!=-1) continue;
194 +    */
195 +
196      GoldenPattern::PosBenCase pat_Case = static_cast<GoldenPattern::PosBenCase>(entry.pat_Case);
197      if (theGPs.find(key)==theGPs.end()) theGPs[key]=GoldenPattern(key);
198      theGPs[key].add(pat_Case, entry.patDet, entry.posOrBend, entry.freq);
# Line 188 | Line 206 | void PatternManager::endJob(){
206    if ( !theConfig.exists("patternOutFile") ) return;
207    std::string patternOutFileName = theConfig.getParameter<std::string>("patternOutFile");
208    TFile patternOutFile( patternOutFileName.c_str(),"RECREATE");
209 <
210 <  for (std::map< GoldenPattern::Key, GoldenPattern>::iterator igps = theGPs.begin(); igps != theGPs.end(); ++igps) {
211 <    GoldenPattern & gp = igps->second;
212 <    gp.purge();
209 >  
210 >  if (theConfig.exists("patternInpFile") && theConfig.exists("patternOutFile")){
211 >    for (auto igps = theGPs.begin(); igps != theGPs.end();) {
212 >      GoldenPattern & gp = igps->second;      
213 >      if(!gp.purge()) {theGPs.erase(igps++); } else { ++igps; }
214 >    }
215    }
216 <
216 >  
217    static ENTRY entry;
218    TTree *tree = new TTree("FlatPatterns","FlatPatterns");
219    tree->Branch("entry",&entry,"key_det/i:key_pt/i:key_phi/i:key_ch/I:pat_Case/i:patDet/i:posOrBend/I:freq/i");

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines