Error in <TROOT::WriteTObject>: The current directory (root)

Hello All,

I have used root inside the grid via prun,
after doing echo $ROOTYS it prompts:
/afs/cern.ch/sw/lcg/app/releases/ROOT/5.26.00d_python2.6/i686-slc5-gcc43-opt/root
so this is my version of root.

Here down is the central function of my code

void Analysis1::EventsLoop()
{
  TFile f("file.root","RECREATE");
  if ( fChain == 0 ) return;
  Long64_t nentries = fChain -> GetEntriesFast();
  Long64_t nbytes = 0, nb = 0;
  //*****************************************************************
  //****************** START LOOP OF EVENTS *************************
  //*****************************************************************   
  for ( Long64_t jentry = 0; jentry < nentries; jentry++ ){
    Long64_t ientry = LoadTree( jentry );
    if (ientry < 0) break;
    nb = fChain->GetEntry(jentry);   nbytes += nb; 

    if( isRealData ){
      GRL gqual;
      mygrl = gqual.TieneRunLumiBlock(RunNumber,lbn);
    } else mygrl = true; 

    if( mygrl == false ) continue; 

    //AOD to D2PD cuts
    Int_t n1jetet40=0;    
    Int_t n2jetet20=0;
    for(Int_t i=0; i<jet_AntiKt4H1Topo_n; i++){
      if(jet_AntiKt4H1Topo_emscale_pt->at(i)>40.e3 && fabs(jet_AntiKt4H1Topo_eta->at(i))<3.0) n1jetet40++;
      if(jet_AntiKt4H1Topo_emscale_pt->at(i)>20.e3 && fabs(jet_AntiKt4H1Topo_eta->at(i))<3.0) n2jetet20++;
    }   
    if(n1jetet40==0) continue;
    if(n2jetet20<2) continue;

    if(MET_Topo_et<=20.e3) continue;

    Int_t n1elet10=0;
    for(Int_t i=0; i<el_n; i++){
      if(el_author->at(i)!=0){
        //if(el_loose->at(i)==1){
          if(fabs(el_etas2->at(i))<2.5){
            if(el_pt->at(i)>10.e3){
              n1elet10++;
            }
          }
        //}
      }
    }
    if(n1elet10==0) continue;

    Int_t n1muet6=0;
    for(Int_t i=0; i<mu_staco_n; i++){
      if( mu_staco_pt->at(i)>6.e3 && fabs(mu_staco_eta->at(i))<2.5) n1muet6++;
    }
    if(n1muet6==0) continue;


    // JET CLEANING
    wasBadJet = false;
    for(Int_t i=0; i<jet_AntiKt4H1Topo_n; i++){

      // cleaning applied to jets with EMSJES pt<20 and any eta.
      if( jet_AntiKt4H1Topo_emscale_pt->at(i)*jet_AntiKt4H1Topo_EMJES->at(i) <= 20000. ){
        if( isBadLooseJet(i) ) {
          wasBadJet = true;
          break;
        }
      }
    }
    if(wasBadJet) continue;

    // there is at least 1 reco PV with nTracks > 4
    isGoodPV=false;
    for( UInt_t ivx = 0; ivx < vx_nTracks->size(); ivx++ ){
      if( vx_nTracks->at(ivx) > 4 ){
        isGoodPV=true;
        break;
      }
    }
    if(!isGoodPV) continue;


    // event veto
    // 
    //EventVeto();
    wasCrackElectron=false;
    for(Int_t i=0; i<el_n; i++){
      if (fabs(el_cl_eta->at(i)) > 1.37 && fabs(el_cl_eta->at(i)) < 1.52) {
        wasCrackElectron=true;
        break;
      }
    }
    if(wasCrackElectron) continue;

    MuPt.clear();
    MuEtCone20.clear();
    MuEta.clear();
    MuPhi.clear();
    MuEnergy.clear();
    Mud0_exPV.clear();
    Mud0_exPVe.clear();
    Muz0_exPV.clear();
    Mur0_exPV.clear();
    JetPt.clear();
    JetEta.clear();
    JetPhi.clear();
    JetEnergy.clear();
    DeltaR_jj.clear();
    DeltaPhi_jj.clear();
    DeltaEta_jj.clear();
    pt_jj.clear();
    m_jj.clear();
    DeltaR_Wmu.clear();
    DeltaPhi_Wmu.clear();
    DeltaEta_Wmu.clear();
    m_Wmu.clear();
    pt_Wmu.clear();
    v_x.clear();
    v_y.clear();
    v_z.clear();
    v_r.clear();
    v_errx.clear();
    v_erry.clear();
    v_errz.clear();
    v_covxy.clear();
    v_covyz.clear();
    v_covzx.clear();
    v_chi2.clear();
    v_ndof.clear();
    v_type.clear();
    v_nTracks.clear();
    dv1v2.clear();



    vector< W_From_jj > Wv;
    vector< W_From_jj >::const_iterator iWv;

    if ( DEBUG ) cout << jentry << endl;
    Wv.clear();

    ts = TransverseSphericity();
    met = MET_EMJES_RefFinal_CellOutEM_et;
    em = EffectiveMass();


    Offline();

    MuonInfo();
    JetInfo();
    VertexInfo();
    v1v2();
    Wv = recoWContenedor();
    NeutralinoIssues( Wv );
    Nt->Fill();
  }
  //********************************************************************************
  //********************* END OF THE EVENTS LOOP ***********************************
  //********************************************************************************
   Nt->Write();
  f.Write();
  f.Close();
  return;
}

and this is the error message
Error in TROOT::WriteTObject: The current directory (root) is not associated with a file. The object (Nt) has not been written.

The message is correct and tells you that instead of doing

TTree *Nt = new TTree("Nt",...) TFile f("file.root","RECREATE"); you should do

TFile f("file.root","RECREATE"); TTree *Nt = new TTree("Nt",...)
Rene