Skip to content

Commit

Permalink
adding axion-top plot
Browse files Browse the repository at this point in the history
  • Loading branch information
cajohare committed Sep 29, 2023
1 parent 9c247c1 commit 0478ae5
Show file tree
Hide file tree
Showing 34 changed files with 1,023 additions and 10 deletions.
4 changes: 2 additions & 2 deletions AxionNeutron.ipynb

Large diffs are not rendered by default.

8 changes: 4 additions & 4 deletions AxionProton.ipynb

Large diffs are not rendered by default.

104 changes: 104 additions & 0 deletions AxionTop_ColliderBounds.ipynb

Large diffs are not rendered by default.

95 changes: 93 additions & 2 deletions PlotFuncs.py
Original file line number Diff line number Diff line change
Expand Up @@ -2285,14 +2285,20 @@ def nEDM(ax,col=[0.5, 0.0, 0.13],fs=20,projection=True):
plt.text(0.5e-19,3e-4,r'{\bf nEDM}',fontsize=fs,color='w',ha='left',va='top',clip_on=True,path_effects=line_background(1.5,'k'))
return

def ChangE(ax,col='#5e2220',fs=21,rotation=42):
def ChangE(ax,col='#5e2220',fs=21,rotation=46):
y2 = ax.get_ylim()[1]
zo = 0.31
dat = loadtxt("limit_data/AxionNeutron/ChangE.txt")
dat[:,1] *= 2*AxionNeutron.m_n
plt.plot(dat[:,0],dat[:,1],'-',color='k',alpha=1,zorder=zo,lw=3)
plt.fill_between(dat[:,0],dat[:,1],y2=y2,edgecolor=None,facecolor=col,zorder=zo)
plt.text(0.5e-13,5.0e-8,r'{\bf ChangE}',rotation=rotation,fontsize=fs,color='w',ha='left',va='top',clip_on=True,path_effects=line_background(1.5,'k'))

dat = loadtxt("limit_data/AxionNeutron/ChangE-NMR.txt")
dat[:,1] *= 2*AxionNeutron.m_n
plt.plot(dat[:,0],dat[:,1],'-',color='k',alpha=1,zorder=zo*0.99,lw=3)
plt.fill_between(dat[:,0],dat[:,1],y2=y2,edgecolor=None,facecolor=col,zorder=zo*0.99)

plt.text(0.7e-13,6.0e-8,r'{\bf ChangE}',rotation=rotation,fontsize=fs,color='w',ha='left',va='top',clip_on=True,path_effects=line_background(1.5,'k'))
return

def NASDUCK(ax,col=[0.77, 0.1, 0.13],fs=24,projection=True):
Expand Down Expand Up @@ -2580,6 +2586,11 @@ def ChangE(ax,col='#5e2220',fs=23,rotation=0):
dat[:,1] *= 2*AxionProton.m_p
plt.plot(dat[:,0],dat[:,1],'-',color='k',alpha=1,zorder=zo,lw=3)
plt.fill_between(dat[:,0],dat[:,1],y2=y2,edgecolor=None,facecolor=col,zorder=zo)

dat = loadtxt("limit_data/AxionProton/ChangE-NMR.txt")
dat[:,1] *= 2*AxionProton.m_p
plt.plot(dat[:,0],dat[:,1],'-',color='k',alpha=1,zorder=zo*0.99,lw=3)
plt.fill_between(dat[:,0],dat[:,1],y2=y2,edgecolor=None,facecolor=col,zorder=zo*0.99)
plt.text(0.7e-15,2.0e-6,r'{\bf ChangE}',rotation=rotation,fontsize=fs,color='w',ha='left',va='top',clip_on=True,path_effects=line_background(1.5,'k'))
return

