1) fix in the AliITSUTrackerGlo for track hypothesis w/o winner
authorshahoian <shahoian@f7af4fe6-9843-0410-8265-dc069ae4e863>
Tue, 5 Feb 2013 23:55:16 +0000 (23:55 +0000)
committershahoian <shahoian@f7af4fe6-9843-0410-8265-dc069ae4e863>
Tue, 5 Feb 2013 23:55:16 +0000 (23:55 +0000)
2) test ITS/Calib/SimuParam/Run0_999999999_v0_s0.root added to itsupcdb.tar.gz (see new file readme)
3) enums added for predefined charge spread params

ITS/UPGRADE/AliITSU.cxx
ITS/UPGRADE/AliITSUSimulationPix.cxx
ITS/UPGRADE/AliITSUSimulationPix.h
ITS/UPGRADE/AliITSUTrackHyp.cxx
ITS/UPGRADE/AliITSUTrackHyp.h
ITS/UPGRADE/AliITSUTrackerGlo.cxx
ITS/UPGRADE/testITSU/MakeITSUSimuParam.C
ITS/UPGRADE/testITSU/itsupcdb.tar.gz
ITS/UPGRADE/testITSU/readme [new file with mode: 0644]

index c315c23..28b8333 100644 (file)
@@ -844,14 +844,17 @@ void AliITSU::InitSimulation()
   //
   // add known simulation types used in the setup
   for (int i=fNLayers;i--;) {
+    fSimModelLr[i] = 0;
+    fSegModelLr[i] = 0;
+    fResponseLr[i] = 0;
     int dType = fGeomTGeo->GetLayerDetTypeID(i);           // fine detector type: class + segmentation
     int sType = dType/AliITSUGeomTGeo::kMaxSegmPerDetType; // detector simulation class
     //
     // check if the simulation of this sType was already created for preceeding layers
     AliITSUSimulation* simUpg = 0;
-    for (int j=fNLayers;j>i;j--) {
+    for (int j=fNLayers-1;j>i;j--) {
       simUpg = GetSimulationModel(j);
-      if (int(simUpg->GetUniqueID())==sType) break;
+      if (simUpg && int(simUpg->GetUniqueID())==sType) break;
       else simUpg = 0;
     }
     //
index 74acb4e..80a74de 100644 (file)
@@ -422,7 +422,6 @@ void AliITSUSimulationPix::SpreadCharge2D(Double_t x0,Double_t z0, Double_t dy,
       z2  = z1 + dzi; // Upper
       z1 -= dzi;      // Lower
       s   = el* (((AliITSUSimulationPix*)this)->*AliITSUSimulationPix::fSpreadFun)(dtIn);
-      //(*((AliITSUSimulationPix*)this)->AliITSUSimulationPix::fSpreadFun)(dtIn)); // calculate charge deposited in the cell
       if (s>fSimuParam->GetPixMinElToAdd()) UpdateMapSignal(iz,ix,tID,hID,s);
     } // end for ix, iz
   //
@@ -436,22 +435,21 @@ Double_t AliITSUSimulationPix::SpreadFunDoubleGauss2D(const Double_t *dtIn)
   // The spread function is assumed to be double gaussian in 2D
   // Parameters should be: mean0,sigma0, mean1,sigma1, relative strenght of 2nd gaussian wrt 1st one
   //
-  int ip = kParamStart;
   // 1st gaussian
-  double intg1 = GausInt2D(fResponseParam->GetParameter(ip+1),  // sigX
-                          fResponseParam->GetParameter(ip+3),  // sigZ
-                          dtIn[kCellX1]-fResponseParam->GetParameter(ip),      // x1-xmean
-                          dtIn[kCellX2]-fResponseParam->GetParameter(ip),      // x2-xmean
-                          dtIn[kCellZ1]-fResponseParam->GetParameter(ip+2),    // z1-zmean
-                          dtIn[kCellZ2]-fResponseParam->GetParameter(ip+2));   // z2-zmean
+  double intg1 = GausInt2D(fResponseParam->GetParameter(kG2SigX0),  // sigX
+                          fResponseParam->GetParameter(kG2SigZ0),  // sigZ
+                          dtIn[kCellX1]-fResponseParam->GetParameter(kG2MeanX0),      // x1-xmean
+                          dtIn[kCellX2]-fResponseParam->GetParameter(kG2MeanX0),      // x2-xmean
+                          dtIn[kCellZ1]-fResponseParam->GetParameter(kG2MeanZ0),    // z1-zmean
+                          dtIn[kCellZ2]-fResponseParam->GetParameter(kG2MeanZ0));   // z2-zmean
   // 2nd gaussian
-  double intg2 = GausInt2D(fResponseParam->GetParameter(ip+5),  // sigX
-                          fResponseParam->GetParameter(ip+7),  // sigZ
-                          dtIn[kCellX1]-fResponseParam->GetParameter(ip+4),    // x1-xmean
-                          dtIn[kCellX2]-fResponseParam->GetParameter(ip+4),    // x2-xmean
-                          dtIn[kCellZ1]-fResponseParam->GetParameter(ip+6),    // z1-zmean
-                          dtIn[kCellZ2]-fResponseParam->GetParameter(ip+6));   // z2-zmean
-  double scl = fResponseParam->GetParameter(ip+8);
+  double intg2 = GausInt2D(fResponseParam->GetParameter(kG2SigX1),  // sigX
+                          fResponseParam->GetParameter(kG2SigZ1),  // sigZ
+                          dtIn[kCellX1]-fResponseParam->GetParameter(kG2MeanX1),      // x1-xmean
+                          dtIn[kCellX2]-fResponseParam->GetParameter(kG2MeanX1),      // x2-xmean
+                          dtIn[kCellZ1]-fResponseParam->GetParameter(kG2MeanZ1),    // z1-zmean
+                          dtIn[kCellZ2]-fResponseParam->GetParameter(kG2MeanZ1));   // z2-zmean
+  double scl = fResponseParam->GetParameter(kG2ScaleG2);
   return (intg1+intg2*scl)/(1+scl);
   //
 } 
@@ -463,13 +461,12 @@ Double_t AliITSUSimulationPix::SpreadFunGauss2D(const Double_t *dtIn)
   // and Z=dtIn[kCellZ1]:dtIn[kCellZ2] 
   // The spread function is assumed to be gaussian in 2D
   // Parameters should be: mean0,sigma0
-  int ip = kParamStart;
-  return GausInt2D(fResponseParam->GetParameter(ip+1),  // sigX
-                  fResponseParam->GetParameter(ip+3),  // sigZ
-                  dtIn[kCellX1]-fResponseParam->GetParameter(ip),      // x1-xmean
-                  dtIn[kCellX2]-fResponseParam->GetParameter(ip),      // x2-xmean
-                  dtIn[kCellZ1]-fResponseParam->GetParameter(ip+2),    // z1-zmean
-                  dtIn[kCellZ2]-fResponseParam->GetParameter(ip+2));
+  return GausInt2D(fResponseParam->GetParameter(kG1SigX),  // sigX
+                  fResponseParam->GetParameter(kG1SigZ),  // sigZ
+                  dtIn[kCellX1]-fResponseParam->GetParameter(kG1MeanX),    // x1-xmean
+                  dtIn[kCellX2]-fResponseParam->GetParameter(kG1MeanX),    // x2-xmean
+                  dtIn[kCellZ1]-fResponseParam->GetParameter(kG1MeanZ),    // z1-zmean
+                  dtIn[kCellZ2]-fResponseParam->GetParameter(kG1MeanZ));   // z2-zmean
   //
 } 
 
