Ok I found the reason why it is not recorded at right location.
This weapon Actor has “SceneComponent” as root (that i need to define the location of the handle) and “StaticMeshComponent” that is attached to this SceneComponent.
Both of them are recorded as components of Character. SceneComponent does not have “Transform” track. But StaticMeshComponent does.
If i dont have SceneComponent as root than Actor is recorded as attached at right socket location (but still need this component as dummy).
WeaponRoot = ObjectInitializer.CreateDefaultSubobject<USceneComponent>(this, TEXT("WeaponRoot"));
Mesh = ObjectInitializer.CreateDefaultSubobject<UStaticMeshComponent>(this, TEXT("WeaponMesh"));
Mesh->SetCollisionEnabled(ECollisionEnabled::NoCollision);
Mesh->SetupAttachment(WeaponRoot);
SetRootComponent(Mesh);
PrimaryActorTick.bCanEverTick = true;