# Effect of Pulse shaping on BER

am trying to implement OQPSK modulation with half sine pulse shaping. If I simulate the OQPSK modulation without pulse shaping, the simulated curve is similar to the theoretical value. However, when I introduce pulse shaping, the simulated values are lesser than the theoretical case. I am not sure where I am going wrong. Below is the code where I am using pulse shaping:

  Rc = 2e6;       % Chip rate
Tc = 1/Rc;      % inverse of chip rate
Fs = 12e6;      % sampling frequency
dt = 1/Fs;
over = Fs/Rc;   % sampling factor
TSim = 0.01;
N = floor(TSim/4e-6);
data = randi([0 1],N,1);

hMod = comm.OQPSKModulator('BitInput',true);
modulated_data = step(hMod, data);

%% Upsample
over_data = upsample(modulated_data,over);

%% Pulse Shape
time = 0:dt:2*Tc;
hSineflt = sin(pi*time/(2*Tc));
tx=conv(over_data,hSineflt,'same');

%% AWGN channel
hAWGN = comm.AWGNChannel('EbNo',SNR);
noisy_signal = step(hAWGN, tx);

%% Matched filter
rx=conv(noisy_signal,hSineflt,'same');

%% Downsample
downsampled_signal = rx(1:over:end);

%% OQPSK Demodulation
hDemod = comm.OQPSKDemodulator('BitOutput',true);
demod_data = step(hDemod,downsampled_signal);

%% BER

  BER_Theo = berawgn(SNR,'oqpsk','nondiff');