@@ -738,9 +735,9 @@ void AliITSUSimulationPix::SetResponseParam(AliParamList* resp)
   // attach response parameterisation data
   fResponseParam = resp;
   switch (fResponseParam->GetID()) {
-  case kSpreadSingleGauss: fSpreadFun = &AliITSUSimulationPix::SpreadFunDoubleGauss2D; 
+  case kSpreadFunDoubleGauss2D: fSpreadFun = &AliITSUSimulationPix::SpreadFunDoubleGauss2D; 
     break;
-  case kSpreadDoubleGauss: fSpreadFun = &AliITSUSimulationPix::SpreadFunGauss2D;       
+  case kSpreadFunGauss2D      : fSpreadFun = &AliITSUSimulationPix::SpreadFunGauss2D;       
     break;
   default: AliFatal(Form("Did not find requested spread function id=%d",fResponseParam->GetID()));
   }
index 0462c28..3e76517 100644 (file)
@@ -24,8 +24,8 @@ public:
   enum {kCellX1,kCellX2,kCellZ1,kCellZ2,kCellYDepth,kNDtSpread}; // data used for ch. spread integral calc.
   //
   // charge spread functions defined
-  enum {kSpreadSingleGauss,                  // single gaussian in 2D, SpreadFunGauss2D
-       kSpreadDoubleGauss,      // double gaussian in 2D, SpreadFunDoubleGauss2D
+  enum {kSpreadFunGauss2D,                  // single gaussian in 2D, SpreadFunGauss2D
+       kSpreadFunDoubleGauss2D,            // double gaussian in 2D, SpreadFunDoubleGauss2D
        kNSpreadFuns
   };
   // fist kParamStart entried of spread fun params are reserved for common parameters
@@ -33,6 +33,10 @@ public:
        kSpreadFunParamNZoffs,               // number of pixels to consider +- from injection point (in Z)
        kParamStart
   };
