コード例 #1
0
ファイル: THSBins.C プロジェクト: der-eric/Events
void THSBins::RunTree(TTree* tree){
  //create entry lists for tree
  TVectorD vVal(fNaxis);//values of variables for given entry
  //tree->SetBranchStatus("*","0");//faster if turnoff unused branches, don't use here as fit variables are not included in VarAxis
  for(Int_t j=0;j<fNaxis;j++){
    //    tree->SetBranchStatus(fVarAxis[j].GetName(),"1");//STATUS must be called before ADRESS!! see Important remarkse in TChain SetBranchStatus!
    tree->SetBranchAddress(fVarAxis[j].GetName(),&vVal[j]);
  }
  //Copy the tree branches to the list of trees
  for(Int_t i=0;i<fNbins;i++){
    // fFile->cd();//clone tree is not working all the time when file is set??
    TTree *newTree=tree->CloneTree(0);
    //  newTree->SetDirectory(fFile);
    newTree->SetName(fBinNames[i]);
    fTrees->Add(newTree);
  }

  vector<Int_t> vBin(fNaxis); //store for the bin number of each axis
  for(Long64_t i=0;i<tree->GetEntries();i++){//loop over events
    tree->GetEntry(i);
    Bool_t InLimits=kTRUE;
    for(Int_t iA=0;iA<fNaxis;iA++)//first check var is within variable ranges
      if(vVal[iA]<fVarAxis[iA].GetXmin()||vVal[iA]>fVarAxis[iA].GetXmax()) InLimits=kFALSE;
    if(!InLimits) continue;
    //now find bin for each axis
    for(Int_t iA=0;iA<fNaxis;iA++){//loop over vars/axis
        for (int iB = 1; iB <= fVarAxis[iA].GetNbins(); iB++)//loop over bins
	if(vVal[iA]<fVarAxis[iA].GetBinUpEdge(iB)){vBin[iA]=iB;break;}//found it, next axis
    }
    //now have the bin for each axis, find the correct entry list
    Int_t theBin=-1;
    for(Int_t iA1=0;iA1<fNaxis-1;iA1++){
       Int_t tbin=vBin[iA1]-1;//-1 as bin indexing starts at 1 with 0 underflow
      for(Int_t iA2=iA1+1;iA2<fNaxis;iA2++)
	tbin*=fVarAxis[iA2].GetNbins();
      theBin+=tbin;
    }
    theBin+=vBin[fNaxis-1];
    (dynamic_cast<TTree*>(fTrees->At(theBin)))->Fill();
  }
  tree->SetBranchStatus("*",1);
  tree->ResetBranchAddresses();
  for(Int_t i=0;i<fTrees->GetEntries();i++)
    (dynamic_cast<TTree*>(fTrees->At(i)))->ResetBranchAddresses();
  gROOT->cd();
}
コード例 #2
0
ファイル: THSBins.C プロジェクト: der-eric/Events
void THSBins::RunEntryList(TTree* tree){
  //create entry lists for tree
  TVectorD vVal(fNaxis);//values of variables for given entry
  tree->SetBranchStatus("*","0");//faster if turnoff unused branches
  for(Int_t j=0;j<fNaxis;j++){
    tree->SetBranchStatus(fVarAxis[j].GetName(),"1");//STATUS must be called before ADRESS!! see Important remarkse in TChain SetBranchStatus!
    tree->SetBranchAddress(fVarAxis[j].GetName(),&vVal[j]);
  }
  vector<Int_t> vBin(fNaxis); //store for the bin number of each axis
  for(Long64_t i=0;i<tree->GetEntries();i++){//loop over events
    tree->GetEntry(i);
    Bool_t InLimits=kTRUE;
    for(Int_t iA=0;iA<fNaxis;iA++)//first check var is within variable ranges
      if(vVal[iA]<fVarAxis[iA].GetXmin()||vVal[iA]>fVarAxis[iA].GetXmax()) InLimits=kFALSE;
    if(!InLimits) continue;
    //now find bin for each axis
    for(Int_t iA=0;iA<fNaxis;iA++){//loop over vars/axis
      //cout<<iA<<" val "<<vVal[iA]<<" "<<fVarAxis[iA].GetXmax()<<" "<<(vVal[iA]<fVarAxis[iA].GetXmin()||vVal[iA]>fVarAxis[iA].GetXmax())<<endl;
      for (int iB = 1; iB <= fVarAxis[iA].GetNbins(); iB++)//loop over bins
	if(vVal[iA]<fVarAxis[iA].GetBinUpEdge(iB)){vBin[iA]=iB;break;}//found it, next axis
    }
    //now have the bin for each axis, find the correct entry list
    Int_t theBin=-1;
    for(Int_t iA1=0;iA1<fNaxis-1;iA1++){
      //cout<<vBin[iA1]<<" ";
      Int_t tbin=vBin[iA1]-1;//-1 as bin indexing starts at 1 with 0 underflow
      for(Int_t iA2=iA1+1;iA2<fNaxis;iA2++)
	tbin*=fVarAxis[iA2].GetNbins();
      theBin+=tbin;
    }
    // cout<<vBin[fNaxis-1]<<" ";
    theBin+=vBin[fNaxis-1];
    //cout<<" Bin "<<theBin<<" "<<fEntryLists->GetEntries()<<endl;
    (dynamic_cast<TEntryList*>(fEntryLists->At(theBin)))->Enter(i,tree);
  }
  tree->SetBranchStatus("*",1);
  tree->ResetBranchAddresses();

}
コード例 #3
0
 CStdFPoint Vec3BulletToAnimat(const btVector3 &vPoint)
 {
     CStdFPoint vVal(vPoint[0], vPoint[1], vPoint[2]);
     return vVal;
 }
コード例 #4
0
 btVector3 Vec3AnimatToBullet(const CStdFPoint &vPoint)
 {
     btVector3 vVal(vPoint.x, vPoint.y, vPoint.z);
     return vVal;
 }