Changeset 2114 for trunk/MagicSoft/Mars/mranforest
- Timestamp:
- 05/13/03 15:16:54 (22 years ago)
- Location:
- trunk/MagicSoft/Mars/mranforest
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/MagicSoft/Mars/mranforest/MRanForest.cc
r2071 r2114 85 85 void MRanForest::SetPriors(Float_t prior_had, Float_t prior_gam) 86 86 { 87 Float_t sum; 88 89 sum=prior_gam+prior_had; 87 const Float_t sum=prior_gam+prior_had; 90 88 91 89 prior_gam/=sum; … … 98 96 } 99 97 100 Double_t MRanForest::CalcHadroness( TVector &event)98 Double_t MRanForest::CalcHadroness(const TVector &event) 101 99 { 102 100 Double_t hadroness=0; 103 101 Int_t ntree=0; 102 103 TIter forest(fForest); 104 104 105 MRanTree *tree; 105 106 TIter forest(fForest);107 forest.Reset();108 109 106 while ((tree=(MRanTree*)forest.Next())) 110 107 { -
trunk/MagicSoft/Mars/mranforest/MRanForest.h
r2071 r2114 96 96 97 97 // use forest to calculate hadronness of event 98 Double_t CalcHadroness( TVector &event);98 Double_t CalcHadroness(const TVector &event); 99 99 100 100 Bool_t AsciiWrite(ostream &out) const; -
trunk/MagicSoft/Mars/mranforest/MRanForestCalc.cc
r2071 r2114 137 137 Bool_t MRanForestCalc::Process() 138 138 { 139 const Double_t ncols = fData->GetNumEntries(); 140 TVector event(ncols); 141 142 for (int i=0; i<fData->GetNumEntries(); i++) 143 event(i) = (*fData)(i); 139 // first copy the data from the data array to a vector event 140 TVector event; 141 *fData >> event; 144 142 145 143 Double_t hadroness=fRanForest->CalcHadroness(event); -
trunk/MagicSoft/Mars/mranforest/MRanTree.cc
r2071 r2114 178 178 // (Gini-index as criterium crit) 179 179 180 critmax=-1.0e20; 180 critmax=-1.0e20; // FIXME: Replace by a constant from limits.h 181 181 182 182 // random split selection, number of trials = fNumTry … … 301 301 for(Int_t n=ndstart;n<=ndend;n++) 302 302 ncase[n]=datasort[msplit*numdata+n]; 303 304 return;305 303 } 306 304 … … 459 457 fBestSplit[kn]/=(classpop[0*nrnodes+kn]+classpop[1*nrnodes+kn]); 460 458 } 461 462 return;463 459 } 464 460 … … 468 464 } 469 465 470 Double_t MRanTree::TreeHad(TVector &event) 471 { 472 Int_t kt=0; 473 // to optimize on storage space node status and node class 474 // are coded into fBestVar: 475 // status of node kt = TMath::Sign(1,fBestVar[kt]) 476 // hadronness assigned to node kt = fBestSplit[kt] 477 478 for (Int_t k=0;k<fNumNodes;k++) 479 { 480 if (fBestVar[kt]<0) 481 break; 482 483 Int_t m=fBestVar[kt]; 484 485 if (event(m)<=fBestSplit[kt]) 486 kt=fTreeMap1[kt]; 487 else 488 kt=fTreeMap2[kt]; 489 } 490 491 return fBestSplit[kt]; 492 } 493 494 Double_t MRanTree::TreeHad() 495 { 496 const Double_t ncols = fData->GetNumEntries(); 497 TVector event(ncols); 498 499 for (int i=0; i<fData->GetNumEntries(); i++) 500 event(i) = (*fData)(i); 501 466 Double_t MRanTree::TreeHad(const TVector &event) 467 { 502 468 Int_t kt=0; 503 469 // to optimize on storage space node status and node class … … 513 479 break; 514 480 515 Int_t m=fBestVar[kt]; 516 517 if (event(m)<=fBestSplit[kt]) 518 kt=fTreeMap1[kt]; 519 else 520 kt=fTreeMap2[kt]; 521 481 const Int_t m=fBestVar[kt]; 482 483 kt = event(m)<=fBestSplit[kt] ? fTreeMap1[kt] : fTreeMap2[kt]; 522 484 } 523 485 524 486 return fBestSplit[kt]; 487 } 488 489 Double_t MRanTree::TreeHad() 490 { 491 TVector event; 492 *fData >> event; 493 494 return TreeHad(event); 525 495 } 526 496 -
trunk/MagicSoft/Mars/mranforest/MRanTree.h
r2071 r2114 81 81 TArrayF &wl,Int_t ninbag); 82 82 83 Double_t TreeHad( TVector &event);83 Double_t TreeHad(const TVector &event); 84 84 Double_t TreeHad(); 85 85
Note:
See TracChangeset
for help on using the changeset viewer.