Expand Down Expand Up @@ -2925,6 +2936,86 @@ def PolarisationHaloscope(ax,text_pos=[4.3e-7,0.8e-10],col='red',alpha=0.4,zorde
#==============================================================================#



class AxionTop():

def ATLAS_direct(ax,text_shift=[1,1],col='#1ec9e3',text_col='w',fs=20,zorder=2,text_on=True,lw=1.5,rotation=0,ha='center',edgealpha=0.5,path_effects=line_background(1.5,'k')):
dat = loadtxt("limit_data/AxionTop/ATLAS_direct.txt")
plt.fill_between(dat[:,0]*1e-9,dat[:,1],y2=1e0,edgecolor=None,alpha=edgealpha,facecolor=col,zorder=zorder)
plt.plot(dat[:,0]*1e-9,dat[:,1],lw=lw,color='#531ee3',zorder=zorder)

if text_on:
plt.text(text_shift[0]*1e1,text_shift[1]*8e-4,r'{\bf ATLAS}',fontsize=fs,color=text_col,rotation=rotation,ha='center',va='top',clip_on=True,path_effects=path_effects)
return

def ATLAS_indirect(ax,text_shift=[1,1],col='#ed61e1',text_col='w',fs=20,zorder=1,text_on=True,lw=1.5,rotation=0,ha='center',edgealpha=0.75,path_effects=line_background(1.5,'k')):
dat = loadtxt("limit_data/AxionTop/ATLAS_ttbar_nonresonant.txt")
plt.fill_between(dat[:,0]*1e-9,dat[:,1],y2=1e0,edgecolor=None,facecolor=col,alpha=edgealpha,zorder=zorder)
plt.plot(dat[:,0]*1e-9,dat[:,1],lw=3.0,color='#ad49a5',zorder=zorder)
dat = loadtxt("limit_data/AxionTop/ATLAS_ttbar_resonant.txt")
plt.fill_between(dat[:,0]*1e-9,dat[:,1],y2=1e0,edgecolor=None,facecolor=col,alpha=edgealpha,zorder=zorder)
plt.plot(dat[:,0]*1e-9,dat[:,1],lw=4.0,color='#ad49a5',zorder=zorder,linestyle='dotted')

if text_on:
plt.text(text_shift[0]*1e1,text_shift[1]*8e-4,r'{\bf ATLAS}',fontsize=fs,color=text_col,rotation=rotation,ha='center',va='top',clip_on=True,path_effects=path_effects)
return

def CMS_indirect(ax,text_shift=[1,1],col='#dfe622',text_col='w',fs=20,zorder=2.1,text_on=True,lw=1.5,rotation=0,ha='center',edgealpha=0.9,path_effects=line_background(1.5,'k')):
dat = loadtxt("limit_data/AxionTop/CMS_ttbar_nonresonant.txt")
plt.fill_between(dat[:,0]*1e-9,dat[:,1],y2=1e0,edgecolor=None,facecolor=col,alpha=edgealpha,zorder=zorder)
plt.plot(dat[:,0]*1e-9,dat[:,1],lw=lw,color='#95991c',zorder=zorder)

if text_on:
plt.text(text_shift[0]*1e1,text_shift[1]*8e-4,r'{\bf CMS}',fontsize=fs,color=text_col,rotation=rotation,ha='center',va='top',clip_on=True,path_effects=path_effects)
return

def K_decay(ax,text_shift=[1,1],col='#55d649',text_col='w',fs=20,zorder=1,text_on=True,lw=1.5,rotation=0,ha='center',edgealpha=1,path_effects=line_background(1.5,'k')):
dat = loadtxt("limit_data/AxionTop/kaon_decays.txt")
plt.fill_between(dat[:,0],dat[:,1],y2=1e0,edgecolor=None,facecolor=col,alpha=edgealpha,zorder=zorder)
plt.plot(dat[:,0],dat[:,1],lw=lw,color='#37872f',zorder=zorder)

if text_on:
plt.text(text_shift[0]*1e1,text_shift[1]*8e-4,r'{\bf Kaon decay}',fontsize=fs,color=text_col,rotation=rotation,ha='center',va='top',clip_on=True,path_effects=path_effects)
return

def B_decay(ax,text_shift=[1,1],col='#2e5c29',text_col='w',fs=20,zorder=0.5,text_on=True,lw=1.5,rotation=0,ha='center',edgealpha=1,path_effects=line_background(1.5,'k')):
dat = loadtxt("limit_data/AxionTop/b_decays.txt")
plt.fill_between(dat[:,0],dat[:,1],y2=1e0,edgecolor=None,facecolor=col,alpha=edgealpha,zorder=zorder)
plt.plot(dat[:,0],dat[:,1],lw=lw,color='#2e5c29',zorder=zorder)

if text_on:
plt.text(text_shift[0]*1e1,text_shift[1]*8e-4,r'{\bf B decay}',fontsize=fs,color=text_col,rotation=rotation,ha='center',va='top',clip_on=True,path_effects=path_effects)
return

def indirect_zz(ax,text_shift=[1,1],col='#f52116',text_col='w',fs=20,zorder=3,text_on=True,lw=1.5,rotation=0,ha='center',edgealpha=1,path_effects=line_background(1.5,'k')):
dat = loadtxt("limit_data/AxionTop/indirect_diboson_zz.txt")
plt.fill_between(dat[:,0]*1e-9,dat[:,1],y2=1e0,edgecolor=None,facecolor=col,alpha=edgealpha,zorder=zorder)
plt.plot(dat[:,0]*1e-9,dat[:,1],lw=lw,color='#8f110a',zorder=zorder)
dat = loadtxt("limit_data/AxionTop/indirect_diboson_zz_2.txt")
plt.plot(dat[:,0]*1e-9,dat[:,1],lw=2,color='#8f110a',zorder=zorder,linestyle='dashed')

if text_on:
plt.text(text_shift[0]*1e1,text_shift[1]*8e-4,r'{\bf indirect diboson ZZ}',fontsize=fs,color=text_col,rotation=rotation,ha='center',va='top',clip_on=True,path_effects=path_effects)
return

def indirect_gamgam(ax,text_shift=[1,1],col='#e67207',text_col='w',fs=20,zorder=2.5,text_on=True,lw=1.5,rotation=0,ha='center',edgealpha=1,path_effects=line_background(1.5,'k')):
dat = loadtxt("limit_data/AxionTop/indirect_diboson_gamgam.txt")
plt.fill_between(dat[:,0]*1e-9,dat[:,1],y2=1e0,edgecolor=None,facecolor=col,alpha=edgealpha,zorder=zorder)
plt.plot(dat[:,0]*1e-9,dat[:,1],lw=lw,color='#b55c09',zorder=zorder)

if text_on:
plt.text(text_shift[0]*1e1,text_shift[1]*8e-4,r'{\bf indirect diboson ZZ}',fontsize=fs,color=text_col,rotation=rotation,ha='center',va='top',clip_on=True,path_effects=path_effects)
return

def indirect_zgam(ax,text_shift=[1,1],col='#e84c0e',text_col='w',fs=20,zorder=2.7,text_on=True,lw=1.5,rotation=0,ha='center',edgealpha=1,path_effects=line_background(1.5,'k')):
dat = loadtxt("limit_data/AxionTop/indirect_diboson_zgam.txt")
plt.fill_between(dat[:,0]*1e-9,dat[:,1],y2=1e0,edgecolor=None,facecolor=col,alpha=edgealpha,zorder=zorder)
plt.plot(dat[:,0]*1e-9,dat[:,1],lw=lw,color='#b55c09',zorder=zorder)

if text_on:
plt.text(text_shift[0]*1e1,text_shift[1]*8e-4,r'{\bf indirect diboson ZZ}',fontsize=fs,color=text_col,rotation=rotation,ha='center',va='top',clip_on=True,path_effects=path_effects)
return

class DarkPhoton():
def FigSetup(xlab=r'Dark photon mass [eV]',ylab='Kinetic mixing',\
chi_min = 1.0e-18,chi_max = 1.0e0,\
Expand Down
14 changes: 13 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,18 @@ Plot with projections ([pdf](https://github.com/cajohare/AxionLimits/raw/master/

---

[<img align="right" width="300" src="plots/plots_png/AxionTop_Collider.png">](docs/at.md)

# [**Axion-top coupling**](docs/at.md)
[**Data files**](docs/at.md)\
Plot ([pdf](https://github.com/cajohare/AxionLimits/raw/master/plots/AxionTop_Collider.pdf), [png](https://github.com/cajohare/AxionLimits/raw/master/plots/plots_png/AxionTop_Collider.png))\
&nbsp; \
&nbsp; \
&nbsp; \
&nbsp;

---

[<img align="right" width="300" src="plots/plots_png/MonopoleDipole_ElectronNucleon.png">](docs/cp.md)

# [**Axion CP-violating couplings**](docs/cp.md)
Expand Down Expand Up @@ -206,4 +218,4 @@ If you use something here, you can give credit by citing the zenodo DOI attached


# Acknowledgements
**Thank you to**: Masha Baryakhtar, Max Berbig, Itay Bloch, Aryaman Bhutani, Andrea Caputo, Raphael Cervantes, Raymond Co, Chris Dessert, Akash Dixit, Babette Döbrich, Claudio Gatti, Sumita Ghosh, Maurizio Giannotti, Alexander Gramolin, Josh Foster, Fred Hiskins, Taizhou Hong, Sebastian Hoof, Derek Jackson-Kimball, Stefan Knirck, Kazunori Kohri, Chunlong Li, Hai-Jun Li, Jesse Liu, Jia Liu, Jack Manley, Laura Manenti, Giacomo Marocco, David Marsh, Javier Miguel Hernandez, Alex Millar, Viraf Mehta, Dion Noordhuis, Nadav Outmezguine, Giovanni Pierobon, Pablo Quílez, Javier Redondo, Alessio Rettaroli, Andreas Ringwald, Nick Rodd, Giuseppe Ruoso, Gray Rybka, Isaac Sarnoff, Jan Schuette-Engel, Ivo Schulthess, Philip Sørensen, Konstantin Springmann, Haowen Su, Fuminobu Takahashi, Mike Tobar, Caner Ünal, Edoardo Vitagliano, Arne Wickenbrock, Sam Witte, Huangyu Xiao, Byeongsu Yang and Wen Yin for comments, corrections and suggestions that have greatly helped improve these plots.
**Thank you to**: Masha Baryakhtar, Max Berbig, Itay Bloch, Aryaman Bhutani, Andrea Caputo, Raphael Cervantes, Raymond Co, Chris Dessert, Akash Dixit, Babette Döbrich, Claudio Gatti, Sumita Ghosh, Maurizio Giannotti, Alexander Gramolin, Josh Foster, Fred Hiskins, Taizhou Hong, Sebastian Hoof, Derek Jackson-Kimball, Stefan Knirck, Kazunori Kohri, Chunlong Li, Hai-Jun Li, Jesse Liu, Jia Liu, Jack Manley, Laura Manenti, Giacomo Marocco, David Marsh, Javier Miguel Hernandez, Alex Millar, Viraf Mehta, Dion Noordhuis, Nadav Outmezguine, Giovanni Pierobon, Pablo Quílez, Javier Redondo, Alessio Rettaroli, Andreas Ringwald, Nick Rodd, Giuseppe Ruoso, Gray Rybka, Isaac Sarnoff, Jan Schuette-Engel, Ivo Schulthess, Philip Sørensen, Konstantin Springmann, Haowen Su, Fuminobu Takahashi, Mike Tobar, Maria Ubiali, Caner Ünal, Edoardo Vitagliano, Arne Wickenbrock, Sam Witte, Huangyu Xiao, Byeongsu Yang and Wen Yin for comments, corrections and suggestions that have greatly helped improve these plots.
1 change: 1 addition & 0 deletions docs/an.md
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@ Note: CASPEr and nEDM limits account for stochastic correction reported in [1905
* CASPEr-ZULF-Sidechain: [limit](https://github.com/cajohare/AxionLimits/raw/master/limit_data/AxionNeutron/CASPEr_ZULF.txt), [projection](https://github.com/cajohare/AxionLimits/raw/master/limit_data/AxionNeutron/Projections/CASPEr_ZULF.txt), [reference](https://arxiv.org/abs/1902.04644)
* Electrostatic storage ring: [projection](https://github.com/cajohare/AxionLimits/raw/master/limit_data/AxionNeutron/Projections/ElectrostaticStorageRing.txt), [reference](https://arxiv.org/abs/2211.08439)
* ChangE: [limit](https://github.com/cajohare/AxionLimits/raw/master/limit_data/AxionNeutron/ChangE.txt), [reference](https://arxiv.org/abs/2306.08039)
* ChangE-NMR: [limit](https://github.com/cajohare/AxionLimits/raw/master/limit_data/AxionNeutron/ChangE-NMR.txt), [reference](https://arxiv.org/abs/2309.16600)
* Hefei Xe129 spin-based amplifiers: [limit](https://github.com/cajohare/AxionLimits/raw/master/limit_data/AxionNeutron/Hefei.txt), [reference](https://arxiv.org/abs/2102.01448)
* JEDI: [limit](https://github.com/cajohare/AxionLimits/raw/master/limit_data/AxionNeutron/JEDI.txt), [reference](https://arxiv.org/abs/2208.07293)
* nEDM (ultracold neutrons and mercury): [limit](https://github.com/cajohare/AxionLimits/raw/master/limit_data/AxionNeutron/nEDM.txt), [reference](https://arxiv.org/abs/1708.06367)
Expand Down
1 change: 1 addition & 0 deletions docs/app.md
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@ Note: CASPEr and nEDM limits account for stochastic correction reported in [1905
* CASPEr-ZULF-Comagnetometer: [limit](https://github.com/cajohare/AxionLimits/raw/master/limit_data/AxionProton/CASPEr_Comagnetometer.txt), [reference](https://arxiv.org/abs/1901.10843)
* CASPEr-ZULF-Sidechain: [limit](https://github.com/cajohare/AxionLimits/raw/master/limit_data/AxionProton/CASPEr_ZULF.txt), [projection](https://github.com/cajohare/AxionLimits/raw/master/limit_data/AxionProton/Projections/CASPEr_ZULF.txt), [reference](https://arxiv.org/abs/1902.04644)
* ChangE: [limit](https://github.com/cajohare/AxionLimits/raw/master/limit_data/AxionProton/ChangE.txt), [reference](https://arxiv.org/abs/2306.08039)
* ChangE-NMR: [limit](https://github.com/cajohare/AxionLimits/raw/master/limit_data/AxionProton/ChangE-NMR.txt), [reference](https://arxiv.org/abs/2309.16600)
* MnCO3: [projection](https://github.com/cajohare/AxionLimits/raw/master/limit_data/AxionProton/Projections/MnCO3.txt), [reference](https://arxiv.org/abs/2307.08577)
* NASDUCK: [limit](https://github.com/cajohare/AxionLimits/raw/master/limit_data/AxionProton/NASDUCK.txt), [reference](https://arxiv.org/abs/2105.04603)
* NASDUCK (SERF): [limit](https://github.com/cajohare/AxionLimits/raw/master/limit_data/AxionProton/NASDUCK-SERF.txt), [reference](https://arxiv.org/abs/2209.13588)
Expand Down
24 changes: 24 additions & 0 deletions docs/at.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
# Axion-top coupling

## Notebook and data courtesy of Maria Ubiali, taken from [Fesser et al.](https://arxiv.org/abs/2303.17634)

---
[<img align="right" height="250" src="../plots/plots_png/AxionTop_Collider.png">](https://github.com/cajohare/AxionLimits/raw/master/plots/plots_png/AxionTop_Collider.png)
## Basic plot
### [View Notebook (.ipynb)](https://github.com/cajohare/AxionLimits/blob/master/AxionTop_ColliderBounds.ipynb)
### [Download (.pdf)](https://github.com/cajohare/AxionLimits/raw/master/plots/AxionTop_Collider.pdf)
### [Download (.png)](https://github.com/cajohare/AxionLimits/raw/master/plots/plots_png/AxionTop_Collider.png)
### &nbsp;
---

## Data files and references
* ATLAS_direct: [limit](https://github.com/cajohare/AxionLimits/raw/master/limit_data/AxionTop/ATLAS_direct.txt)
* ATLAS_ttbar_nonresonant: [limit](https://github.com/cajohare/AxionLimits/raw/master/limit_data/AxionTop/ATLAS_ttbar_nonresonant.txt)
* ATLAS_ttbar_resonant: [limit](https://github.com/cajohare/AxionLimits/raw/master/limit_data/AxionTop/ATLAS_ttbar_resonant.txt)
* CMS_ttbar_nonresonant: [limit](https://github.com/cajohare/AxionLimits/raw/master/limit_data/AxionTop/CMS_ttbar_nonresonant.txt)
* CMS_ttbar_resonant: [limit](https://github.com/cajohare/AxionLimits/raw/master/limit_data/AxionTop/CMS_ttbar_resonant.txt)
* indirect_diboson_gamgam: [limit](https://github.com/cajohare/AxionLimits/raw/master/limit_data/AxionTop/indirect_diboson_gamgam.txt)
* indirect_diboson_zgam: [limit](https://github.com/cajohare/AxionLimits/raw/master/limit_data/AxionTop/indirect_diboson_zgam.txt)
* indirect_diboson_zz_2: [limit](https://github.com/cajohare/AxionLimits/raw/master/limit_data/AxionTop/indirect_diboson_zz_2.txt)
* indirect_diboson_zz: [limit](https://github.com/cajohare/AxionLimits/raw/master/limit_data/AxionTop/indirect_diboson_zz.txt)
* kaon_decays: [limit](https://github.com/cajohare/AxionLimits/raw/master/limit_data/AxionTop/kaon_decays.txt)
Loading

0 comments on commit 0478ae5

Please sign in to comment.