From f921d03a3980b380391981571f50ad8b3a986e82 Mon Sep 17 00:00:00 2001 From: "Ryan@WorkStation" Date: Wed, 3 Apr 2024 16:10:26 -0400 Subject: [PATCH] added SimTransfer2, this can simulate many arrays many reactions at once --- .gitignore | 2 + Armory/ClassDetGeo.h | 3 + Armory/ClassReactionConfig.h | 1 - Cleopatra/ClassTransfer.h | 67 +++- Cleopatra/Cleopatra | Bin 276616 -> 0 bytes Cleopatra/DWBARatio.C | 73 ---- Cleopatra/DWBA_compare.C | 16 - Cleopatra/ExtractXSec.h | 3 + Cleopatra/SimTransfer2.C | 755 +++++++++++++++++++++++++++++++++++ Cleopatra/makefile | 17 +- working/DWBA | 5 +- 11 files changed, 837 insertions(+), 105 deletions(-) delete mode 100755 Cleopatra/Cleopatra delete mode 100644 Cleopatra/DWBARatio.C delete mode 100644 Cleopatra/DWBA_compare.C create mode 100644 Cleopatra/SimTransfer2.C diff --git a/.gitignore b/.gitignore index bb7ae6f..de31fca 100644 --- a/.gitignore +++ b/.gitignore @@ -27,5 +27,7 @@ Cleopatra/PlotSimulation Cleopatra/PlotTGraphTObjArray Cleopatra/SimAlpha Cleopatra/SimTransfer +Cleopatra/SimTransfer2 +Cleopatra/Cleopatra __pycache__ \ No newline at end of file diff --git a/Armory/ClassDetGeo.h b/Armory/ClassDetGeo.h index 7b2b9e0..9f110d0 100644 --- a/Armory/ClassDetGeo.h +++ b/Armory/ClassDetGeo.h @@ -112,6 +112,7 @@ public: int BfieldSign ; /// sign of B-field double bore; /// bore , mm + unsigned short numEnableGeo; double zMin, zMax; /// total range span of all arrays bool LoadDetectorGeo(TString fileName, bool verbose = true); @@ -214,10 +215,12 @@ inline bool DetGeo::LoadDetectorGeo(TMacro * macro, bool verbose){ zMin = 99999; zMax = -99999; + numEnableGeo = 0; for( int i = 0; i < detFlag; i ++ ){ array[i].DeduceAbsolutePos(); if (array[i].enable ) { + numEnableGeo ++; double zmax = TMath::Max(array[i].zMin, array[i].zMax); double zmin = TMath::Min(array[i].zMin, array[i].zMax); if( zmax > zMax ) zMax = zmax; diff --git a/Armory/ClassReactionConfig.h b/Armory/ClassReactionConfig.h index 8856b4f..28a397c 100644 --- a/Armory/ClassReactionConfig.h +++ b/Armory/ClassReactionConfig.h @@ -70,7 +70,6 @@ struct ExcitedEnergies { } void Print() const { - printf("...................................\n"); printf("Energy[MeV] Rel.Xsec SF sigma\n"); for( size_t i = 0; i < ExList.size(); i++){ ExList[i].Print("\n"); diff --git a/Cleopatra/ClassTransfer.h b/Cleopatra/ClassTransfer.h index 2534779..29329da 100644 --- a/Cleopatra/ClassTransfer.h +++ b/Cleopatra/ClassTransfer.h @@ -9,6 +9,7 @@ #include "TLorentzVector.h" #include "TMath.h" +#include "TF1.h" //======================================================= //####################################################### @@ -22,6 +23,7 @@ class TransferReaction { public: TransferReaction(){Inititization();}; + TransferReaction(ReactionConfig config, unsigned short ID = 0); TransferReaction(std::string configFile, unsigned short ID = 0); TransferReaction(int beamA, int beamZ, int targetA, int targetZ, @@ -29,7 +31,7 @@ public: ~TransferReaction(); - void SetA(int A, int Z, double Ex); + void SetA(int A, int Z, double Ex = 0); void Seta(int A, int Z); void Setb(int A, int Z); void SetB(int A, int Z); @@ -46,9 +48,9 @@ public: TString GetReactionName() const; TString GetReactionName_Latex(); - ReactionConfig GetRectionConfig() { return config;} - Recoil GetRecoil() { return recoil;} - ExcitedEnergies GetExList() { return exList;} + ReactionConfig GetRectionConfig() { return config;} + Recoil GetRecoil() { return recoil;} + ExcitedEnergies * GetExList() { return &exList;} double GetMass_A() const {return mA + ExA;} double GetMass_a() const {return ma;} @@ -77,6 +79,22 @@ public: double GetReactionGamma() {return gamma;} double GetCMTotalEnergy() {return Etot;} double GetEZSlope(double BField) {return 299.792458 * recoil.lightZ * abs(BField) / TMath::TwoPi() * beta / 1000.;} // MeV/mm + + + void CreateExDistribution(); + int GetRandomExID(){ + if( exDistribution ) { + return exDistribution->GetRandom(); + } + return 0; + } + double GetRandomEx(){ + if( exDistribution ) { + int exID = exDistribution->GetRandom(); + return exList.ExList[exID].Ex; + } + return TMath::QuietNaN(); + } private: @@ -105,9 +123,34 @@ private: TString format(TString name); void Inititization(); + + TF1 * exDistribution; + + static double exDistFunc(Double_t *x, Double_t * par){ + return par[(int) x[0]]; + } }; +TransferReaction::TransferReaction(ReactionConfig config, unsigned short ID){ + Inititization(); + + SetA(config.beamA, config.beamZ); + Seta(config.targetA, config.targetZ); + + SetExA(config.beamEx); + + recoil = config.recoil[ID]; + exList = config.exList[ID]; + + Setb(recoil.lightA, recoil.lightZ); + SetB(recoil.heavyA, recoil.heavyZ); + SetIncidentEnergyAngle(config.beamEnergy, 0, 0); + + CalReactionConstant(); + +} + TransferReaction::TransferReaction(std::string configFile, unsigned short ID){ Inititization(); SetReactionFromFile(configFile, ID); @@ -133,6 +176,8 @@ void TransferReaction::Inititization(){ TA = 6; T = TA * config.beamA; + exDistribution = nullptr; + ExA = 0; ExB = 0; @@ -147,10 +192,10 @@ void TransferReaction::Inititization(){ } TransferReaction::~TransferReaction(){ - + delete exDistribution; } -void TransferReaction::SetA(int A, int Z, double Ex = 0){ +void TransferReaction::SetA(int A, int Z, double Ex){ Isotope temp (A, Z); mA = temp.Mass; config.beamA = A; @@ -463,5 +508,15 @@ std::pair TransferReaction::CalExThetaCM(double e, double z, dou return std::make_pair(Ex, thetaCM); } +void TransferReaction::CreateExDistribution(){ + + int numEx = exList.ExList.size(); + + exDistribution = new TF1("exDistribution", TransferReaction::exDistFunc, 0, numEx, numEx); + for(int q = 0; q < numEx; q++){ + exDistribution->SetParameter(q, exList.ExList[q].xsec*exList.ExList[q].SF); + } + +} #endif \ No newline at end of file diff --git a/Cleopatra/Cleopatra b/Cleopatra/Cleopatra deleted file mode 100755 index 7dea56f4c197b1f3adf9f5b4ae2066e8a9be6658..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 276616 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
v_=&{dw(yIH|H;DdBK{W(f0+1Y3;#Xw zk1YIc;-6Xgr^LUo@DXrOOL;oaX6yg)#D`h<-o!^(cnR?xEPNXAVhf)~e4K?ZCqCZ7 z+lf!G@IK-bE&M#<`&jt3#3vI+cc3mglTON^#KIpVUTyJtj`%bSe+#(S8@Er_<++Od z$G~n9e2*H9pGdrh_*KMZ4V_%a6F2iRX5Jv5U*$Z|7vbv+8xMfNY+ZhSj4KuWZq9hi zUv!I#ceG>XD-0{Fo&*0~)AIrbe?;NCIJRH>Da8juhqt`fv%tkWwCRt!9L%$~6rbH3 z+kds0crnvy>T8El_>K?C^QsFppM%M$j`#_eYh21pt}fy$*K52(!_HO2`_^cDPvWC6 zgb@BSuFmGuL;TJ2G>#?6>beoQT0hBq6Z|6&K613?zp6>|Ih!wB1{_`_XYWHbF6VH{ zbv5ZvyhG!)8dhgL`o+5pprn8EGEKh^=@Z1SzFFh5iC+ZVkIyejKfX)Tqqx-dK_2=^ zC~%2))I3dp5b37@_v0VQgP%k`zbBtV$mgOw^jInA%OC3=ees&T{PB^P;F9!DU!c>! z2jiVW{PwuU)jmHwJD2zaXKEbFvDI}y@q1WqhR<8XU+U2GSiY;SdQ8Mgyt|*GaWfBi zH}M|I`2nQ=Iq`#5YI?)}W#E40ESsK0t~QL*?eQY=nU8rwKl-Z`UhG^ehYI6T=hh;8 zIS>5-m%e;uip)$lu=JP8Dyl zv(0Hb{pxIW5XgCU!hcuFk6LdoFG8{VrE?x|p?|VP$J@?Gt|R`sI`kahkR$#&@u#i! z{%Icm!y#aP@qRlG-U(dN^BnbOl<{7jhyHHTub;2eZ{+h|#OE)~&Q~QS!iE2|B^p14 z{F{OMrL&dvYb^c`5bti+e9W}f0!*X}|C^h$({my5_g8D&#PvAwYi`tdnCX%4wTj%f zH|zQpKdD^%C|v*c{;kY|&jBv!nW{c+;5aaM)s-N=X`yC3jrcpncUYzI{fH08go;Ts zAr7*rs;z^xy~th=$|6}osF8_=-W-i+fUH=o{VGcua=UJiv$aO9n0C2)$R%>ktdi+ z`a7tvO#j|Xe1+97TtIvX<=N=HyNG{ssZQtNjAO^Wbb2nJePYr%9k@xGCpqfOB}xD0 zYc!v^eE0lIP{b9V`8(0QZacBGUi!I?W$qpst_ip&thWL(;jF z`mK@lhY;^&|5!`>eB#H`4l(`O_ksJR=bxmnJVvKSoh1ui-`dxoz5}?V$JQrj5I^yH z&Bw%bgQ2HBL3HZ+5plcRUMBwbwVDsqySffXhhlgVQo*^vB|UpmFBv&`p7=wzYCg(5 z#vA*ffeU?@Ie3$K|l!G7=7Z?e^)_%*cZ5_>dXSFy1gvV7t5^NS z-g4sKTBmV!Mg*QsLP1G7Z9B6WxF7!;NPi#4FQ%OTO8oOa%^zm7y2eiN=Q9Pk#B1xZ zF!5hd@0F9!6U4V$tocLjtLv>i{1>A_rM^}NG`)PoK(18^*T21g*8!LGOrqSHygx_$ zecE*vW0J_bIT+>|@IJb~~#z~s~b`3kv6W=bT@jZ!;g<$x_J0G~@>t`!8 z{VAmH%0qu*9{jvK_~YdNI`xLJuQm~{r2Lz-jf252=~-d5_f^299RA3Gpsb&eOTG^* z^y?dR`i-7^lKAb^1IsnJ^EvTirpNTN+d?pe&qmq_rhhLdzKQmUNvG_$7W!%Ik4(M) zlz0>Efd!2BMdFjVF13sJj)+M3yv6iG?Wk*S;G$Qr;5;c|XENy%w7X1t&H*mvb5B?o zjQWNaUb>C+hlX|e7(MVF@QH@0C;Wu;({9l8hX1r`ozB;-c62##L*rrN+?faeIr%)z z{x{5*t;TmI z{s!^q&enJX@of&(>3M+ddMDyDh#yNk{8ZxC5P#!z&8L+3Z-M*eci+P_f7`D99&kVU z^}r>+>zUt)f|dYvA#%x@-eKmI=>{W$6+6tB8oG<-OIF>n`($6AZ-mT+3l6VL4e^5RR|L+o?M0rEErLG?U7dbz8p_cQhnw|4Y(pS&c zz;2{}L(%ib6O8#UozAPjk#UmGo=ae;GNyhV;`d z`Ws2VeZS^^7Ww~<_-*u882KL;)akeF^OeB;2{<1$k|tMkx5ng@TGeE$1rT@L7O)HP(5=6?alcToH43KIX6^=0(u zYT^@?WY^aj#K&H&aU&;>0vEa3Q5I_A;`Sfs72s08Bdq#*gY*k0Xg>1IF}V&zLlZtf zU8VW->c>tEa4DZ+j)O*Oa_1uAe`bD-{dqs}`8Q|=<4ON9`TyVx&0oHWCfA|$n!oM$ zUP9dNN3J4n+n+B1_miLfU^q$ozo5M|N=NI=CBB66Y5Ik8iPzNW^h5os>n`9@KF6M} z)33gvi6@VczLf3D^gDkfKAZYKLO#Ri>h!$Ke(h1>4aEO;ypH!omj925-_P;>0i=I} z_(sc)-2;Y% z+x^SWfbR)!K@Zo1nSA|<^tN7ofw(>YI2RqRiHk*}f^&gOec9uYzY>4zW?jx5eCa3% zsvn;dfeW9F953%l`dZ{n&4_^=;Z{ZFETjc-2?`!#2-<(7ohX9v& z|4Dn**tg3RJrm&x;-r6<{e{WPOL^!ISm>YM8sHM|$+W8{bd!I)6~HCl#f*19@>xWDJ=>9q_jKZqU8vJz>g5IE|3yFfKIBslgG9>t z_8WCMKSBI^3g?X{cn!Fu$M(ZdU*wZb`r&xu_WbEZz(syOv&KP} z<%#!J^7-%cFox;*C-Em~4;XyX63wT?s>fBt|3G`y$iq6~JFd;<|1aWS(LRKkt*+=& z|MdSDxTJp$%gxwz9}~CdFGeoY^|HyTmodOiUKphcsuf=B>>wK`aLG4Z#2dOw zr$4D-XX0{=@5*t(w~1E)7rA|UtmbnH@jBA~gZ8$OE1cb;_}k-)tBAieQ^yN)PF>$8 zejDp?B=LU{|AOUj>^J$2qon6h8bnab>KXw7kbM1yenKN}2NR!gla9BQ^xq}^@b@%c zLHr)z!oO~X&ae9BIG+8A^et@HJCT0!(f;M%4_wmo&}Ewc-lTt>_+O|`rV#&%cq9F3 zM&6D*M)TR9{qn)2KZW?Wj?w%_5q}i8pFF%m`oEITSkiBItmgk9?NXR?>e?H)l*8Yy z(B<$6@fwBm#uGG?&yyTq?968=;*ZncW$N)~#6M-bGxV?J;Xf&))A2#6!FEhdk-gm>EbLFe8*tI9 zj-~hZ$U}c9aFL&JY^O$kP9lEokviT$k&gG*#9w9k7`gfj@ky4P?AxOGUqgA@gXu3N z-buY=@_sDwTf;hDn1$*(iMTx;zn*wC?OVfV92%hH>#rQg8T@48MWnAJ|F?+mOFQ4> ztFle=sU)9r(*Kw^4$V=>B;qdtH*pbC!GWk~)lTow^yr4vbu@54`d-r8^F(Llp?^-{ z#m+BMx}rYU(Kzpu&*>arn07a$-9O$(&(ZR;(bE4%=Al0|555+-HmcIXS6?!e9rFF@y+AY$^n-IrzqV7S2g3(-y{zbY;|V?>y**B;TIrvj zbAU_v+?Jv$CTkSia&`w!MmjY@jOir&91JGiT{fJNyBGqw@&|T3qKLKq4BVHzNc`E z`#6Ej<$caWxBTb{_mw@;{7nQp5CLe7ryZyMRmigekYi zKKV+~7dsapp$k&>XUa7;;m;=oT=<+cSJ&@8EdP^<+y1K?i6_q2^c9*tzQ>{YTt~e< zh4=&v9EATGwqH|ji;2%@(R>z={$}F$E!B7_@y)=;@V7Szq%?oqzqg3^sh0h47V+n3 zFC9T~G#fs6gQ*|HzrC7(~&kC<|6TIC;aH*hJR zGtbcF@FC;9OwnWAa+NOUH`$NelZVfc)tb*qY!`=-&$YytbKGR)?MvcEvjWvOVDQdG z{hH4;tjC?m=WgJB<@N;WKRi>XzmoJH6EA1Hrab4Kp!wT&S{w15>1Qx{_;KPF(@!;z z{C7D~^V!6DH~sru;>{d)??(DC@rCSvjUIRjxYT2bHI8_V^uOVHRFn6EPSWw-N4o;u zfw~qEx7R<++F$1PkqXKQ$(;!4ZTqd4_#E2p2k?d0h}-iWe4w!;1f;eJ>g-bf17%52A`cn{9Wp|1Bw5b z_>te!@`i3sU2hUUiT&VV#A~5gOx+Pu!G{nesrP5C_S+14DF@qb{0{LOSL=8y$m~JI zzu39%UR|EG+vx}Y$P@4IHJbmiv|~%jXDV@Ljph$^r>?t+PpZ}USmHk-Zu@f{CBA-+ zrbjbZ*BitS<2c3G+uNU})AJF_)0EXR;)k)_9ZWtK5ua@FzlHb#i*>v$q<@k4#T-Y} z5qG~M^-}CyUst4%*!KFt9Nnu*zo%a8p)fp@N%8Kac&Up?RM8?(FyL`O=?= zce0#Kdw0&z@t)qH(`op$0GD!$oubQ)-Idcz`lBuT;a)}WO`-n%L>~O_d3|L(k0hjtZh4TfY7}ev%Z8`r;@gb2Xn0c1w^D_CE`t2wF2KAvy&kew( z9JZw)%;i4Lg9`UB=Fexy$6jCe0rBy))8Hmm*MzfmdY)wYn|vjKi{6-Q^%wo5x5ra= z5x3WWK1n>v0sTq3SeRcV~r1P}AjU@d8z@?mL9;_1>-A+Gvp7hm}bHk_jJk7`6H?e@YJ+HKm_{Fqu zjb8mLaEZ6%1Rd|4I$6#(=WG7i1!okV!yLH@mqlV$?cy>{|*;cG?IS*wf^)8;Htmq*74Snem(Hf62k_K4_I|6Ai0@2)MJeg8 z0`6B1@8!V{zu2FCEpRD^V4F_A;rVeM`Vp6C`o&EDG^S^F;`Tb#V~MY!-8+i(HxZx7 z{x?AUx5OW^{J_pS9j|RClmeIbdqumhkOM|)MstYwaR0(|@?Swd`_P`BLi|Uh4=vGr zXf`>&CH?D6rzxM2m+JIf$b9WfK9$66`?HPsa~$98L;6RE+xx#pU8ebeX~};KxJd(9 zs9+80?f&#W;(KtsX5?`H%l-MB30&l1+jUwVSe(uQS7`mVk@{^sBkut&^tZ7eH0}CD z;C|_RpY+2o(EOw1Gx|!+r~L+v8$Jtw`|;_@gP%%18|Q02#(sO4_y+o2O}v4tbiDTZ zoJGJzuFmHC=50)8EAby4pyha%ou3_kv99q&x)$qMqHO?)){ z@TOfnMBLtg@g{Id=eqrMdiK(R^Qpqg)EhLlCQ^YZaVHcCw?sp!aEAjRnd)tCpVI2I zMG}#YXfhQ^gi_t1)~+SCD$19$@5GYewq_tgSKzqO5V%-j>h;~N8AvPb)+Nq+(cvMCJ;~&%WY-3km{6V-)nL{FI_n! zno2fC5;OW!5qYCx<^0A4P53pxeBpux&DBUjBoPaDH3Z5!7Dp1vXdKy$v|_O*NGe02 zo@A#$lvl- zq7@KU{k)>PC;cmC-kDz`)KzVfj?zR}rL78KDeeU?3wQTQSRv80%CCU>TN+W3ly>(B zR@xntpj?RLN9D>zC|)IPl`9()Q7w2CE9+zJXt5&IOTvj5^H{kum`KF=-i$;fyi!P} zu59X0dLGOSr@~!$uzY?XPy)V>b^=-jm zurl78>gkn)*zZ-fM^jB*@t%m1z1B!iD);rK(vXM4{PM-Ep+IGAyt_Ld3zUXtH7uA> z(+~>H4+R3%iQX7elL#mJYg(d8c56$6eTa8!-wF)&RzqNFC^t5d1szpGRjjwGE1c-a zK!E_-UUzRQEUl-ZdSRpwZ7iZhlkb!-k0j!m7aGbI#3G*CKt+A54ec*EGZF8$NULhP zq8+g;Zc`Vbf^xv76zaAcm7c}8F%fBxq*^=cbhFAl3zRh_rE(xW$!Ke`AyBbc)vb!I z8=5#n$~tKXlt)&#cJ(HseUVTngf2q?#RBcWFdS=(cQ>UXJ;8Q)YF4FAEMr-a#MEk<2h|>4oNb)BU$)6YLjzc`8V6v0nP}vplC=GcFylP&} z(uM`IW_p-c&8wfE1Jx{@zi6I^Dm$ftKzF!*Q8H2+?}{ga3+FaT+x zL?jZ+#N>HY*&pfZim&p0R^HOp>q)ZrtynzK9qy91MAM`5m0wV0weg;Qk)XzK0`*5w z-z8^|Fc~ znwpge_eE3a#lcUYCDE7{Qc)lskl7|^6`iLAn5KEfH;t zER3{86A)k(m*l1?+!tAdR;3i5%3rV#r7|y^RQfL<@zlj*sm25>hz>}bdNTl2RT~RN zqNwdnB(?qooB8o{>RFU3-%T@+g_r#OEiFACWB`cv1dRtS#=7UFjf0_sS1L2IiXp67%pbZg} zSPnWf-rAdlO%&_!@?Nki7D=EgTXd$(H2m6*{`7XQ6^2D(e_LQlnT^_HN7#pZGJufGfzV|mGoxKy8APQJ$iiODr3&vfN6E1SH%+N%56pd)uxdUO zZ0UkTv?Ho><;9m}aN#u*b+6v76kfe8tF(;9+Z0F0^sHJ4T~8w4$z5GAdWr#i4EFQ8j+f674QG zRk)b}ovq#ptZdBEBWTbybufaIdaS}tQ}hH)S%RC{@l>)Wp4Qkk3nOT^F{S8q{z`>i zS3DVkKGXhG9pv5vbHxh1EVx8Q)Z>x_Zy7qK-&`c^^ z)Lb*8Aqcv z2j*K`OsrIYs1L(d3@l5lLKxBrE0vFkWI&HoVxe$-V_SC{qHYR=noB|pVH-CGLP06u z%-AMS7K^M3h0)!&hQ)%824TR$WC%#fHlDU*FIY2nLZsRg>}ldT(a^lGT=p!weq~MISOZH4}k0 z6GKRK#0)Y}G(@9tCFmrTs5jLW3)S( zX-{)0_NeZuTAZVCh^}2)5MvBU`mBoc)>uvxtm9}9tjfu`9RiMFlrMWBx7atO%DUn0 ziK1#zf~E3Lc>f;&Bk$kz@_5E0psjGnft@cO23MZP>ax9BP4EFBXD^YVDkk zwox;qJ`|WzrrL(6D4*7e_Na#8IgL9|6`H5I5-2t3;AA9`s-LrPu6Palyp`gwDxg1u zbv+AozoS%-Puvjfc}As1ln9}DS;>r|0Y!ts3@S>bE}iHMu2fF`=IJADN?o8~qJ>r< zxo83NpbV+vBf&3ZLd7DT6MKiU2A2EMA^+O2-PNag~(CpS~^?8ZMp<=gr=%K8Bf7~ z6DVzpr0{!2|9rS*CFyv1>pB-LKU@1+PlG7pavu#+6;00UiicB$rlo*>Lxi~vF0$;# zl~18nsCHx;h9zS;^&$cUPgpQloCD=>EMa&VPhsRLhDTJ)&iSTl%9~fk=LE%B>1|NC zT8`3QK(;HC>EM^?wyws$ZjX+bGF8`dDP%p{P?AnT8w+S5e5QH|bX_Xn+QKOpL07qJ zZc^4tt9YBuYnH7h5mr+H~-fSV*dIofaarM#Z3$g43S*c8kR-t+$o^ zlHytqdsjT3&|O@pbV})z3N3ghJ71@KO{V91>~_EYDVnKHmR_)@D=2<5PetwKIM8GnDiy1AP85J+L>Nb@s zEmzjIu8x65ZUO2g%o=K)l^NB^m`>%Pj2Q@&&TeY5bWChj)-b~9j$rPhFOsQcEu0x? zN|%`Gz(ZZ8D`&sV-27kFS*z4Zjr@bPnjS)#hC^e#x;5MrZpF}7>zOKQW79OYzTrc} z=Rw~ag)8=t8ue9+SyRGF%`s>)WfrJTrrM(MP_jSPipk=xNK0?KuX&EKT^H^%<|~!KX6uy|3r=xF{?%c|BOqsER_w-)Mf%NF}Y#zrMwqW|iGD ze1l5KSlV;htprLj&Y2BcINpI-el232syq%KKxw!&j>U(PQf|lcIWK|4AQB2_F^SxGy)lj0r>a>-l%)N>xqouZUt=(q8iP>{)nUwq+uCG; zG2RYO2C^+96(tW9&2aY563-DSK+GebxlcBV3@vHH%{|^`ETSToa=K-E#=<$gvc|^X zI!AF1_ASKVJgdcR1;;>%$1A27fvI@L0@bto!z;0FW@W@OtmmUa=hu-a5LlFI4Okae zR&*=>rPl`{8mOR}$VBRy1t~yrVc;_x@}^7)nFLcy2m@0aqRLZI8;;uf&1AQrbVC9} zeA1mqdP$w1!bNcv5((Ug^^LIIWfG$V9+{Bn^V~@gadu+;Nhk?#VSQ7rXzWnoHk096^)4!dl< zx8<$X#E?liW|$fatC?VnRLTIoYp|(Kbs10>$lx%y-$dTay|b7h z$V*Q3iZ`43N-H}wv6yRDv$VVqXlYQn+vyjx%1<;wNtQ`~u# zIvkv3RY|ohAcWa<482pBH$-=-r{|0rg_(Eh$doOCszcYRdIxQcqdkOd~o~>0)F~H%A78X`fP; z?>r*j5j}@ODMMB;dl%=Vpf*)8t2y9AE(UZJAz1+s%xxoqsf}InlyKWuLxK}m{G~u&iV8z2IcR9?V*-1NIEil z$yTV)AjXLt?@9)v-dw68x0^&E)hYF+X4M8VYK)2SwIcAJr&N&-K2r%Yh=ZA{#QF=C zhM#Ae9UPQolWdj9cmZS@1pmaYhs;$eH$wuuD3sGI981-=sI?X>TVF%2kP?7Dzp%A=2l?sAnk_O#(T2BH z4;GMbX$#&KkTa|^c1^}77$~cSs!f}K1w;yuKpW>_OdBxLRf_((D~$PLnJcQFBlGPG z+tO3%o`Uw%A3hTs$e+iTxkc+F>>|;EYb6x+59dXC;;YhqN$FH48I5IbwF4cafk9S& zwDz_5Rs+^o=-I?T35LmBRI5kIU}}x5Oc4&Ga;#Shsk^jlOLv$a6JaWn*|1pF4Hd## zO4`g08`o=2HZwglMp0Pof`#_*$0ouZTtiVM9TV0R##RlorXt51mgS=Ildqhv82yc` zZ;~QWtDG{u)c_rkr4vNNv)n;Vsd6>xjP4MgC2eLx!y13QRfVS3eGHY--~#An6sk-i zU?`Hk%m>;|%G*0c@XK>yCVi$LN(0Mf`E?`yH^h6>S_2wDMUSE@L{iv?hdQv?Mvtdt zaV2t-BQCjhM*AJEl>Gh%)7o>rP`UjdY6k8Z{1Y$ufIT4WFpT(Z^`JJni5pBTCz?7k z4Ara2WI1Kdda^As>`|Fpwax`zLUevUeSt^mT7KJ{vP}=+y;3#kOP2FDhigSEHX|fd z$zaN|kqZd&SCR3JZi#sNczWBky$P{2Q4}JfMomub=}mU3-b^~83O$a^S)sgfvsM*q!x6^l3eU(&A;@=(k5Rgr+Ft+u){WKPcxy;lS!-{49}=gQmV96#>n!j zPd}~X)6)l|$}E%74Rof|z3EEOR~M2mVX^fC-U_T^#)xIG3}AI>ISg+&OMO~gM)KI% zW#%ciK0&DA8krTro;R#PGBdIH8#NZ3gw?!H}5Hw0wgH2B-7tfoRJQec$SKhUNsiZ8pDVn zS7J$SYa(u{->aYfa$H!iPt9ozn1YIRzSvYSebfqmUA{A9&4*;dSi@BdBWjRz8@UYbRy~ez)fU%}DYbcz;#sv)2wfUH5 z5CoM^H@rs(WnLwdc5=2&_yVR&(Ehc5I;#Q$TeyeZNgkg_SvDbrw)*rXXY3P!xchFiQEvKtc8H2wxeXhQnUh@{11buLTTWM@f3O9_NT4WX1*P>gdk zhBDISBfng242Hg*DlEp&n5)MBEN1mXfQJ!C3@=62d>*z-{S=A#5i730~E1I$E zF>*pY+BP%Vg^BNABbQS}qtSLD-+En*s1`ty{Zw_ek)pyTQE5aByQ-$G&G^wJ29I@-E5Dp?(J8TXe~!RON2I3SbM}7d8E$Em`C38l zKqYEsETU$HBJcaK0J9dcD<6oxgdK-z^un{#z0~V8aL~Yzxxm!mYHR{*O)YJTw926Y z&5_lGZm0;9&%?%4c-OMFDIn`;E;)-Q2HpVUzt}==49JvzZmpTs>t3_WYN46esV#iw zZvz2OsT9zvxHukCVXLO}z&>qf1q!lDL@qsA$j|ij8QP&YPdjlT{djAuJR6mIOyKKb z^(4kBaJ3;x`5HVl=w$RXBX^*xuDCUbp>I>jJ7?L`pGh$!$?8r`f?&LgESHIM%qxEW zrW@<9b&5MoYq4J_^OPX4P z@GYn~)A`^^KD~Edl}&o@y!i9wB!q$X7sE{pKVP<%^{tG8Qprlsw0hN=)0>9ur8}~% z9Mf*r7WYz+VJ~@0G_@+4jF=IC`OT9?<}Jw^-sBXFdZWq3Y0e2 z;GB>s)?Z>33Zw{P*BEWYp7B1Vxd*AF9MuC2k~NE@txsh-#sMo1J?z-bc5bsT$paw!Wjzc)s$_%@ol8>r)fZ z)XPIzela!Iy(lKfw1gH$a8ewc)U~xZQ9%yP5FKK5+f{NJBo+rseM3a(m$$NQrYCKa zn%1#hO1Z*dY;xZTJ&

|?zg{`fGtg5*I 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 Ry+7g*UGP(_7pz<7{{g=Ls&D`R diff --git a/Cleopatra/DWBARatio.C b/Cleopatra/DWBARatio.C deleted file mode 100644 index 33bc495..0000000 --- a/Cleopatra/DWBARatio.C +++ /dev/null @@ -1,73 +0,0 @@ - - -TGraph * DWBARatio(int id1, int id2, TString rootFile="DWBA.root", bool isPlot = true){ - - TGraph * gR = NULL; - - TFile * file = new TFile(rootFile, "READ"); - if( file != NULL ){ - printf("----- Opening %s\n", rootFile.Data()); - }else{ - printf("----- Opening %s .... Fail.\n", rootFile.Data()); - return gR; - } - - ///get the TGraph of the distribution. - TObjArray * gList = (TObjArray *) file->Get("qList"); - int size = gList->GetLast()+1; - printf("----- found %d d.s.c\n", size); - - if( id1 > size || id2 > size ) { - printf(" id1 > %d || id2 > %d \n", size, size); - return gR; - } - - TGraph * g1 = (TGraph *) gList->At(id1); - TGraph * g2 = (TGraph *) gList->At(id2); - - double g1MaxY = g1->GetHistogram()->GetMaximum(); - double g2MaxY = g2->GetHistogram()->GetMaximum(); - - g2->SetLineColor(2); - - - TCanvas * cDWBA = NULL ; - - if( isPlot ){ - cDWBA= new TCanvas("cDWBA", "DWBA Ratio", 1000, 500); - cDWBA->Divide(2,1); - - cDWBA->cd(1); - cDWBA->cd(1)->SetLogy(); - - if( g1MaxY > g2MaxY ) { - g1->Draw(); - g2->Draw("same"); - }else{ - g2->Draw(); - g1->Draw("same"); - } - - TLegend * legend = new TLegend( 0.1, 0.9, 0.9, 1.0); - legend->AddEntry(g1, g1->GetName()); - legend->AddEntry(g2, g2->GetName()); - - legend->Draw(); - - cDWBA->cd(2); - - } - gR = new TGraph(); - double x, y1, y2; - for( int i = 0 ; i < g1->GetN(); i++){ - g1->GetPoint(i, x, y1); - g2->GetPoint(i, x, y2); - gR->SetPoint(i, x, y1/y2); - } - - if( isPlot) gR->Draw(); - - return gR; - -} - diff --git a/Cleopatra/DWBA_compare.C b/Cleopatra/DWBA_compare.C deleted file mode 100644 index 662d21a..0000000 --- a/Cleopatra/DWBA_compare.C +++ /dev/null @@ -1,16 +0,0 @@ -#include "DWBARatio.C" - -void DWBA_compare(){ - - TGraph * w[12]; - for( int i = 0 ; i < 12; i++){ - - w[i] = DWBARatio(i, i+12, "DWBA.root", false); - w[i]->SetLineColor(i+1); - - i == 0 ? w[i]->Draw("Al") : w[i]->Draw("same"); - - } - - -} diff --git a/Cleopatra/ExtractXSec.h b/Cleopatra/ExtractXSec.h index ae85cf9..f73a487 100644 --- a/Cleopatra/ExtractXSec.h +++ b/Cleopatra/ExtractXSec.h @@ -326,9 +326,11 @@ int ExtractXSec (string readFile, int indexForElastic=1) { //================================== Make TMacro for ExList TMacro ExList; + TMacro ReactList; ExList.AddLine("#---Ex relative_xsec SF sigma_in_MeV"); for( int i = 0; i < numCal ; i++){ ExList.AddLine(Form("%9.5f %9.5f 1.0 0.000", Ex[i], partialXsec[i])); + ReactList.AddLine(reaction[i].c_str()); } //================================== Save in ROOT @@ -369,6 +371,7 @@ int ExtractXSec (string readFile, int indexForElastic=1) { fList->Write("thetaCM_TF1", 1); ExList.Write("ExList"); + ReactList.Write("ReactionList"); fileOut->Write(); fileOut->Close(); diff --git a/Cleopatra/SimTransfer2.C b/Cleopatra/SimTransfer2.C new file mode 100644 index 0000000..7f00720 --- /dev/null +++ b/Cleopatra/SimTransfer2.C @@ -0,0 +1,755 @@ +#include "TROOT.h" +#include "TBenchmark.h" +#include "TLorentzVector.h" +#include "TMath.h" +#include "TFile.h" +#include "TF1.h" +#include "TTree.h" +#include "TRandom.h" +#include "TGraph.h" +#include "TMacro.h" +#include +#include +#include +#include + +#include "../Armory/ClassDetGeo.h" +#include "ClassTargetScattering.h" +#include "ClassDecay.h" +#include "ClassTransfer.h" +#include "ClassHelios.h" + + + +void PrintEZPlotPara(TransferReaction tran, HELIOS helios){ + + printf("==================================== E-Z plot slope\n"); + double betaRect = tran.GetReactionBeta() ; + double gamma = tran.GetReactionGamma(); + double mb = tran.GetMass_b(); + double pCM = tran.GetMomentumbCM(); + double q = TMath::Sqrt(mb*mb + pCM*pCM); ///energy of light recoil in center of mass + double slope = tran.GetEZSlope(helios.GetBField()); /// MeV/mm + printf(" e-z slope : %f MeV/mm\n", slope); + // double intercept = q/gamma - mb; // MeV + // printf(" e-z intercept (ground state) : %f MeV\n", intercept); + +} + +void Transfer( + std::string basicConfig = "reactionConfig.txt", + std::string detGeoFile = "detectorGeo.txt", + TString ptolemyRoot = "DWBA.root", + TString saveFileName = "transfer.root"){ + + //*############################################# Set Reaction + + // std::vector kbCM; /// momentum of b in CM frame + // TF1 * exDistribution = nullptr; + + DetGeo detGeoConfig; + ReactionConfig reactionConfig; + + detGeoConfig.LoadDetectorGeo(detGeoFile, false); + reactionConfig.LoadReactionConfig(basicConfig); + + const unsigned short numDetGeo = detGeoConfig.array.size(); + const unsigned short numReact = reactionConfig.recoil.size(); + + if( numDetGeo != numReact ){ + printf("\e[31m !!!!!! number of array is not equal to number of reaction.!!! \e[0m\n"); + printf("Abort\n"); + return; + } + + unsigned short numTransfer = 0; + + for( int i = 0; i < std::min(numDetGeo, numReact); i++){ + if( detGeoConfig.array[i].enable ) numTransfer ++; + } + + TransferReaction * transfer = new TransferReaction[numTransfer]; + Decay * decay = new Decay[numTransfer]; + HELIOS * helios = new HELIOS[numTransfer]; + + int count = 0; + for( unsigned short i = 0 ; i < numDetGeo; i++){ + if( detGeoConfig.array[i].enable ){ + transfer[count].SetReactionFromFile(basicConfig, i); + if(transfer[count].GetRecoil().isDecay) { + decay[count].SetMotherDaugther(transfer[count].GetRecoil()); + } + helios[count].SetDetectorGeometry(detGeoFile, i); + + count ++; + } + } + + printf("----- loading reaction setting from %s. \n", basicConfig.c_str()); + printf("----- loading geometry setting from %s. \n", detGeoFile.c_str()); + + printf("\e[32m#################################### Reaction & HELIOS configuration\e[0m\n"); + + //*############################################# Load DWBAroot for thetaCM distribution + TFile * distFile = new TFile(ptolemyRoot, "read"); + TObjArray * distList = nullptr; + TMacro * dwbaExList = nullptr; + TMacro * dwbaReactList = nullptr; + + if( distFile->IsOpen() ) { + printf("\e[32m#################################### Load DWBA input : %s \e[0m\n", ptolemyRoot.Data()); + printf("--------- Found DWBA thetaCM distributions. Use the ExList from DWBA.\n"); + + distList = (TObjArray *) distFile->FindObjectAny("thetaCM_TF1"); // the function List + dwbaExList = (TMacro *) distFile->FindObjectAny("ExList"); + dwbaReactList = (TMacro *) distFile->FindObjectAny("ReactionList"); + + int numEx = dwbaExList->GetListOfLines()->GetSize() - 1 ; + + for( int i = 0; i < numTransfer; i++){ transfer[i].GetExList()->Clear(); } + + for( int i = 1; i <= numEx ; i++){ + //Check DWBA reaction is same as transfer setting + std::string reactionName = dwbaReactList->GetListOfLines()->At(i-1)->GetName(); + + for( int j = 0; j < numTransfer; j++){ + if( reactionName.find( transfer[j].GetReactionName().Data() ) != std::string::npos) { + std::string temp = dwbaExList->GetListOfLines()->At(i)->GetName(); + if( temp[0] == '/' ) continue; + std::vector tempStr = AnalysisLib::SplitStr(temp, " "); + transfer[j].GetExList()->Add( atof(tempStr[0].c_str()), atof(tempStr[1].c_str()), 1.0, 0.00); + } + } + } + + }else{ + printf("------- no DWBA input. Use the ExList from %s\n", basicConfig.c_str()); + } + + std::vector listOfTransfer(numTransfer, false); + + for( int i = 0; i < numTransfer; i++){ + if( transfer[i].GetExList()->ExList.size() > 0 ){ + + listOfTransfer[i] = true; + + transfer[i].PrintReaction(false); + transfer[i].GetExList()->Print(); + helios[i].PrintGeometry(); + transfer[i].CreateExDistribution(); + // PrintEZPlotPara(transfer[i], helios[i]); + }else{ + printf(" Reaction : %s has no excited energy. Skipped. \n", transfer[i].GetReactionName().Data()); + } + } + + //*############################################# build tree + printf("\e[32m#################################### building Tree in %s\e[0m\n", saveFileName.Data()); + TFile * saveFile = new TFile(saveFileName, "recreate"); + TTree * tree = new TTree("tree", "tree"); + + TMacro config(basicConfig.c_str()); + TMacro detGeoTxt(detGeoFile.c_str()); + config.SetName("ReactionConfig"); + config.Write("reactionConfig"); + detGeoTxt.Write("detGeo"); + + if( distList != NULL ) distList->Write("DWBA", 1); + if( dwbaExList != NULL ) dwbaExList->Write("DWBA_ExList", 1); + + + TMacro hitMeaning; + hitMeaning.AddLine("======================= meaning of Hit\n"); + for( int code = -15 ; code <= 1; code ++ ){ + hitMeaning.AddLine( Form( "%4d = %s", code, helios[0].AcceptanceCodeToMsg(code).Data() )); + } + hitMeaning.AddLine(" other = unknown\n"); + hitMeaning.AddLine("===========================================\n"); + hitMeaning.Write("hitMeaning"); + + int hit; /// the output of Helios.CalHit + tree->Branch("hit", &hit, "hit/I"); + + int rID; /// reaction ID + tree->Branch("rID", &rID, "reactionID/I"); + + double thetab, phib, Tb; + double thetaB, phiB, TB; + tree->Branch("thetab", &thetab, "thetab/D"); + tree->Branch("phib", &phib, "phib/D"); + tree->Branch("Tb", &Tb, "Tb/D"); + tree->Branch("thetaB", &thetaB, "thetaB/D"); + tree->Branch("phiB", &phiB, "phiB/D"); + tree->Branch("TB", &TB, "TB/D"); + + double thetaCM; + tree->Branch("thetaCM", &thetaCM, "thetaCM/D"); + + double e, z, detX, t, z0, tB; + tree->Branch("e", &e, "energy_light/D"); + tree->Branch("x", &detX, "detector_x/D"); + tree->Branch("z", &z, "array_hit_z/D"); + tree->Branch("z0", &z0, "z-cycle/D"); + tree->Branch("t", &t, "cycle_time_light/D"); + tree->Branch("tB", &tB, "recoil_hit_time/D"); /// hit time for recoil on the recoil detector + + int loop, detID, detRowID; + tree->Branch("detID", &detID, "detID/I"); + tree->Branch("detRowID", &detRowID, "detRowID/I"); + tree->Branch("loop", &loop, "loop/I"); + + double rho, rhoB; ///orbit radius + tree->Branch("rho", &rho, "orbit_radius_light/D"); + tree->Branch("rhoB", &rhoB, "orbit_radius_heavy/D"); + + int ExID; + double Ex; + tree->Branch("ExID", &ExID, "ExID/I"); + tree->Branch("Ex", &Ex, "Ex/D"); + + double ExCal, thetaCMCal; + tree->Branch("ExCal", &ExCal, "ExCal/D"); + tree->Branch("thetaCMCal", &thetaCMCal, "thetaCMCal/D"); + + // double TbLoss; /// energy loss of particle-b from target scattering + // double KEAnew; ///beam energy after target scattering + // double depth; /// reaction depth; + // double Ecm; + // if( reactConfig.isTargetScattering ){ + // tree->Branch("depth", &depth, "depth/D"); + // tree->Branch("TbLoss", &TbLoss, "TbLoss/D"); + // tree->Branch("KEAnew", &KEAnew, "KEAnew/D"); + // tree->Branch("Ecm", &Ecm, "Ecm/D"); + // } + + double decayTheta; /// the change of thetaB due to decay + double xRecoil_d, yRecoil_d, rhoRecoil_d, Td; + + bool isAnyDecay = false; + for( int i = 0; i < numTransfer; i++ ){ + if( !listOfTransfer[i] ) continue; + isAnyDecay |= transfer[i].GetRecoil().isDecay; + } + + if( isAnyDecay ) { + tree->Branch("decayTheta", &decayTheta, "decayTheta/D"); + tree->Branch("xRecoil_d", &xRecoil_d, "xRecoil_d/D"); + tree->Branch("yRecoil_d", &yRecoil_d, "yRecoil_d/D"); + tree->Branch("rhoRecoil_d", &rhoRecoil_d, "rhoRecoil_d/D"); + tree->Branch("Td", &Td, "Td/D"); + } + + double xArray, yArray, rhoArray; ///x, y, rho positon of particle-b on PSD + tree->Branch("xArray", &xArray, "xArray/D"); + tree->Branch("yArray", &yArray, "yArray/D"); + tree->Branch("rhoArray", &rhoArray, "rhoArray/D"); + + double xRecoil, yRecoil, rhoRecoil; /// x, y, rho position of particle-B on recoil-detector + tree->Branch("xRecoil", &xRecoil, "xRecoil/D"); + tree->Branch("yRecoil", &yRecoil, "yRecoil/D"); + tree->Branch("rhoRecoil", &rhoRecoil, "rhoRecoil/D"); + + + ///in case need ELUM + double xElum1, yElum1, rhoElum1; + bool isAnyElum1 = false; + for( int i = 0; i < numTransfer; i++ ){ + if( !listOfTransfer[i] ) continue; + isAnyElum1 |= (helios[i].GetAuxGeometry().elumPos1 != 0); + } + if( isAnyElum1 ) { + tree->Branch("xElum1", &xElum1, "xElum1/D"); + tree->Branch("yElum1", &yElum1, "yElum1/D"); + tree->Branch("rhoElum1", &rhoElum1, "rhoElum1/D"); + } + + double xElum2, yElum2, rhoElum2; + bool isAnyElum2 = false; + for( int i = 0; i < numTransfer; i++ ){ + if( !listOfTransfer[i] ) continue; + isAnyElum2 |= (helios[i].GetAuxGeometry().elumPos2 != 0); + } + if( isAnyElum2 ) { + tree->Branch("xElum2", &xElum2, "xElum2/D"); + tree->Branch("yElum2", &yElum2, "yElum2/D"); + tree->Branch("rhoElum2", &rhoElum2, "rhoElum2/D"); + } + + ///in case need other recoil detector. + double xRecoil1, yRecoil1, rhoRecoil1; + bool isAnyRecoil1 = false; + for( int i = 0; i < numTransfer; i++ ){ + if( !listOfTransfer[i] ) continue; + isAnyRecoil1 |= (helios[i].GetAuxGeometry().detPos1 != 0); + } + if( isAnyRecoil1 != 0 ){ + tree->Branch("xRecoil1", &xRecoil1, "xRecoil1/D"); + tree->Branch("yRecoil1", &yRecoil1, "yRecoil1/D"); + tree->Branch("rhoRecoil1", &rhoRecoil1, "rhoRecoil1/D"); + } + + double xRecoil2, yRecoil2, rhoRecoil2; + bool isAnyRecoil2 = false; + for( int i = 0; i < numTransfer; i++ ){ + if( !listOfTransfer[i] ) continue; + isAnyRecoil2 |= (helios[i].GetAuxGeometry().detPos2 != 0); + } + if( isAnyRecoil2 != 0 ){ + tree->Branch("xRecoil2", &xRecoil2, "xRecoil2/D"); + tree->Branch("yRecoil2", &yRecoil2, "yRecoil2/D"); + tree->Branch("rhoRecoil2", &rhoRecoil2, "rhoRecoil2/D"); + } + + //======= function for e-z plot for ideal case + printf("++++ generate functions\n"); + TObjArray * gList = new TObjArray(); + gList->SetName("Constant thetaCM = 0 lines"); + const int gxSize = numTransfer; + TF1 ** gx = new TF1*[gxSize]; + TString name; + + for( int i = 0; i < gxSize; i++){ + double mb = transfer[i].GetMass_b(); + double betaRect = transfer[i].GetReactionBeta(); + double gamma = transfer[i].GetReactionGamma(); + double slope = transfer[i].GetEZSlope(helios[0].GetBField()); /// MeV/mm + + name.Form("g%d", i); + gx[i] = new TF1(name, "([0]*TMath::Sqrt([1]+[2]*x*x)+[5]*x)/([3]) - [4]", -1000, 1000); + double thetacm = i * TMath::DegToRad(); + double gS2 = TMath::Power(TMath::Sin(thetacm)*gamma,2); + gx[i]->SetParameter(0, TMath::Cos(thetacm)); + gx[i]->SetParameter(1, mb*mb*(1-gS2)); + gx[i]->SetParameter(2, TMath::Power(slope/betaRect,2)); + gx[i]->SetParameter(3, 1-gS2); + gx[i]->SetParameter(4, mb); + gx[i]->SetParameter(5, -gS2*slope); + gx[i]->SetNpx(1000); + gList->Add(gx[i]); + printf("/"); + if( i > 1 && i % 40 == 0 ) printf("\n"); + } + gList->Write("EZ_thetaCM", TObject::kSingleKey); + printf(" %d constant thetaCM functions\n", gxSize); + + for( int i = 0; i < gxSize; i++){ + delete gx[i]; + } + delete [] gx; + delete gList; + + //--- cal modified f + int numEx = 0; + for( int i = 0; i < numTransfer; i++){ + if( !listOfTransfer[i] ) continue; + numEx += transfer[i].GetExList()->ExList.size(); + } + + TObjArray * fxList = new TObjArray(); + TGraph ** fx = new TGraph*[numEx]; + std::vector px, py; + int countfx = 0; + + count = 0; + for( int i = 0; i < numTransfer; i++ ){ + if( !listOfTransfer[i] ) continue; + double mb = transfer[i].GetMass_b(); + double betaRect = transfer[i].GetReactionBeta(); + double gamma = transfer[i].GetReactionGamma(); + double slope = transfer[i].GetEZSlope(helios[0].GetBField()); /// MeV/mm + + for( size_t j = 0 ; j < transfer[i].GetExList()->ExList.size(); j++){ + double Ex = transfer[i].GetExList()->ExList[j].Ex; + double kbCM = transfer[i].CalkCM(Ex); + double a = helios[i].GetDetRadius(); + double q = TMath::Sqrt(mb*mb + kbCM * kbCM ); + px.clear(); + py.clear(); + countfx = 0; + for(int i = 0; i < 100; i++){ + double thetacm = TMath::Pi()/TMath::Log(100) * (TMath::Log(100) - TMath::Log(100-i)) ;//using log scale, for more point in small angle. + double temp = TMath::TwoPi() * slope / betaRect / kbCM * a / TMath::Sin(thetacm); + double pxTemp = betaRect /slope * (gamma * betaRect * q - gamma * kbCM * TMath::Cos(thetacm)) * (1 - TMath::ASin(temp)/TMath::TwoPi()) ; + double pyTemp = gamma * q - mb - gamma * betaRect * kbCM * TMath::Cos(thetacm); + if( TMath::IsNaN(pxTemp) || TMath::IsNaN(pyTemp) ) continue; + px.push_back(pxTemp); + py.push_back(pyTemp); + countfx ++; + } + + fx[count] = new TGraph(countfx, &px[0], &py[0]); + name.Form("fx%d_%ld", i, j); + fx[count]->SetName(name); + fx[count]->SetLineColor(4); + fxList->Add(fx[count]); + printf(","); + count ++; + } + } + fxList->Write("EZCurve", TObject::kSingleKey); + printf(" %d (%d) e-z finite-size detector functions\n", numEx, count); + + for( int i = 0 ; i < numEx; i++) delete fx[i]; + delete [] fx; + delete fxList; + + printf("============================== dasjdlasdj\n"); + + // //--- cal modified thetaCM vs z + // TObjArray * txList = new TObjArray(); + // TGraph ** tx = new TGraph*[numEx]; + // for( int j = 0 ; j < numEx; j++){ + // double a = helios.GetDetRadius(); + // double q = TMath::Sqrt(mb*mb + kbCM[j] * kbCM[j] ); + // px.clear(); + // py.clear(); + // countfx = 0; + // for(int i = 0; i < 100; i++){ + // double thetacm = (i + 8.) * TMath::DegToRad(); + // double temp = TMath::TwoPi() * slope / betaRect / kbCM[j] * a / TMath::Sin(thetacm); + // double pxTemp = betaRect /slope * (gamma * betaRect * q - gamma * kbCM[j] * TMath::Cos(thetacm)) * (1 - TMath::ASin(temp)/TMath::TwoPi()); + // double pyTemp = thetacm * TMath::RadToDeg(); + // if( TMath::IsNaN(pxTemp) || TMath::IsNaN(pyTemp) ) continue; + // px.push_back(pxTemp); + // py.push_back(pyTemp); + // countfx ++; + // } + + // tx[j] = new TGraph(countfx, &px[0], &py[0]); + // name.Form("tx%d", j); + // tx[j]->SetName(name); + // tx[j]->SetLineColor(4); + // txList->Add(tx[j]); + // printf("*"); + // } + // txList->Write("thetaCM_Z", TObject::kSingleKey); + // printf(" %d thetaCM-z for finite-size detector functions\n", numEx); + + //========timer + TBenchmark clock; + bool shown ; + clock.Reset(); + clock.Start("timer"); + shown = false; + + //change the number of event into human easy-to-read form + int numEvent = reactionConfig.numEvents; + int digitLen = TMath::Floor(TMath::Log10(numEvent)); + TString numEventStr; + if( 3 <= digitLen && digitLen < 6 ){ + numEventStr.Form("%5.1f kilo", numEvent/1000.); + }else if ( 6<= digitLen && digitLen < 9 ){ + numEventStr.Form("%6.2f million", numEvent/1e6); + }else if ( 9<= digitLen ){ + numEventStr.Form("%6.2f billion", numEvent/1e9); + } + printf("\e[32m#################################### generating %s events \e[0m\n", numEventStr.Data()); + + double KEA = reactionConfig.beamEnergy; + double theta = reactionConfig.beamTheta; + double phi = 0.0; + + TF1 * angDist = nullptr; + + //*====================================================== calculate event + count = 0; + for( int i = 0; i < numEvent; i++){ + bool redoFlag = true; + if( !reactionConfig.isRedo ) redoFlag = false; + do{ + + rID = gRandom->Integer( numTransfer ); + if( !listOfTransfer[rID] ) continue; + + //==== Set Ex of B + ExID = transfer[rID].GetRandomExID(); + double sigma = transfer[rID].GetExList()->ExList[ExID].sigma; + Ex = transfer[rID].GetExList()->ExList[ExID].Ex + gRandom->Gaus(0, sigma); + + transfer[rID].SetExB(Ex); + + //==== Set incident beam + if( reactionConfig.beamEnergySigma != 0 ){ + KEA = gRandom->Gaus(reactionConfig.beamEnergy, reactionConfig.beamEnergySigma); + } + if( reactionConfig.beamThetaSigma != 0 ){ + theta = gRandom->Gaus(reactionConfig.beamTheta, reactionConfig.beamThetaSigma); + } + + //==== for taregt scattering + transfer[rID].SetIncidentEnergyAngle(KEA, theta, 0.); + transfer[rID].CalReactionConstant(); + + // TLorentzVector PA = transfer.GetPA(); + //depth = 0; + // if( isTargetScattering ){ + // //==== Target scattering, only energy loss + // depth = targetThickness * gRandom->Rndm(); + // msA.SetTarget(density, depth); + // TLorentzVector PAnew = msA.Scattering(PA); + // KEAnew = msA.GetKE()/reactConfig.beamA; + // transfer.SetIncidentEnergyAngle(KEAnew, theta, phi); + // transfer.CalReactionConstant(); + // Ecm = transfer.GetCMTotalKE(); + // } + + //==== Calculate thetaCM, phiCM + if( distFile->IsOpen()){ + angDist = (TF1 *) distList->At(ExID); + thetaCM = angDist->GetRandom() / 180. * TMath::Pi(); + }else{ + thetaCM = TMath::ACos(2 * gRandom->Rndm() - 1) ; + } + + double phiCM = TMath::TwoPi() * gRandom->Rndm(); + + //==== Calculate reaction + transfer[rID].Event(thetaCM, phiCM); + TLorentzVector Pb = transfer[rID].GetPb(); + TLorentzVector PB = transfer[rID].GetPB(); + + // //==== Calculate energy loss of scattered and recoil in target + // if( isTargetScattering ){ + // if( Pb.Theta() < TMath::PiOver2() ){ + // msb.SetTarget(density, targetThickness - depth); + // }else{ + // msb.SetTarget(density, depth); + // } + // Pb = msb.Scattering(Pb); + // TbLoss = msb.GetKELoss(); + // msB.SetTarget(density, targetThickness - depth); + // PB = msB.Scattering(PB); + // }else{ + // TbLoss = 0; + // } + + //======= Decay of particle-B + int decayID = 0; + if( transfer[rID].GetRecoil().isDecay){ + + decayID = decay[rID].CalDecay(PB, Ex, 0, phiCM + TMath::Pi()/2); // decay to ground state + if( decayID == 1 ){ + PB = decay[rID].GetDaugther_D(); + //decayTheta = decay.GetAngleChange(); + decayTheta = decay[rID].GetThetaCM(); + PB.SetUniqueID(transfer[rID].GetRecoil().decayZ); + }else{ + decayTheta = TMath::QuietNaN(); + } + } + + //################################### tree branches + //===== reaction + thetab = Pb.Theta() * TMath::RadToDeg(); + thetaB = PB.Theta() * TMath::RadToDeg(); + + Tb = Pb.E() - Pb.M(); + TB = PB.E() - PB.M(); + + phib = Pb.Phi() * TMath::RadToDeg(); + phiB = PB.Phi() * TMath::RadToDeg(); + + //==== Helios + + // printf(" thetaCM : %f, Tb : %f\n", thetaCM * TMath::RadToDeg(), Pb.M()); + + if( Tb > 0 || TB > 0 ){ + + helios[rID].CalArrayHit(Pb); + helios[rID].CalRecoilHit(PB); + hit = 2; + while( hit > 1 ){ hit = helios[rID].CheckDetAcceptance(); } /// while hit > 1, goto next loop; + + trajectory orb_b = helios[rID].GetTrajectory_b(); + trajectory orb_B = helios[rID].GetTrajectory_B(); + + e = helios[rID].GetEnergy() + gRandom->Gaus(0, helios[rID].GetArrayGeometry().eSigma ); + + double ranX = gRandom->Gaus(0, helios[rID].GetArrayGeometry().zSigma); + z = orb_b.z + ranX; + detX = helios[rID].GetDetX() + ranX; + + z0 = orb_b.z0; + t = orb_b.t; + loop = orb_b.loop; + detID = orb_b.detID; + detRowID = orb_b.detRowID; + rho = orb_b.rho; + rhoArray = orb_b.R; + + xArray = orb_b.x; + yArray = orb_b.y; + + //ELUM + double elumPos1 = helios[rID].GetAuxGeometry().elumPos1; + if( elumPos1 != 0 ){ + xElum1 = helios[rID].GetXPos(elumPos1); + yElum1 = helios[rID].GetYPos(elumPos1); + rhoElum1 = helios[rID].GetR (elumPos1); + } + double elumPos2 = helios[rID].GetAuxGeometry().elumPos2; + if( elumPos2 ){ + xElum2 = helios[rID].GetXPos(elumPos2); + yElum2 = helios[rID].GetYPos(elumPos2); + rhoElum2 = helios[rID].GetR (elumPos2); + } + + //Recoil + rhoRecoil = orb_B.R; + tB = orb_B.t; + xRecoil = orb_B.x; + yRecoil = orb_B.y; + rhoB = orb_B.rho; + + //other recoil detectors + double recoilPos1 = helios[rID].GetAuxGeometry().detPos1; + if ( recoilPos1 != 0 ){ + xRecoil1 = helios[rID].GetRecoilXPos(recoilPos1); + yRecoil1 = helios[rID].GetRecoilYPos(recoilPos1); + rhoRecoil1 = helios[rID].GetRecoilR (recoilPos1); + } + double recoilPos2 = helios[rID].GetAuxGeometry().detPos2; + if ( recoilPos2 != 0 ){ + xRecoil2 = helios[rID].GetRecoilXPos(recoilPos2); + yRecoil2 = helios[rID].GetRecoilYPos(recoilPos2); + rhoRecoil2 = helios[rID].GetRecoilR (recoilPos2); + } + + std::pair ExThetaCM = transfer[rID].CalExThetaCM(e, z, helios[rID].GetBField(), helios[rID].GetDetRadius()); + ExCal = ExThetaCM.first; + thetaCMCal = ExThetaCM.second; + + //change thetaCM into deg + thetaCM = thetaCM * TMath::RadToDeg(); + + //if decay, get the light decay particle on the recoil; + if( transfer[rID].GetRecoil().isDecay ){ + if( decayID == 1 ){ + TLorentzVector Pd = decay[rID].GetDaugther_d(); + + Td = Pd.E() - Pd.M(); + + helios[rID].CalRecoilHit(Pd); + + trajectory orb_d = helios[rID].GetTrajectory_B(); + rhoRecoil_d = orb_d.R; + xRecoil_d = orb_d.x; + yRecoil_d = orb_d.y; + + }else{ + rhoRecoil_d = TMath::QuietNaN(); + xRecoil_d = TMath::QuietNaN(); + yRecoil_d = TMath::QuietNaN(); + } + } + + }else{ + hit = -404; + } + + if( hit == 1) count ++; + + if( reactionConfig.isRedo ){ + if( hit == 1) { + redoFlag = false; + }else{ + redoFlag = true; + //printf("%d, %2d, thetaCM : %f, theta : %f, z0: %f \n", i, hit, thetaCM * TMath::RadToDeg(), thetab, helios.GetZ0()); + } + }else{ + redoFlag = false; + } + + }while( redoFlag ); + tree->Fill(); + + //#################################################################### Timer + clock.Stop("timer"); + Double_t time = clock.GetRealTime("timer"); + clock.Start("timer"); + + if ( !shown ) { + if (fmod(time, 10) < 1 ){ + printf( "%10d[%2d%%]| %8.2f sec | expect: %5.1f min \n", i, TMath::Nint((i+1)*100./numEvent), time , numEvent*time/(i+1)/60); + shown = 1; + } + }else{ + if (fmod(time, 10) > 9 ){ + shown = 0; + } + } + + } + + saveFile->Write(); + saveFile->Close(); + + distFile->Close(); + delete angDist; + + printf("=============== done. saved as %s. count(hit==1) : %d\n", saveFileName.Data(), count); + //gROOT->ProcessLine(".q"); + + delete [] transfer; + delete [] decay; + delete [] helios; + + distFile->Close(); + delete distFile; + delete distList; + delete dwbaExList; + delete dwbaReactList; + + return; + +} + + +int main (int argc, char *argv[]) { + + printf("=================================================================\n"); + printf("========== Simulate Transfer reaction in HELIOS ==========\n"); + printf("=================================================================\n"); + + if(argc == 2 || argc > 5) { + printf("Usage: ./Transfer [1] [2] [3] [4]\n"); + printf(" default file name \n"); + printf(" [1] reactionConfig.txt (input) reaction Setting \n"); + printf(" [2] detectorGeo.txt (input) detector Setting \n"); + printf(" [3] DWBA.root (input) thetaCM distribution from DWBA \n"); + printf(" [4] transfer.root (output) rootFile name for output \n"); + + printf("------------------------------------------------------\n"); + return 0 ; + } + + std::string basicConfig = "reactionConfig.txt"; + std::string detGeoFile = "detectorGeo.txt"; + TString ptolemyRoot = "DWBA.root"; // when no file, use isotropic distribution of thetaCM + TString saveFileName = "transfer.root"; + bool isPlot = false; + + if( argc >= 2) basicConfig = argv[1]; + if( argc >= 3) detGeoFile = argv[2]; + if( argc >= 4) ptolemyRoot = argv[3]; + if( argc >= 5) saveFileName = argv[4]; + + Transfer( basicConfig, detGeoFile, ptolemyRoot, saveFileName); + + //run Armory/Check_Simulation + // if( isPlot ){ + // std::ifstream file_in; + // file_in.open("../Cleopatra/Check_Simulation.C", std::ios::in); + // if( file_in){ + // printf("---- running ../Cleopatra/Check_Simulation.C on %s \n", saveFileName.Data()); + // TString cmd; + // cmd.Form("root -l '../Cleopatra/Check_Simulation.C(\"%s\")'", saveFileName.Data()); + + // system(cmd.Data()); + // }else{ + // printf("cannot find ../Cleopatra/Check_Simulation.C \n"); + // } + // } + +} + diff --git a/Cleopatra/makefile b/Cleopatra/makefile index f74a9cb..876a29f 100644 --- a/Cleopatra/makefile +++ b/Cleopatra/makefile @@ -1,13 +1,13 @@ CC=g++ -ALL = Isotope InFileCreator ExtractXSec ExtractXSecFromText PlotTGraphTObjArray Cleopatra FindThetaCM SimTransfer SimAlpha +ALL = Isotope InFileCreator ExtractXSec ExtractXSecFromText PlotTGraphTObjArray Cleopatra FindThetaCM SimTransfer SimTransfer2 SimAlpha all: $(ALL) -Isotope: ../Cleopatra/ClassIsotope.h ../Cleopatra/Isotope.C +Isotope: ClassIsotope.h Isotope.C $(CC) Isotope.C -o Isotope -InFileCreator: InFileCreator.C InFileCreator.h ../Cleopatra/ClassIsotope.h ../Cleopatra/constant.h potentials.h +InFileCreator: InFileCreator.C InFileCreator.h ClassIsotope.h constant.h potentials.h $(CC) InFileCreator.C -o InFileCreator `root-config --cflags --glibs` ExtractXSec: ExtractXSec.C ExtractXSec.h @@ -19,16 +19,19 @@ ExtractXSecFromText: ExtractXSecFromText.C ExtractXSec.h PlotTGraphTObjArray: PlotTGraphTObjArray.C PlotTGraphTObjArray.h $(CC) PlotTGraphTObjArray.C -o PlotTGraphTObjArray `root-config --cflags --glibs` -Cleopatra: Cleopatra.C +Cleopatra: Cleopatra.C InFileCreator.h ExtractXSec.h $(CC) Cleopatra.C -o Cleopatra `root-config --cflags --glibs` -FindThetaCM: FindThetaCM.C FindThetaCM.h ../Cleopatra/ClassTransfer.h ../Cleopatra/ClassHelios.h ../Cleopatra/ClassIsotope.h ../Cleopatra/constant.h +FindThetaCM: FindThetaCM.C FindThetaCM.h ClassTransfer.h ClassHelios.h ClassIsotope.h constant.h $(CC) FindThetaCM.C -o FindThetaCM `root-config --cflags --glibs` -SimTransfer: SimTransfer.C ../Cleopatra/ClassTransfer.h ../Cleopatra/ClassHelios.h ../Cleopatra/ClassIsotope.h ../Cleopatra/constant.h +SimTransfer: SimTransfer.C ClassTransfer.h ClassHelios.h ClassIsotope.h constant.h $(CC) SimTransfer.C -o SimTransfer `root-config --cflags --glibs` -SimAlpha: SimAlpha.C ../Cleopatra/ClassHelios.h +SimTransfer2: SimTransfer2.C ClassTransfer.h ClassHelios.h ClassIsotope.h constant.h + $(CC) SimTransfer2.C -o SimTransfer2 `root-config --cflags --glibs` + +SimAlpha: SimAlpha.C ClassHelios.h $(CC) SimAlpha.C -o SimAlpha `root-config --cflags --glibs` clean: diff --git a/working/DWBA b/working/DWBA index c7a5a31..1051877 100644 --- a/working/DWBA +++ b/working/DWBA @@ -45,5 +45,6 @@ #36Ar(d,a)34Cl 0 4L=2 3+ 0.000 8MeV/u As # (d,a) reaction -32Si(d,p)33Si 0 1s1/2 1/2+ 0.000 10MeV/u Vl -32Si(d,p)33Si 0 0d5/2 5/2+ 0.197 10MeV/u Vl +32Si(d,p)33Si 0 1s1/2 1/2+ 0.000 10MeV/u AK +32Si(d,p)33Si 0 0d5/2 5/2+ 0.197 10MeV/u AK +32Si(d,3He)31Al 0 0d5/2 5/2+ 0.000 10MeV/u Ax