diff --git a/macro/littrack/radlength_ana.C b/macro/littrack/radlength_ana.C
index 314dae92697a4e9132f64426c92577dcba5b61e3..4957c7581bab35a647b30b2a25efde21697169c7 100644
--- a/macro/littrack/radlength_ana.C
+++ b/macro/littrack/radlength_ana.C
@@ -4,58 +4,69 @@
  * \author Andrey Lebedev <andrey.lebedev@gsi.de>
  * \date 2013
  */
-void radlength_ana(Int_t nEvents = 1210000) {
-  TString script = TString(gSystem->Getenv("LIT_SCRIPT"));
-
-  TString dir     = "events/radlength_rich_v13c/";      // Output directory
-  TString mcFile  = dir + "radlength.mc.0000.root";     // MC transport file
-  TString parFile = dir + "radlength.param.0000.root";  // Parameter file
-  TString radLengthQaFile = dir + "radlength.qa.root";  // MC transport file
-  TString resultDir       = "events/results_radlength_rich_v13c/";
-
-  if (script == "yes") {
-    mcFile          = TString(gSystem->Getenv("LIT_MC_FILE"));
-    parFile         = TString(gSystem->Getenv("LIT_PAR_FILE"));
-    radLengthQaFile = TString(gSystem->Getenv("LIT_RAD_LENGTH_QA_FILE"));
-    resultDir       = TString(gSystem->Getenv("LIT_RESULT_DIR"));
-  }
-
-  TStopwatch timer;
-  timer.Start();
-
-  gROOT->LoadMacro("$VMCWORKDIR/macro/littrack/loadlibs.C");
-  loadlibs();
-
-  // -----   Reconstruction run   -------------------------------------------
-  FairRunAna* run = new FairRunAna();
-  run->SetInputFile(mcFile);
-  run->SetOutputFile(radLengthQaFile);
-  // ------------------------------------------------------------------------
-
-  CbmLitRadLengthQa* radLengthQa = new CbmLitRadLengthQa();
-  radLengthQa->SetOutputDir(std::string(resultDir));
-  run->AddTask(radLengthQa);
-
-  // -----  Parameter database   --------------------------------------------
-  FairRuntimeDb* rtdb       = run->GetRuntimeDb();
-  FairParRootFileIo* parIo1 = new FairParRootFileIo();
-  parIo1->open(parFile.Data());
-  rtdb->setFirstInput(parIo1);
-  rtdb->setOutput(parIo1);
-  rtdb->saveOutput();
-  // ------------------------------------------------------------------------
-
-  // -----   Initialize and run   --------------------------------------------
-  run->Init();
-  run->Run(0, nEvents);
-  // ------------------------------------------------------------------------
-
-  // -----   Finish   -------------------------------------------------------
-  timer.Stop();
-  std::cout << "Macro finished successfully." << std::endl;
-  std::cout << "Output file is " << radLengthQaFile << std::endl;
-  std::cout << "Parameter file is " << parFile << std::endl;
-  std::cout << "Real time " << timer.RealTime() << " s, CPU time "
-            << timer.CpuTime() << " s" << std::endl;
-  // ------------------------------------------------------------------------
+void radlength_ana(
+    const string& mcFile = "/Users/slebedev/Development/cbm/data/sim/rich/radlen/mc.ac.root",
+    const string& parFile = "/Users/slebedev/Development/cbm/data/sim/rich/radlen/param.ac.root",
+    const string& radqaFile = "/Users/slebedev/Development/cbm/data/sim/rich/radlen/radqa.ac.root",
+    const string& resultDir = "results_radlen_ac/",
+    const string &geoSetup = "sis100_electron_rich_pal_bcarb", 
+    Int_t nEvents = 12100000)
+{
+
+    FairLogger::GetLogger()->SetLogScreenLevel("INFO");
+    FairLogger::GetLogger()->SetLogVerbosityLevel("LOW");
+    TTree::SetMaxTreeSize(90000000000);
+
+    TString srcDir = gSystem->Getenv("VMCWORKDIR");  // top source directory
+
+    remove(radqaFile.c_str());
+
+    TString setupFile = srcDir + "/geometry/setup/setup_" + geoSetup + ".C";
+    TString setupFunct = "setup_" + geoSetup + "()";
+    gROOT->LoadMacro(setupFile);
+    gROOT->ProcessLine(setupFunct);
+
+    TList *parFileList = new TList();
+
+    TStopwatch timer;
+    timer.Start();
+    gDebug = 0;
+
+    FairRunAna *run = new FairRunAna();
+    FairFileSource* inputSource = new FairFileSource(mcFile.c_str());
+    run->SetSource(inputSource);
+    run->SetOutputFile(radqaFile.c_str());
+    run->SetGenerateRunInfo(kTRUE);
+
+
+    CbmLitRadLengthQa* radLengthQa = new CbmLitRadLengthQa();
+    radLengthQa->SetOutputDir(resultDir);
+    run->AddTask(radLengthQa);
+
+    FairRuntimeDb* rtdb = run->GetRuntimeDb();
+    FairParRootFileIo* parIo1 = new FairParRootFileIo();
+    FairParAsciiFileIo* parIo2 = new FairParAsciiFileIo();
+    parIo1->open(parFile.c_str(),"UPDATE");
+    rtdb->setFirstInput(parIo1);
+    if ( ! parFileList->IsEmpty() ) {
+        parIo2->open(parFileList, "in");
+        rtdb->setSecondInput(parIo2);
+    }
+
+    run->Init();
+
+    rtdb->setOutput(parIo1);
+    rtdb->saveOutput();
+    rtdb->print();
+
+    run->Run(0, nEvents);
+
+    timer.Stop();
+    std::cout << std::endl << std::endl;
+    std::cout << "Macro finished succesfully." << std::endl;
+    std::cout << "Output file is " << mcFile << std::endl;
+    std::cout << "Parameter file is " << parFile << std::endl;
+    std::cout << "Radqa file is " << radqaFile << std::endl;
+    std::cout << "Real time " << timer.RealTime() << " s, CPU time " << timer.CpuTime() << " s" << std::endl;
+    std::cout << "Test passed" << std::endl << "All ok" << std::endl;
 }
diff --git a/macro/littrack/radlength_sim.C b/macro/littrack/radlength_sim.C
index d22ab81140a5d2b8dc4936a6a8432ea7c35c8d41..316fc1b31e16ed89a9ba4ad1248c925ae3c4e065 100644
--- a/macro/littrack/radlength_sim.C
+++ b/macro/littrack/radlength_sim.C
@@ -3,99 +3,37 @@
 using std::cout;
 using std::endl;
 
-void radlength_sim(Int_t nEvents = 1210000) {
-  TString script = TString(gSystem->Getenv("LIT_SCRIPT"));
+void radlength_sim(
+  const string& mcFile = "/Users/slebedev/Development/cbm/data/sim/rich/radlen/mc.ac.root",
+  const string& parFile = "/Users/slebedev/Development/cbm/data/sim/rich/radlen/param.ac.root",
+  const string &geoSetup = "sis100_electron_rich_pal_bcarb", 
+  Int_t nofEvents = 0) {
 
-  TString dir     = "events/radlength_rich_v13c/";
-  TString mcFile  = dir + "radlength.mc.0000.root";
-  TString parFile = dir + "radlength.param.0000.root";
+  TTree::SetMaxTreeSize(90000000000);
 
-  TString caveGeom = "cave.geo";
-  TString mvdGeom  = "";  //"mvd/mvd_v07a.geo";
-  TString stsGeom  = "";  //"sts/sts_v12b.geo.root";
-  TString richGeom = "rich/rich_v13c.root";
-  TString trdGeom  = "";  //"trd/trd_v13p_3e.geo.root";
-  TString muchGeom = "";  //"much/much_v12b.geo";
-  TString tofGeom  = "";  //"tof/tof_v13b.geo.root";
-
-  if (script == "yes") {
-    mcFile  = TString(gSystem->Getenv("LIT_MC_FILE"));
-    parFile = TString(gSystem->Getenv("LIT_PAR_FILE"));
-
-    caveGeom = TString(gSystem->Getenv("LIT_CAVE_GEOM"));
-    //stsGeom = TString(gSystem->Getenv("LIT_STS_GEOM"));
-    trdGeom = TString(gSystem->Getenv("LIT_TRD_GEOM"));
-  }
+  remove(parFile.c_str());
+  remove(mcFile.c_str());
 
   TStopwatch timer;
   timer.Start();
 
-  gROOT->LoadMacro("$VMCWORKDIR/macro/littrack/loadlibs.C");
-  loadlibs();
-
-  FairRunSim* run = new FairRunSim();
-  run->SetName("TGeant3");     // Transport engine
-  run->SetOutputFile(mcFile);  // Output file
-  FairRuntimeDb* rtdb = run->GetRuntimeDb();
-
-  run->SetMaterials("media.geo");  // Materials
-
-  // -----   Create detectors and passive volumes   -------------------------
-  if (caveGeom != "") {
-    FairModule* cave = new CbmCave("CAVE");
-    cave->SetGeometryFileName(caveGeom);
-    run->AddModule(cave);
-  }
-
-  if (mvdGeom != "") {
-    FairDetector* mvd = new CbmMvd("MVD", kTRUE);
-    mvd->SetGeometryFileName(mvdGeom);
-    run->AddModule(mvd);
-  }
-
-  if (stsGeom != "") {
-    FairDetector* sts = new CbmStsMC(kTRUE);
-    sts->SetGeometryFileName(stsGeom);
-    run->AddModule(sts);
-  }
-
-  if (richGeom != "") {
-    FairDetector* rich = new CbmRich("RICH", kTRUE);
-    rich->SetGeometryFileName(richGeom);
-    run->AddModule(rich);
-  }
-
-  if (muchGeom != "") {
-    FairDetector* much = new CbmMuch("MUCH", kTRUE);
-    much->SetGeometryFileName(muchGeom);
-    run->AddModule(much);
-  }
-
-  if (trdGeom != "") {
-    FairDetector* trd = new CbmTrd("TRD", kTRUE);
-    trd->SetGeometryFileName(trdGeom);
-    run->AddModule(trd);
-  }
-
-  if (tofGeom != "") {
-    FairDetector* tof = new CbmTof("TOF", kTRUE);
-    tof->SetGeometryFileName(tofGeom);
-    run->AddModule(tof);
-  }
-
-  // -----   Create PrimaryGenerator   --------------------------------------
-  FairPrimaryGenerator* primGen = new FairPrimaryGenerator();
-  run->SetGenerator(primGen);
+//   const Double_t minX   = -550;  // cm
+//   const Double_t maxX   = 550;   // cm
+//   const Double_t stepX  = 10.;    // cm
+//   const Int_t nofBinsX  = (maxX - minX) / stepX;
+//   const Double_t minY   = -550;  // cm
+//   const Double_t maxY   = 550;   // cm
+//   const Double_t stepY  = 10.;    // cm
 
-  const Double_t minX   = -550;  // cm
-  const Double_t maxX   = 550;   // cm
+  const Double_t minX   = -250;  // cm
+  const Double_t maxX   = 250;   // cm
   const Double_t stepX  = 1.;    // cm
   const Int_t nofBinsX  = (maxX - minX) / stepX;
-  const Double_t minY   = -550;  // cm
-  const Double_t maxY   = 550;   // cm
+  const Double_t minY   = -250;  // cm
+  const Double_t maxY   = 250;   // cm
   const Double_t stepY  = 1.;    // cm
   const Int_t nofBinsY  = (maxY - minY) / stepY;
-  const Int_t nofEvents = nofBinsX * nofBinsY;
+  nofEvents = nofBinsX * nofBinsY;
 
   std::vector<Double_t> vectorX, vectorY;
   for (Int_t iX = 0; iX < nofBinsX; iX++) {
@@ -107,13 +45,10 @@ void radlength_sim(Int_t nEvents = 1210000) {
     }
   }
 
-  std::cout << "CbmLitRadLengthGenerator:\n";
-  std::cout << "nofBinX=" << nofBinsX << " nofBinsY=" << nofBinsY
-            << " nofEvents=" << nofEvents << std::endl;
-
+  CbmTransport run;
   CbmLitRadLengthGenerator* generator = new CbmLitRadLengthGenerator();
   generator->SetXY(vectorX, vectorY);
-  primGen->AddGenerator(generator);
+  run.AddInput(generator);
 
   /*
    const int RMax = 700; // Maximum radius of the station
@@ -133,29 +68,22 @@ void radlength_sim(Int_t nEvents = 1210000) {
    box->SetThetaRange(0., 50.);
    primGen->AddGenerator(box);
 */
-  run->SetStoreTraj(kFALSE);
-  run->SetRadLenRegister(kTRUE);
-  // ------------------------------------------------------------------------
-
-  run->Init();
-
-  // -----   Runtime database   ---------------------------------------------
-  Bool_t kParameterMerged   = kTRUE;
-  FairParRootFileIo* parOut = new FairParRootFileIo(kParameterMerged);
-  parOut->open(parFile.Data());
-  rtdb->setOutput(parOut);
-  rtdb->saveOutput();
-  rtdb->print();
-  // ------------------------------------------------------------------------
-
-  run->Run(nEvents);
 
-  // -----   Finish   -------------------------------------------------------
-  timer.Stop();
-  cout << "Macro finished succesfully." << endl;
-  cout << "Output file is " << mcFile << endl;
-  cout << "Parameter file is " << parFile << endl;
-  cout << "Real time " << timer.RealTime() << " s, CPU time " << timer.CpuTime()
-       << "s" << endl;
-  // ------------------------------------------------------------------------
+    run.SetOutFileName(mcFile.c_str());
+    run.SetParFileName(parFile.c_str());
+    run.LoadSetup(geoSetup.c_str());
+    run.SetTarget("Gold", 0.025, 2.5);
+    run.SetBeamPosition(0., 0., 0., 0.);
+    //run.SetEngine(kGeant4);
+    //run.StoreTrajectories(true);
+    run.RegisterRadLength(true);
+    run.Run(nofEvents);
+
+    timer.Stop();
+    std::cout << std::endl << std::endl;
+    std::cout << "Macro finished successfully." << std::endl;
+    std::cout << "MC file is "    << mcFile << std::endl;
+    std::cout << "Parameter file is " << parFile << std::endl;
+    std::cout << "Real time " << timer.RealTime() << " s, CPU time " << timer.CpuTime() << "s" << std::endl;
+    std::cout << std::endl << "Test passed" << std::endl << "All ok" << std::endl;
 }
diff --git a/reco/littrack/cbm/qa/radlength/CbmLitRadLengthQa.cxx b/reco/littrack/cbm/qa/radlength/CbmLitRadLengthQa.cxx
index 059d1f71d77817b3fca9fb8ce2caae8525d93fe8..3637541572aa7e877d5b882ba87b39b3850e3bfb 100644
--- a/reco/littrack/cbm/qa/radlength/CbmLitRadLengthQa.cxx
+++ b/reco/littrack/cbm/qa/radlength/CbmLitRadLengthQa.cxx
@@ -63,17 +63,17 @@ void CbmLitRadLengthQa::Exec(Option_t* opt) {
   }
 
   ExecDetector(".+", "Total");
-  ExecDetector("/cave_1/pipevac1_0/mvdstation.+", "Mvd");
-  ExecDetector("/cave_1/STS.+", "Sts");
+  //ExecDetector("/cave_1/pipevac1_0/mvdstation.+", "Mvd");
+  ExecDetector("/cave_1/sts.+", "Sts");
   ExecDetector("/cave_1/rich.+", "Rich");
-  ExecDetector("/cave_1/trd.+", "Trd");
-  ExecDetector("/cave_1/much.+", "Much");
-  ExecDetector("/cave_1/tof.+", "Tof");
-  ExecDetector("Mvd", CbmLitRadLengthQa::GetMvdStationId);
-  ExecDetector("Sts", CbmLitRadLengthQa::GetStsStationId);
-  ExecDetector("Trd", CbmLitRadLengthQa::GetTrdStationId);
-  ExecDetector("Much", CbmLitRadLengthQa::GetMuchStationId);
-  ExecDetector("MuchAbsorber", CbmLitRadLengthQa::GetMuchAbsorberId);
+  //ExecDetector("/cave_1/trd.+", "Trd");
+  //ExecDetector("/cave_1/much.+", "Much");
+  //ExecDetector("/cave_1/tof.+", "Tof");
+  //ExecDetector("Mvd", CbmLitRadLengthQa::GetMvdStationId);
+  //ExecDetector("Sts", CbmLitRadLengthQa::GetStsStationId);
+  //ExecDetector("Trd", CbmLitRadLengthQa::GetTrdStationId);
+  //ExecDetector("Much", CbmLitRadLengthQa::GetMuchStationId);
+  //ExecDetector("MuchAbsorber", CbmLitRadLengthQa::GetMuchAbsorberId);
 }
 
 void CbmLitRadLengthQa::Finish() {
@@ -100,15 +100,15 @@ void CbmLitRadLengthQa::ReadDataBranches() {
 }
 
 void CbmLitRadLengthQa::CreateHistograms() {
-  const Int_t nofBins                  = 1000;
-  const Int_t nofBinsX                 = 1000;
-  const Int_t nofBinsY                 = 1000;
-  const Int_t nofBinsSiliconThicknessX = 1100;
-  const Int_t nofBinsSiliconThicknessY = 1100;
-  const Double_t minX                  = -550.1;
-  const Double_t maxX                  = 549.9;
-  const Double_t minY                  = -550.1;
-  const Double_t maxY                  = 549.9;
+  const Int_t nofBins                  = 500;
+  const Int_t nofBinsX                 = 500;
+  const Int_t nofBinsY                 = 500;
+  const Int_t nofBinsSiliconThicknessX = 500;
+  const Int_t nofBinsSiliconThicknessY = 500;
+  const Double_t minX                  = -250.1;
+  const Double_t maxX                  = 249.9;
+  const Double_t minY                  = -250.1;
+  const Double_t maxY                  = 249.9;
   vector<string> detNames =
     list_of("Total")("Mvd")("Sts")("Rich")("Trd")("Much")("Tof");
   Int_t nofDetNames = detNames.size();
diff --git a/reco/littrack/cbm/qa/radlength/CbmLitRadLengthQaReport.cxx b/reco/littrack/cbm/qa/radlength/CbmLitRadLengthQaReport.cxx
index 56f6291afd9d0cecdcf35c9e0f6de5c767bf6f77..fb7f1c583002b08a8e6e019112fa74678da44fc1 100644
--- a/reco/littrack/cbm/qa/radlength/CbmLitRadLengthQaReport.cxx
+++ b/reco/littrack/cbm/qa/radlength/CbmLitRadLengthQaReport.cxx
@@ -27,6 +27,8 @@ void CbmLitRadLengthQaReport::Create() {
 }
 
 void CbmLitRadLengthQaReport::Draw() {
+  SetDefaultDrawStyle();
+
   DrawDetector("Total");
   DrawDetector("Mvd");
   DrawDetector("Sts");
@@ -77,6 +79,17 @@ void CbmLitRadLengthQaReport::DrawDetector(const string& detName) {
                    1200,
                    1000);
     DrawH2(HM()->P2("hrl_RadThickness_" + detName + "_P2"));
+
+
+    TCanvas* canvas4_2 =
+      CreateCanvas(string("hrl_RadThickness_" + detName + "_P2_zoom").c_str(),
+                   string("hrl_RadThickness_" + detName + "_P2_zoom").c_str(),
+                   1200,
+                   1000);
+    TProfile2D* pr =
+      (TProfile2D*) HM()->P2("hrl_RadThickness_" + detName + "_P2")->Clone();
+    pr->GetZaxis()->SetRangeUser(0, 100);
+    DrawH2(pr);
   }
 
   if (HM()->Exists("hrl_ThicknessSilicon_" + detName + "_H1")) {