I have run a code to extract features from lidar scans like poles and facades, and I created the reference map just concatenating results from each scan (i.e local map) now my question is; How can I run map matching algo to get the robots poses?
Concatenation will work only if your positioning/localization is super precise which is seldom the case. What you want to be doing is scan registration. ICP and NDT are the two most widely used registration techniques which you can speed up by matching only the features you are extracting. In scan registration, your sensor gets a scan (from which you will extract features) and match them to the next scan which will give you a pose between them. So if you know your starting pose, you can get your new pose!
Of course you will find a lot of resources using C/C++, but PCL has a python version of icp which I haven't used. So if you do end up using it, please let us know!