+  // elements of the SpreadFunGauss2D parameterization (offsetted by kParamStart)
+  enum {kG1MeanX=kParamStart,kG1SigX,kG1MeanZ,kG1SigZ,kNG1Par};
+  // elements of the SpreadFunDoubleGauss2D parameterization (offsetted by kParamStart)
+  enum {kG2MeanX0=kParamStart,kG2SigX0,kG2MeanZ0,kG2SigZ0,kG2MeanX1,kG2SigX1,kG2MeanZ1,kG2SigZ1,kG2ScaleG2,kNG2Par};
   //
   AliITSUSimulationPix();
   AliITSUSimulationPix(AliITSUSimuParam* sim,AliITSUSensMap* map);
index 5f974a9..4f947f9 100644 (file)
@@ -69,18 +69,20 @@ void AliITSUTrackHyp::Print(Option_t* ) const
 //__________________________________________________________________
 AliITSUSeed* AliITSUTrackHyp::GetWinner() const
 {
-  // Get best candidate
+  // Get best candidate. TODO
   return fLayerSeeds[0].GetEntriesFast()>0 ? GetSeed(0,0) : 0;
 }
 
 //__________________________________________________________________
-void AliITSUTrackHyp::DefineWinner(int lr, int id)
+AliITSUSeed* AliITSUTrackHyp::DefineWinner(int lr, int id)
 {
   // assign best candidate
+  if (GetNSeeds(lr)<=id) return 0;
   AliITSUSeed* winner = GetSeed(lr,id);
   this->AliExternalTrackParam::operator=(*winner);
   SetChi2(winner->GetChi2GloNrm());
   SetNumberOfClusters(winner->GetNLayersHit());
+  return winner;
 }
 
 //__________________________________________________________________
index ebc72b4..561af5f 100644 (file)
@@ -24,7 +24,7 @@ class AliITSUTrackHyp: public AliKalmanTrack
   AliITSUSeed*       GetWinner()         const;
   AliESDtrack*       GetESDTrack()       const {return fESDTrack;}
   Int_t              GetITSLabel()       const {return fITSLabel;}
