-- TakuyaKumaoka - 2020-02-27

StgcRecoFitter Algorithm

概要

124731246312522125401253112471125191248312488_2020-03-30_15.56.07.png

findStgcSuperPoints2が本体。(1., 2.は現状seed decodingがデータに施されていないため。最終的には不要となる)

  1. stgcRoiDefiner(const LVL1::RecMuonRoI* p_roi)でまずRoIをglobal座標からlocal(セクター中心を横軸上に合わせた座標)に変換。
  2. seedDecord(StgcHits & roi_stgcHit, StgcHits& stgcHit)で1.のRoIに基づき, 指定した領域内のhitの情報を取ってくる。
  3. ひとまず、roi内にhitが3つ以下なら再構成が難しい(やろうと思えばできる)ため、その様なイベントはreturn。
  4. small sectorとlarge sectorのoverlapの領域があるため、一応それぞれで同じアルゴリズムを回す(overlap領域でない時無駄。かつ変なのを再構成する危険もあるがひとまずこうするしか無かった。)。
  5. classifyDataEachLayerはseed decodingされたデータをstirpとwireを分け、またlayerごと(配列)に必要なデータを入れる関数である。
  6. combineTwoHit(addoptedSegDuet, sortStrChamComp, 0);は上記の画像の操作1を行う関数である。
  7. combineFourHitは上記の画像の操作2を行う関数である。
  8. は上記の画像の操作3を行う関数である。outputはdouble candCluSegPars[3] = {999., 0., 0.};//chi, slope, intercept,int candCluHitIdSet[8] = {-1,-1,-1,-1,-1,-1,-1,-1};であり、前者は最終的に選ばれた各層のhitから最小二乗法で計算された3つのパラメータRMS, 傾き, 切片である。後者は選ばれた元のhitの番号(各層の何番目のhitデータか)である。
  9. inputParameterは8.で選び出したhitデータと求めたパラメータから部分飛跡に必要なパラメータを求め部分飛跡のコンテナに詰めることを行う関数。
  10. 9.の中でphiを計算するためにstgcWirePhiCalcが走る。基本的にはstripの再構成法をwireで行う関数。ただし、
unsigned int wireHitSize = 0; //wire phi fix start 111111111111111111111111111111111111111111111111111111111111111111 
for(unsigned int layLoop = 0; layLoop < 8; layLoop++){ 
  double layerZ = sortWirChamComp[layLoop].z; 
  for(int hitLoop = 0; hitLoop < sortWirChamComp[layLoop].r.size(); hitLoop++){ 
    double wireR = sortWirChamComp[layLoop].r.at(hitLoop); 
    double wirePhi = sortWirChamComp[layLoop].phi.at(hitLoop); 
    double stripX = stgcSegment->slope * fabs(layerZ) + stgcSegment->intercept; 
    sortWirChamComp[layLoop].phi.at(hitLoop) = atan(wireR * sin(wirePhi) / stripX); wireHitSize++; //
    c.p2("layerId, phi",layLoop ,atan(wireR * sin(wirePhi) / stripX)); 
  }//hit hitNum loop end 
}//wire layer loop end 
//wire phi fix end 111111111111111111111111111111111111111111111111111111111111111111 

でwireの値の補正を行なったり、multiscatteringの際にwireが原因で処理しきれないイベントが多くあることがわかったため、特別な処理をするなどしている。ひとまずの処置としてもっとも内側の層のwireを元に、次の層の最もphiが近いwireを選び出していき、最終的にRMSが最も小さい組み合わせを採用するとしている。(phi方向にはmuonはほとんど曲がらないため). ただpadが使えることに最終的になったので、stripによる飛跡再構成で選び出したpadによってwireのhitを用いる領域を絞る方法が可能となるだろう。また、その領域にwireがなければpadで求めたphiを採用すれば良いと考える。padの分解能においては リンクを参照してください。wireValueFix.png

Edit | Attach | Watch | Print version | History: r4 < r3 < r2 < r1 | Backlinks | Raw View | WYSIWYG | More topic actions
Topic revision: r4 - 2021-08-10 - TakuyaKumaoka
 
    • Cern Search Icon Cern Search
    • TWiki Search Icon TWiki Search
    • Google Search Icon Google Search

    Main All webs login

This site is powered by the TWiki collaboration platform Powered by PerlCopyright &© 2008-2024 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
or Ideas, requests, problems regarding TWiki? use Discourse or Send feedback