// *******
// Macro for converting simulated/reconstructed
// data to PndMicroCandidates/TCandidates
// as input for analysis
// parameters: 
//     recofn=filename of reco file
//     simfn =filename of McPoints
//     nevts = # of events
// *******


void writeMicro(TString recofn="output_reco.root",int nevts=5000,  TString outfile="")
{
  TStopwatch timer;
  timer.Start();
  gDebug=0;

  // Load basic libraries
  gROOT->LoadMacro("$VMCWORKDIR/gconfig/rootlogon.C");
  rootlogon();
  gSystem->Load("libAnalysisTools");
  gSystem->Load("libRho");
  gSystem->Load("libanatask");

  //analysis
  TString infile=recofn;
  if (outfile=="")
  	outfile=recofn+".full.root";
 
  TString simfile="output_mc.root";
  TString simfile1="output_mc_1.root";
  TString simfile2="output_mc_2.root";	
  
  FairRunAna *fRunA= new FairRunAna();
  fRunA->SetInputFile(simfile); // your simulation file
  fRunA->AddFriend(infile); // your reco/digi output file
  fRunA->AddFile(simfile1);
  fRunA->AddFriend(infile); // your reco/digi output file
  fRunA->AddFile(simfile2);
  fRunA->AddFriend(infile); // your reco/digi output file

  fRunA->SetOutputFile(outfile.Data()); //your microcandidates output file
  
  //append the analysis task
  
  PndEmcMapper *emcMap = PndEmcMapper::Instance(2);
  
  PndMicroWriter *tcandTask=new PndMicroWriter();
  fRunA->AddTask(tcandTask);
  
  //PndSimpleAnalysis *anaTask=new PndSimpleAnalysis(cfgfile.Data());
  //fRunA->AddTask(anaTask);
  
  fRunA->Init();
  if (nevts==0) nevts=10;
  fRunA->Run(0,nevts);
  
  	
  timer.Stop();
  Double_t rtime = timer.RealTime();
  Double_t ctime = timer.CpuTime();
  printf("RealTime=%f seconds, CpuTime=%f seconds\n",rtime,ctime);
}  
  
