Phase space Root Rotation

Hi Dear Root user
Good day

I want to simulate some radiation therapy treatment plan…
I get a root phase space before jaws and right now I want to rotate particle to a special angel as a rotation of Gantry

I used the below code to do this issue: rotation for 45 degree

Int_t size;
Float_t xold;
Float_t yold;
Float_t zold;
Float_t dxold;
Float_t dyold;
Float_t dzold;
Float_t energyold;
Char_t particlenameold[64];
TFile *fileold = TFile::Open("PhSg1.root")

TTree *treeold= (TTree*)fileold->Get("PhaseSpace");
size = PhaseSpace->GetEntries();
treeold->SetBranchAddress("X",&xold);
treeold->SetBranchAddress("Y",&yold);
treeold->SetBranchAddress("Z",&zold);
treeold->SetBranchAddress("dX",&dxold);
treeold->SetBranchAddress("dY",&dyold);
treeold->SetBranchAddress("dZ",&dzold);
treeold->SetBranchAddress("Ekine",&energyold);
treeold->SetBranchAddress("ParticleName",&particlenameold);

Float_t xnew;
Float_t ynew;
Float_t znew;
Float_t dxnew;
Float_t dynew;
Float_t dznew;
Float_t energynew;
Char_t particlenamenew[64];
string st = "gamma";

TFile *filenew=TFile::Open("phsGantryAngle.root","RECREATE");
TTree *treenew=new TTree("PhaseSpace","PhaseSpace")

treenew->Branch("Ekine", &energynew,"Ekine/F");
treenew->Branch("X", &xnew,"X/F");
treenew->Branch("Y", &ynew,"Y/F");
treenew->Branch("Z", &znew,"Z/F");
treenew->Branch("dX", &dxnew,"dX/F");
treenew->Branch("dY", &dynew,"dY/F");
treenew->Branch("dZ", &dznew,"dZ/F");
treenew->Branch("ParticleName", particlenamenew ,"ParticleName/C");

for(int i = 0; i < size;i++){
treeold->GetEntry(i);
if (energyold != 0){
treeold->GetEntry(i);
xnew = (xold*TMath::Cos((45*TMath::Pi())/180))+(yold*TMath::Sin((45*TMath::Pi())/180))-(zold*TMath::Sin((45*TMath::Pi())/180))
ynew = (-xold*TMath::Sin((45*TMath::Pi())/180))+(yold*TMath::Cos((45*TMath::Pi())/180))+(zold*TMath::Sin((45*TMath::Pi())/180))
znew = (xold*TMath::Sin((45*TMath::Pi())/180))-(yold*TMath::Sin((45*TMath::Pi())/180))+(zold*TMath::Cos((45*TMath::Pi())/180))
dxnew = (dxold*TMath::Cos((45*TMath::Pi())/180))+(dyold*TMath::Sin((45*TMath::Pi())/180))-(dzold*TMath::Sin((45*TMath::Pi())/180))
dynew = (-dxold*TMath::Sin((45*TMath::Pi())/180))+(dyold*TMath::Cos((45*TMath::Pi())/180))+(dzold*TMath::Sin((45*TMath::Pi())/180))
dznew = (dxold*TMath::Sin((45*TMath::Pi())/180))-(dyold*TMath::Sin((45*TMath::Pi())/180))+(dzold*TMath::Cos((45*TMath::Pi())/180))
energynew = energyold;
sscanf(st.c_str(), "%s",particlenamenew);
treenew->Fill();
}
}

I get these error

Error: improper lvalue (tmpfile):10:
Error: improper lvalue (tmpfile):10:
(Float_t)1.38669137954711914e+01
*** Interpreter error recovered ***

Is there anyone have experience about it?

Best Regard
Marziyeh

// ...
TFile *fileold = TFile::Open("PhSg1.root") ;
// ...
TTree *treenew = new TTree("PhaseSpace", "PhaseSpace") ;
// ...
xnew = (...) ;
ynew = (...) ;
znew = (...) ;
dxnew = (...) ;
dynew =  (...) ;
dznew = (...) ;
// ...

BTW. When you post “source code” or “output” here, do remember to enclose them into two lines which contain just three characters ``` (see how your post has been edited above).

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.