-  void               DefineWinner(Int_t lr=0, Int_t id=0);
+  AliITSUSeed*       DefineWinner(Int_t lr=0, Int_t id=0);
   const TObjArray*   GetLayerSeeds(Int_t lr) const {return lr<fNLayers ? &fLayerSeeds[lr] : 0;}
   void               AddSeed(AliITSUSeed* seed, Int_t lr);
   void               SetESDTrack(AliESDtrack* esdtr) {fESDTrack = esdtr;}
index 719493c..bc6aa57 100644 (file)
@@ -818,8 +818,7 @@ void AliITSUTrackerGlo::FinalizeHypotheses()
   int nh = fHypStore.GetEntriesFast();
   for (int ih=0;ih<nh;ih++) {
     AliITSUTrackHyp* hyp = (AliITSUTrackHyp*) fHypStore.UncheckedAt(ih); 
-    if (!hyp) continue;
-    hyp->DefineWinner();  // TODO
+    if (!hyp || !hyp->DefineWinner()) continue; // TODO
     CookMCLabel(hyp);
     UpdateESDTrack(hyp,AliESDtrack::kITSin);
   }
index 1dd1395..5c88c34 100644 (file)
@@ -12,7 +12,6 @@ void MakeITSUSimuParam(const char* cdbURI="local://") {
   //
   gSystem->Load("libITSUpgradeBase.so");
   gSystem->Load("libITSUpgradeSim.so");
-  gSystem->Load("libITSUpgradeRec.so");
   //
   // Activate CDB storage and load geometry from CDB
   AliCDBManager* cdb = AliCDBManager::Instance();
@@ -25,35 +24,35 @@ void MakeITSUSimuParam(const char* cdbURI="local://") {
   int offs = 0;
   //
   //------------------------ parameterization data for segmentation 0 ----------------------
-  parData = new AliParamList(AliITSUSimulationPix::kParamStart+11); // 2 common + 9 params for double gaussian
+  parData = new AliParamList(AliITSUSimulationPix::kNG2Par); // 2 common + 9 params for double gaussian
   parData->SetUniqueID(0); // this is a function for detId=0
-  parData->SetID(AliITSUSimulationPix::kSpreadDoubleGauss); // and uses double gaussian
+  parData->SetID(AliITSUSimulationPix::kSpreadFunDoubleGauss2D); // and uses double gaussian
   parData->SetNameTitle("Monopix_seg0","double gaussian for segmentation 0");
   //
   // obligatory params for all AliITSUSimulationPix functions: number of pixels in X,Z around
   // injected one to consider
   parData->SetParameter(AliITSUSimulationPix::kSpreadFunParamNXoffs,3,"nPixX");
   parData->SetParameter(AliITSUSimulationPix::kSpreadFunParamNZoffs,3,"nPixZ"); 
-  // 
+  //
   // now set the parameters according selected function
-  offs = AliITSUSimulationPix::kParamStart;
-  parData->SetParameter(offs++,-0.1e-4  , "G1 Mean_x");
-  parData->SetParameter(offs++, 8.125e-4, "G1 Sigma_x");
-  parData->SetParameter(offs++, 2.011e-4, "G1 Mean_z"); 
-  parData->SetParameter(offs++, 8.125e-4, "G1 Sigma_z"); 
-  parData->SetParameter(offs++,-0.069e-4, "G2 Mean_x");
-  parData->SetParameter(offs++,15.050e-4, "G2 Sigma_x");
-  parData->SetParameter(offs++,-8.425e-4, "G2 Mean_z");
-  parData->SetParameter(offs++,15.050e-4, "G2 Sigma_z"); 
-  parData->SetParameter(offs++,3.904037/59.468672, "G2 A2/A1");  // scaling of 2nd gaussian amplitude wrt 1st one
+  parData->SetParameter(AliITSUSimulationPix::kG2MeanX0  , -0.1e-4  , "G1 Mean_x");
+  parData->SetParameter(AliITSUSimulationPix::kG2SigX0   ,  8.125e-4, "G1 Sigma_x");
+  parData->SetParameter(AliITSUSimulationPix::kG2MeanZ0  ,  2.011e-4, "G1 Mean_z"); 
+  parData->SetParameter(AliITSUSimulationPix::kG2SigZ0   ,  8.125e-4, "G1 Sigma_z"); 
+  parData->SetParameter(AliITSUSimulationPix::kG2MeanX1  , -0.069e-4, "G2 Mean_x");
+  parData->SetParameter(AliITSUSimulationPix::kG2SigX1   , 15.050e-4, "G2 Sigma_x");
+  parData->SetParameter(AliITSUSimulationPix::kG2MeanZ1  , -8.425e-4, "G2 Mean_z");
+  parData->SetParameter(AliITSUSimulationPix::kG2SigZ1   , 15.050e-4, "G2 Sigma_z"); 
+  // scaling of 2nd gaussian amplitude wrt 1st one
+  parData->SetParameter(AliITSUSimulationPix::kG2ScaleG2 , 3.904037/59.468672, "G2 A2/A1");  
   // 
   itsSimuParam->AddRespFunParam(parData);
   //
   //
   //------------------------ parameterization data for segmentation 1 ----------------------
-  parData = new AliParamList(AliITSUSimulationPix::kParamStart+9); // 2 common + 9 params for double gaussian
+  parData = new AliParamList(AliITSUSimulationPix::kNG2Par); // 2 common + 9 params for double gaussian
   parData->SetUniqueID(1); // this is a function for detId=1
-  parData->SetID(AliITSUSimulationPix::kSpreadDoubleGauss); // and uses double gaussian
+  parData->SetID(AliITSUSimulationPix::kSpreadFunDoubleGauss2D); // and uses double gaussian
   parData->SetNameTitle("Monopix_seg1","double gaussian for segmentation 1");
   //
   // obligatory params for all AliITSUSimulationPix functions: number of pixels in X,Z around
@@ -62,25 +61,25 @@ void MakeITSUSimuParam(const char* cdbURI="local://") {
   parData->SetParameter(AliITSUSimulationPix::kSpreadFunParamNZoffs,3,"nPixZ"); 
   // 
   // now set the parameters according selected function
-  offs = AliITSUSimulationPix::kParamStart;
-  parData->SetParameter(offs++,-0.1e-4  , "G1 Mean_x");
-  parData->SetParameter(offs++, 8.125e-4, "G1 Sigma_x");
-  parData->SetParameter(offs++, 2.011e-4, "G1 Mean_z"); 
-  parData->SetParameter(offs++, 8.125e-4, "G1 Sigma_z"); 
-  parData->SetParameter(offs++,-0.069e-4, "G2 Mean_x");
-  parData->SetParameter(offs++,15.050e-4, "G2 Sigma_x");
-  parData->SetParameter(offs++,-8.425e-4, "G2 Mean_z");
-  parData->SetParameter(offs++,15.050e-4, "G2 Sigma_z"); 
-  parData->SetParameter(offs++,3.904037/59.468672, "G2 A2/A1");  // scaling of 2nd gaussian amplitude wrt 1st one
+  parData->SetParameter(AliITSUSimulationPix::kG2MeanX0  , -0.1e-4  , "G1 Mean_x");
+  parData->SetParameter(AliITSUSimulationPix::kG2SigX0   ,  8.125e-4, "G1 Sigma_x");
+  parData->SetParameter(AliITSUSimulationPix::kG2MeanZ0  ,  2.011e-4, "G1 Mean_z"); 
+  parData->SetParameter(AliITSUSimulationPix::kG2SigZ0   ,  8.125e-4, "G1 Sigma_z"); 
+  parData->SetParameter(AliITSUSimulationPix::kG2MeanX1  , -0.069e-4, "G2 Mean_x");
+  parData->SetParameter(AliITSUSimulationPix::kG2SigX1   , 15.050e-4, "G2 Sigma_x");
+  parData->SetParameter(AliITSUSimulationPix::kG2MeanZ1  , -8.425e-4, "G2 Mean_z");
+  parData->SetParameter(AliITSUSimulationPix::kG2SigZ1   , 15.050e-4, "G2 Sigma_z"); 
+  // scaling of 2nd gaussian amplitude wrt 1st one
+  parData->SetParameter(AliITSUSimulationPix::kG2ScaleG2 , 3.904037/59.468672, "G2 A2/A1");  
   // 
   itsSimuParam->AddRespFunParam(parData);
   //
   //
   //------------------------ parameterization data for segmentation 2 ----------------------
-  parData = new AliParamList(AliITSUSimulationPix::kParamStart+9); // 2 common + 9 params for double gaussian
+  parData = new AliParamList(AliITSUSimulationPix::kNG1Par); // 2 common + 3 params for double gaussian
   parData->SetUniqueID(2); // this is a function for detId=2
-  parData->SetID(AliITSUSimulationPix::kSpreadDoubleGauss); // and uses double gaussian
-  parData->SetNameTitle("Monopix_seg1","double gaussian for segmentation 1");
+  parData->SetID(AliITSUSimulationPix::kSpreadFunGauss2D); // and uses double gaussian
+  parData->SetNameTitle("Monopix_seg2","single gaussian for segmentation 1");
   //
   // obligatory params for all AliITSUSimulationPix functions: number of pixels in X,Z around
   // injected one to consider
@@ -88,19 +87,14 @@ void MakeITSUSimuParam(const char* cdbURI="local://") {
   parData->SetParameter(AliITSUSimulationPix::kSpreadFunParamNZoffs,3,"nPixZ"); 
   // 
   // now set the parameters according selected function
-  offs = AliITSUSimulationPix::kParamStart;
-  parData->SetParameter(offs++,-0.1e-4  , "G1 Mean_x");
-  parData->SetParameter(offs++, 8.125e-4, "G1 Sigma_x");
-  parData->SetParameter(offs++, 2.011e-4, "G1 Mean_z"); 
-  parData->SetParameter(offs++, 8.125e-4, "G1 Sigma_z"); 
-  parData->SetParameter(offs++,-0.069e-4, "G2 Mean_x");
-  parData->SetParameter(offs++,15.050e-4, "G2 Sigma_x");
-  parData->SetParameter(offs++,-8.425e-4, "G2 Mean_z");
-  parData->SetParameter(offs++,15.050e-4, "G2 Sigma_z"); 
-  parData->SetParameter(offs++,3.904037/59.468672, "G2 A2/A1");  // scaling of 2nd gaussian amplitude wrt 1st one
+  parData->SetParameter(AliITSUSimulationPix::kG1MeanX  , -0.1e-4  , "Mean_x");
+  parData->SetParameter(AliITSUSimulationPix::kG1SigX   ,  8.125e-4, "Sigma_x");
+  parData->SetParameter(AliITSUSimulationPix::kG1MeanZ  ,  2.011e-4, "Mean_z"); 
+  parData->SetParameter(AliITSUSimulationPix::kG1SigZ   ,  8.125e-4, "Sigma_z"); 
   // 
   itsSimuParam->AddRespFunParam(parData);
   //
+  //
   // save in CDB storage
   AliCDBMetaData *md= new AliCDBMetaData();
   md->SetResponsible("ITS Upgrade Project");
index c632c4f..bcc1384 100644 (file)
Binary files a/ITS/UPGRADE/testITSU/itsupcdb.tar.gz and b/ITS/UPGRADE/testITSU/itsupcdb.tar.gz differ
diff --git a/ITS/UPGRADE/testITSU/readme b/ITS/UPGRADE/testITSU/readme
new file mode 100644 (file)
index 0000000..0916b1f
--- /dev/null
@@ -0,0 +1,10 @@
+This is test directory, content often changes.
+
+
+Thu Nov 15 04:02:21 CET 2012
+To run the code requiring new ITS CDB unpack the itsupcdb.tar.gz file 
+and point specific paths to it
+
+Wed Feb  6 00:46:42 CET 2013
+MakeITSUSimuParam.C example macro is added to create simulation parameters
+