ROOT logo
/**
 * @file   Raw2ESD.C
 * @author Christian Holm Christensen <cholm@nbi.dk>
 * @date   Wed Apr 23 15:06:55 2014
 * 
 * @brief  Convert from raw data to ESD using the AliFMDReconstructor
 * 
 * 
 */
/** 
 * Default input file 
 * @ingroup FMD_script
 */
const char* df = "/data/alice/data/pp/LHC10c/raw/118561/physics_118561.root";

/** 
 * Convert from raw data to ESD using the AliFMDReconstructor.  This
 * illustrates the passes done in the official reconstruction.
 * 
 * @param file   Input raw data
 * @param nEv    Number of events to process (<=0 means all)
 * @param skip   Number of events to skip 
 * @param debug  Debug level
 *
 * @ingroup FMD_script
 */
void
Raw2ESD(const char* file=df, Int_t nEv=10, Int_t skip=300, Int_t debug=0)
{
  // AliCDBManager::Instance()->SetDefaultStorage("local://$ALICE_ROOT/OCDB");
  AliCDBManager::Instance()->SetRun(118561);
  AliCDBManager::Instance()->SetDefaultStorageFromRun(118561);
  AliGeomManager::LoadGeometry("geometry.root");

  AliRawReader*        reader  = AliRawReader::Create(file);
  AliFMDReconstructor* reco    = new AliFMDReconstructor();
  reco->SetDiagnose(debug > 5);
  reco->Init();

  AliLog::SetModuleDebugLevel("FMD", debug);

  Int_t        event       = 0;
  TFile*       digitFile   = TFile::Open("reco_digits.rot", "RECREATE");

  TFile*       clusterFile   = TFile::Open("FMD.RecPoints.root", "RECREATE");
  TTree*       clusterTree = new TTree("cluster", "FMD digits");

  TFile*       esdFile     = TFile::Open("AliESDs.root", "RECREATE");
  TTree*       esdTree     = new TTree("esdTree", "ESD Treee");
  AliESDEvent* esd         = new AliESDEvent();

  esd->CreateStdContent();
  esd->WriteToTree(esdTree);
  while ((reader && reader->NextEvent())) {
    event++;
    // Check for skip events 
    if (skip > 0 && (event - skip) < 0) continue;
    // Check if we got enough events 
    if (nEv > 0 && (event-skip) > nEv) continue;

    digitFile->cd();
    TTree* digitTree  = new TTree("digit", "FMD digits");
    
    // Convert to digits first 
    reco->ConvertDigits(reader, digitTree);

    // Reconstruct to RecPoints 
    reco->Reconstruct(digitTree, clusterTree);

    // Set stuff on the ESD 
    esd->SetRunNumber(AliCDBManager::Instance()->GetRun());
    esd->SetEventNumberInFile(event-1);
    
    // Fill the ESD objet and write to file 
    reco->FillESD((TTree*)0, (TTree*)0, esd);
    esdTree->Fill();
    esd->Reset();

    digitFile->Write();
    delete digitTree;
  }
  esdFile->Write();
}

  
 Raw2ESD.C:1
 Raw2ESD.C:2
 Raw2ESD.C:3
 Raw2ESD.C:4
 Raw2ESD.C:5
 Raw2ESD.C:6
 Raw2ESD.C:7
 Raw2ESD.C:8
 Raw2ESD.C:9
 Raw2ESD.C:10
 Raw2ESD.C:11
 Raw2ESD.C:12
 Raw2ESD.C:13
 Raw2ESD.C:14
 Raw2ESD.C:15
 Raw2ESD.C:16
 Raw2ESD.C:17
 Raw2ESD.C:18
 Raw2ESD.C:19
 Raw2ESD.C:20
 Raw2ESD.C:21
 Raw2ESD.C:22
 Raw2ESD.C:23
 Raw2ESD.C:24
 Raw2ESD.C:25
 Raw2ESD.C:26
 Raw2ESD.C:27
 Raw2ESD.C:28
 Raw2ESD.C:29
 Raw2ESD.C:30
 Raw2ESD.C:31
 Raw2ESD.C:32
 Raw2ESD.C:33
 Raw2ESD.C:34
 Raw2ESD.C:35
 Raw2ESD.C:36
 Raw2ESD.C:37
 Raw2ESD.C:38
 Raw2ESD.C:39
 Raw2ESD.C:40
 Raw2ESD.C:41
 Raw2ESD.C:42
 Raw2ESD.C:43
 Raw2ESD.C:44
 Raw2ESD.C:45
 Raw2ESD.C:46
 Raw2ESD.C:47
 Raw2ESD.C:48
 Raw2ESD.C:49
 Raw2ESD.C:50
 Raw2ESD.C:51
 Raw2ESD.C:52
 Raw2ESD.C:53
 Raw2ESD.C:54
 Raw2ESD.C:55
 Raw2ESD.C:56
 Raw2ESD.C:57
 Raw2ESD.C:58
 Raw2ESD.C:59
 Raw2ESD.C:60
 Raw2ESD.C:61
 Raw2ESD.C:62
 Raw2ESD.C:63
 Raw2ESD.C:64
 Raw2ESD.C:65
 Raw2ESD.C:66
 Raw2ESD.C:67
 Raw2ESD.C:68
 Raw2ESD.C:69
 Raw2ESD.C:70
 Raw2ESD.C:71
 Raw2ESD.C:72
 Raw2ESD.C:73
 Raw2ESD.C:74
 Raw2ESD.C:75
 Raw2ESD.C:76
 Raw2ESD.C:77
 Raw2ESD.C:78
 Raw2ESD.C:79
 Raw2ESD.C:80
 Raw2ESD.C:81
 Raw2ESD.C:82
 Raw2ESD.C:83
 Raw2ESD.C:84
 Raw2ESD.C:85
 Raw2ESD.C:86