Updated macros by Raphaelle
authorcblume <cblume@f7af4fe6-9843-0410-8265-dc069ae4e863>
Fri, 13 Oct 2006 16:12:22 +0000 (16:12 +0000)
committercblume <cblume@f7af4fe6-9843-0410-8265-dc069ae4e863>
Fri, 13 Oct 2006 16:12:22 +0000 (16:12 +0000)
TRD/Macros/AliTRDCreateVector2DSum.C
TRD/Macros/AliTRDFindTheCoef.C
TRD/Macros/AliTRDMergeFilesHisto2D.C
TRD/Macros/AliTRDMergeTwoTrees.C
TRD/Macros/AliTRDReconstructandFill.C

index 1d14c49..3583587 100644 (file)
@@ -2,21 +2,25 @@
 
 #include <vector>
 #include <TChain.h>
+#include <TObjArray.h>
 #include <TFile.h>
+#include <TGraphErrors.h>
 #include <TTree.h>
+#include <TDirectory.h>
+#include <TROOT.h>
 #include <TString.h>
 #include <Riostream.h>
 #include <TSystem.h>
 #include <TH1F.h>
 #include <AliCDBManager.h>
-#include <AliTRDCalibra.h>
+#include "../TRD/AliTRDCalibra.h"
 
 #endif
 
 
 Bool_t AliTRDCreateVector2DSum(const char* variablecali, const char* noime, const char* dire, const char* namefile){
   //
-  // After having simulated and reconstructed events in subrepertories 0%d of dire
+  // After having simulated and reconstructed events in subrepertories 000%d of dire
   // this macro searchs in the subdirectories the file TRD.calibration.root
   // takes the vectors and merge them
   // variablecali can be treeCH2d, treePH2d or treePRF2d
@@ -30,13 +34,13 @@ Bool_t AliTRDCreateVector2DSum(const char* variablecali, const char* noime, cons
    
 
   //Variables
-  std::vector<Int_t> vectorplace;
-  std::vector<std::vector<Int_t> > whereinthechain;
+  TObjArray *vectorplace = new TObjArray();
+  TObjArray *whereinthechain = new TObjArray();
 
 
   //TRDCalibra
   AliCDBManager *man = AliCDBManager::Instance();
-  man->GetStorage("local://$ALICE_ROOT");
+  man->SetDefaultStorage("local://$ALICE_ROOT");
   man->SetRun(0);
   AliTRDCalibra *calibra = AliTRDCalibra::Instance();
 
@@ -58,40 +62,35 @@ Bool_t AliTRDCreateVector2DSum(const char* variablecali, const char* noime, cons
       
       sprintf(fullname,"%s/%s",dir,name);
       printf("Process file: %s\n",fullname);
-      TFile *file = (TFile *) TFile::Open(fullname,"READ");
+      TFile *file = new TFile(fullname,"READ");
       if(!file) continue;
       TTree *treecurrent = (TTree *) file->Get(variablecali);
       if(!treecurrent) continue;
-      std::vector<Int_t> vectorcurrent = calibra->ConvertTreeVector(treecurrent);
-      printf("Size of the current tree: %d\n",(Int_t) vectorcurrent.size());
-      printf("Size of whereinthechain: %d\n",(Int_t) whereinthechain.size());
+      gDirectory = gROOT;
+      TObjArray *vectorcurrent = calibra->ConvertTreeVector(treecurrent);
+      printf("Size of the current tree: %d\n",(Int_t) vectorcurrent->GetEntriesFast());
+      printf("Size of whereinthechain: %d\n",(Int_t) whereinthechain->GetEntriesFast());
       printf("Size of the chain: %d\n", (Int_t) treeChain->GetEntries());
       Int_t j = (Int_t) treeChain->GetEntries();
-       for(Int_t jui = 0; jui < (Int_t) vectorcurrent.size(); jui++){
+       for(Int_t jui = 0; jui < (Int_t) vectorcurrent->GetEntriesFast(); jui++){
          //Search if already found
-         Int_t place = calibra->SearchInTreeVector(vectorplace,vectorcurrent[jui]);
+         Int_t place = calibra->SearchInTreeVector(vectorplace,((AliTRDCalibra::AliTRDPlace *)vectorcurrent->At(jui))->GetPlace());
          //Create a new element in the two std vectors
          if(place == -1){
-           std::vector<Int_t> chainplace;
-           chainplace.push_back((Int_t) (j+jui));
-           for(Int_t i = 0; i < (Int_t) chainplace.size(); i++){
-             //cout << "i: " << i << "value: " << chainplace[i] << endl;
-           }
-           vectorplace.push_back((Int_t) (vectorcurrent[jui]));
-           whereinthechain.push_back(chainplace);
-          
+           AliTRDCalibra::AliTRDPlace *placejui = new AliTRDCalibra::AliTRDPlace();
+           placejui->SetPlace(j+jui);
+           TObjArray *chainplace = new TObjArray();
+           chainplace->Add((TObject *) placejui);
+           vectorplace->Add((TObject *) (vectorcurrent->At(jui)));
+           whereinthechain->Add((TObject *) chainplace);
          }
          //Update the element at the place "place" in the std vector whereinthechain
          else {
-           std::vector<Int_t> chainplace = whereinthechain[place];
-           chainplace.push_back((Int_t) (j+jui));
-           //cout << "size of chainplace place > -1: " << (Int_t) chainplace.size() << endl;
-           for(Int_t i = 0; i < (Int_t) chainplace.size(); i++){
-             //cout << "i: " << i << "value: " << chainplace[i] << endl;
-           }
-           std::vector<std::vector<Int_t> >::iterator it = whereinthechain.begin()+place;
-           whereinthechain.erase(it);
-           whereinthechain.insert(it,chainplace);
+           AliTRDCalibra::AliTRDPlace *placejui = new AliTRDCalibra::AliTRDPlace();
+           placejui->SetPlace((j+jui));
+           TObjArray *chainplace = ((TObjArray *) whereinthechain->At(place));
+           chainplace->Add((TObject *) placejui);
+           whereinthechain->AddAt((TObject *)chainplace, place);
          }
        } 
        treeChain->AddFile(fullname);
@@ -119,12 +118,12 @@ Bool_t AliTRDCreateVector2DSum(const char* variablecali, const char* noime, cons
     //Init histsum
     if(treeChain->GetEntries() < 1) return kFALSE; 
     
-    printf("FINAL Size of the chain: %d\n", (Int_t) treeChain->GetEntries());
-    printf("FINAL Size of vectorplace: %d\n", (Int_t) vectorplace.size());
-    for(Int_t h = 0; h < (Int_t) vectorplace.size(); h++){
-      group = vectorplace[h];
-      std::vector<Int_t> chainplace = whereinthechain[h];
-      treeChain->GetEntry(chainplace[0]);
+    printf("FINAL Size of the chain: %d\n", (Int_t) treeChain->GetEntriesFast());
+    printf("FINAL Size of vectorplace: %d\n", (Int_t) vectorplace->GetEntriesFast());
+    for(Int_t h = 0; h < (Int_t) vectorplace->GetEntriesFast(); h++){
+      group = ((AliTRDCalibra::AliTRDPlace *)vectorplace->At(h))->GetPlace();
+      TObjArray *chainplace = ((TObjArray *)whereinthechain->At(h));
+      treeChain->GetEntry(((AliTRDCalibra::AliTRDPlace *)chainplace->At(0))->GetPlace());
       //Init for the first time
       if(h == 0)  {
        histsum = new TH1F("","",his->GetXaxis()->GetNbins(),his->GetXaxis()->GetBinLowEdge(1),his->GetXaxis()->GetBinUpEdge(his->GetXaxis()->GetNbins()));
@@ -137,9 +136,9 @@ Bool_t AliTRDCreateVector2DSum(const char* variablecali, const char* noime, cons
        histsum->SetBinError(l,0.0);
       }
       histsum->Add(his,1);
-      if((Int_t) chainplace.size() > 1){
-       for(Int_t s = 1; s < (Int_t)chainplace.size(); s++){
-         treeChain->GetEntry(chainplace[s]);
+      if((Int_t) chainplace->GetEntriesFast() > 1){
+       for(Int_t s = 1; s < (Int_t)chainplace->GetEntriesFast(); s++){
+         treeChain->GetEntry(((AliTRDCalibra::AliTRDPlace *)chainplace->At(s))->GetPlace());
          histsum->Add(his,1);
        }
       }
@@ -164,12 +163,12 @@ Bool_t AliTRDCreateVector2DSum(const char* variablecali, const char* noime, cons
     //Init histsum
     if(treeChain->GetEntries() < 1) return kFALSE; 
     
-    printf("FINAL Size of the chain: %d\n", (Int_t) treeChain->GetEntries());
-    printf("FINAL Size of vectorplace: %d\n", (Int_t) vectorplace.size());
-    for(Int_t h = 0; h < (Int_t) vectorplace.size(); h++){
-      group = vectorplace[h];
-      std::vector<Int_t> chainplace = whereinthechain[h];
-      treeChain->GetEntry(chainplace[0]);
+    printf("FINAL Size of the chain: %d\n", (Int_t) treeChain->GetEntriesFast());
+    printf("FINAL Size of vectorplace: %d\n", (Int_t) vectorplace->GetEntriesFast());
+    for(Int_t h = 0; h < (Int_t) vectorplace->GetEntriesFast(); h++){
+      group = ((AliTRDCalibra::AliTRDPlace *)vectorplace->At(h))->GetPlace();
+      TObjArray *chainplace = ((TObjArray *)whereinthechain->At(h));
+      treeChain->GetEntry(((AliTRDCalibra::AliTRDPlace *)chainplace->At(0))->GetPlace());
       //Init for the fisrt time
       Int_t nbins = his->GetN();
       Double_t *x;
@@ -202,9 +201,9 @@ Bool_t AliTRDCreateVector2DSum(const char* variablecali, const char* noime, cons
      
       //Add the first
       histsum = calibra->AddProfiles(his,histsum);
-      if((Int_t) chainplace.size() > 1){
-       for(Int_t s = 1; s < (Int_t)chainplace.size(); s++){
-         treeChain->GetEntry(chainplace[s]);
+      if((Int_t) chainplace->GetEntriesFast() > 1){
+       for(Int_t s = 1; s < (Int_t)chainplace->GetEntriesFast(); s++){
+         treeChain->GetEntry(((AliTRDCalibra::AliTRDPlace *)chainplace->At(s))->GetPlace());
          histsum = calibra->AddProfiles(his,histsum);
        }
       }
index 4970742..253603c 100644 (file)
@@ -6,8 +6,9 @@
 #include <Riostream.h>
 #include <TSystem.h>
 #include "AliReconstruction.h"
-#include "AliTRDCalibra.h"
+#include "../TRD/AliTRDCalibra.h"
 #include "AliCDBManager.h"
+#include "TStopwatch.h"
 
 #endif
 
@@ -22,20 +23,34 @@ void AliTRDFindTheCoef()
  
   TStopwatch timer;
   timer.Start();
-  
 
+  
   ////Set the CDBManager(You have to use the same as during the reconstruction)*************************
   AliCDBManager *man = AliCDBManager::Instance();
-  man->GetStorage("local://$ALICE_ROOT"); 
+  man->SetDefaultStorage("local://$ALICE_ROOT"); 
   man->SetRun(0);
 
   ////Set the parameters of AliTRDCalibra***************
   AliTRDCalibra *calibra = AliTRDCalibra::Instance();
-
-  ////Wich mode did you use in the reconstruction?
-  calibra->SetNz(0,2);//here for the gain
-  calibra->SetNrphi(0,2);//here for the gain 
-
+  
+  ////Take the Histo2d or tree in the TRD.calibration.root file 
+  TFile *file = new TFile("TRD.calibration.root","READ");
+  //TProfile2D *h = (TProfile2D *) file->Get("PRF2d");
+  TTree *h = (TTree *) file->Get("treePRF2d");
+  //h->SetDirectory(0);
+  
+  //TProfile2D *h = (TProfile2D *) file->Get("PRF2d");
+  TTree *h1 = (TTree *) file->Get("treePH2d");
+  //h->SetDirectory(0);
+  
+  //TProfile2D *h = (TProfile2D *) file->Get("PRF2d");
+  TTree *h2 = (TTree *) file->Get("treeCH2d");
+  //h->SetDirectory(0);
   ////How many bins did you have?
   //calibra->SetNumberBinCharge(100);
   //calibra->SetNumberBinPRF(20);
@@ -43,7 +58,7 @@ void AliTRDFindTheCoef()
 
   ////Which method do you want to use (It is always the default method that will be put in the database)
   //calibra->SetMeanChargeOn();
-  calibra->SetFitChargeBisOn();
+  //calibra->SetFitChargeBisOn();
   //calibra->SetFitPHOn();
   //calibra->SetPeriodeFitPH(10);
 
@@ -57,23 +72,29 @@ void AliTRDFindTheCoef()
   //calibra->SetFitVoir(2);//in case of fDebug = 2
 
   ////How many statistics do you want to accept?
-  calibra->SetMinEntries(1);// 1 entry at least to fit
+  calibra->SetMinEntries(10);// 1 entry at least to fit
 
-  ////Do you want to write the result?
-  calibra->SetWriteCoef(1);
+  ////Do you want to write the result
+  //calibra->SetWriteCoef(1);
 
-  ////Do you want to change the name of the file (TRD.coefficient.root)?
-  calibra->SetWriteNameCoef("coeftest.root");
+  ////Do you want to change the name of the file (TRD.coefficient.root)
+  //calibra->SetWriteNameCoef("coeftest.root");
 
-  ////Take the Histo2d or tree in the TRD.calibration.root file 
-  TFile *file = TFile::Open("TRD.calibration.root","READ");
-  //TH2I *h = (TH2I *) file->Get("CH2d");
-  TTree *h = (TTree *) file->Get("treeCH2d");
-  //h->SetDirectory(0);
-
-  ////Fit
-  calibra->FitCHOnline(h);  
+  //Set the mode on the z and rphi direction for each calibration paramaters
+  calibra->SetModeCalibrationFromTObject((TObject *)h2,0);
+  calibra->SetModeCalibrationFromTObject((TObject *)h1,1);
+  calibra->SetModeCalibrationFromTObject((TObject *)h,2);
+  
+  //Fit the pad response function 
+  calibra->FitPRFOnline(h);  
+   
+  //Fit the avreage pulse height
+  calibra->FitPHOnline(h1);  
+  
+  //Fit the deposited charge
+  calibra->FitCHOnline(h2);  
 
+  file->Close();
   
   timer.Stop();
   timer.Print();
index 6b0f4be..f4199b0 100644 (file)
@@ -1,6 +1,5 @@
 #if !defined( __CINT__) || defined(__MAKECINT__)
 
-#include <vector>
 #include <TChain.h>
 #include <TFile.h>
 #include <TTree.h>
@@ -8,8 +7,9 @@
 #include <Riostream.h>
 #include <TSystem.h>
 #include <TH1F.h>
+#include <TH2.h>
 #include <AliCDBManager.h>
-#include <AliTRDCalibra.h>
+#include <../TRD/AliTRDCalibra.h>
 
 #endif
 
index 83f7688..164128b 100644 (file)
@@ -9,7 +9,7 @@
 #include <TSystem.h>
 #include <TH1F.h>
 #include <AliCDBManager.h>
-#include <AliTRDCalibra.h>
+#include <../TRD/AliTRDCalibra.h>
 
 #endif
 using namespace std;
@@ -25,12 +25,12 @@ TTree *AliTRDMergeTwoTrees(const char* variablecali){
 
   //Variables
   AliCDBManager *man = AliCDBManager::Instance();
-  man->GetStorage("local://$ALICE_ROOT");
+  man->SetDefaultStorage("local://$ALICE_ROOT");
   man->SetRun(0);
   AliTRDCalibra *calibra = AliTRDCalibra::Instance();
 
    //Add
-  TTree *tree = calibra->Sum2Trees("/d/alice06/bailhache/aliroottrd/productiondefaulttout/trackletefficiency/sumtest/0000/TRD.calibration.root","/d/alice06/bailhache/aliroottrd/productiondefaulttout/trackletefficiency/sumtest/0001/TRD.calibration.root",variablecali);
+  TTree *tree = calibra->Sum2Trees("/d/alice06/bailhache/aliroottrd/cesoir/0019/TRD.calibration.root","/d/alice06/bailhache/aliroottrd/cesoir/0021/TRD.calibration.root",variablecali);
 
   return tree;
 
index 0a5ea0c..24e2c5c 100644 (file)
@@ -4,7 +4,8 @@
 #include <Riostream.h>
 #include <TSystem.h>
 #include "AliReconstruction.h"
-#include "AliTRDCalibra.h"
+#include "../TRD/AliTRDCalibra.h"
+#include <TStopwatch.h>
 
 #endif
 
@@ -25,12 +26,12 @@ void AliTRDReconstructandFill()
   AliTRDCalibra *calibra = AliTRDCalibra::Instance();
 
   ////What do you want to use?
-  //calibra->SetMItracking(); //Offline tracking
-  calibra->Setmcmtracking();
+  calibra->SetMITracking(); //Offline tracking
+  //calibra->Setmcmtracking();
   
   
   ////Do you want to try the correction due to the angles of the tracks for mcm tracklets?
-  calibra->Setmcmcorrectangle();
+  calibra->SetMcmCorrectAngle();
   
   ////What do you want to fill?
   calibra->SetCH2dOn();//relative gain calibration
@@ -56,7 +57,7 @@ void AliTRDReconstructandFill()
   
   
   ////Do you want to accept more tracks?
-  calibra->SetProcent(2);//For the gain if one group has a signal above 1.2 the other group then fill
+  calibra->SetProcent(1.2);//For the gain if one group has a signal above 1.2 the other group then fill
   calibra->SetDifference(10);//For the drift velocity if one group has at least 10 time bins then fill
   calibra->SetNumberClusters(18);//For mcm tracklets only fill only with tracklet with at least 18 clusters
   
@@ -85,10 +86,11 @@ void AliTRDReconstructandFill()
   rec.SetRunHLTTracking(kFALSE);
   rec.SetFillESD("");
   rec.SetFillTriggerESD(kFALSE);
+  rec.SetRunVertexFinder(kFALSE);
   rec.Run();
   timer.Stop();
   timer.Print();
-  
+  calibra->Write2d();    
 
 
   TStopwatch timerfit;
@@ -113,7 +115,7 @@ void AliTRDReconstructandFill()
   calibra->FitPHOnline(); 
   calibra->FitCHOnline(); 
   calibra->FitPRFOnline();  
-
+  
   
   timerfit.Stop();
   timerfit.Print();