]> git.uio.no Git - u/mrichter/AliRoot.git/blob - ITS/UPGRADE/testITSU/MakeITSRecoParam.C
6069f631ca8a4a4cd308a4416a48bc96f10e7428
[u/mrichter/AliRoot.git] / ITS / UPGRADE / testITSU / MakeITSRecoParam.C
1 void MakeITSRecoParam(AliRecoParam::EventSpecie_t default=AliRecoParam::kLowMult, const char* cdbURI="local://") {
2 //========================================================================
3 //
4 // Steering macro for ITSU reconstruction parameters
5 //
6 // Contact: ruben.shahoyan@cern.ch
7 //
8 //========================================================================
9   const char* macroname = "MakeITSRecoParam.C";
10   //
11   enum {kBit0=0x1<<0,kBit1=0x1<<1,kBit2=0x1<<2,kBit3=0x1<<3,kBit4=0x1<<4,kBit5=0x1<<5,kBit6=0x1<<6,kBit7=0x7<<2,kBit8=0x1<<8};
12   //
13   //
14   gSystem->Load("libITSUpgradeBase.so");
15   gSystem->Load("libITSUpgradeSim.so");
16   gSystem->Load("libITSUpgradeRec.so");
17   //
18   // Activate CDB storage and load geometry from CDB
19   AliCDBManager* cdb = AliCDBManager::Instance();
20   cdb->SetDefaultStorage(cdbURI);
21   AliITSUTrackCond* trcond = 0;
22   int nLr = 7;
23   
24   TObjArray *recoParamArray = new TObjArray();
25   //
26   {
27     AliITSURecoParam * itsRecoParam = AliITSURecoParam::GetCosmicTestParam();
28     //
29     itsRecoParam->SetNLayers(nLr);
30     //
31     //******************************************************************
32     itsRecoParam->SetEventSpecie(AliRecoParam::kCosmic);
33     itsRecoParam->SetTitle("Cosmic");
34     recoParamArray->AddLast(itsRecoParam);
35   }
36   //
37   {
38     AliITSURecoParam * itsRecoParam = AliITSURecoParam::GetLowFluxParam();
39     int nBranch[7] = {3,3,3,3,3,3,3}; // max branching for the seed on layer
40     int nCands[7]  = {250,200,150,100,60,40,20}; // max branching for the TPC seed
41     //
42     itsRecoParam->SetNLayers(nLr);
43     //
44     //******************************************************************
45     itsRecoParam->SetEventSpecie(AliRecoParam::kLowMult);
46     itsRecoParam->SetTitle("LowMult");
47     recoParamArray->AddLast(itsRecoParam);
48     //******************************************************************
49     // Add tracking conditions >>>
50     trCond = new AliITSUTrackCond();
51     trCond->SetNLayers(nLr); 
52     // each seed propagated to given layer can produce max nBranch branches
53     for (int i=0;i<nLr;i++) trCond->SetMaxBranches(i,nBranch[i]);
54     // each tpc track may have at most nCands prolongations
55     for (int i=0;i<nLr;i++) trCond->SetMaxCandidates(i,nCands[i]);
56     //
57     trCond->AddNewCondition(5); // min hits
58     trCond->AddGroupPattern( kBit0|kBit1 );
59     trCond->AddGroupPattern( kBit3|kBit4 );
60     trCond->AddGroupPattern( kBit5|kBit6 );
61     //
62     trCond->AddNewCondition(5);
63     trCond->AddGroupPattern( kBit0|kBit2 );
64     trCond->AddGroupPattern( kBit3|kBit4 );
65     trCond->AddGroupPattern( kBit5|kBit6 );
66     //
67     trCond->AddNewCondition(5);
68     trCond->AddGroupPattern( kBit1|kBit2 );
69     trCond->AddGroupPattern( kBit3|kBit4 );
70     trCond->AddGroupPattern( kBit5|kBit6 );
71     //    
72     itsRecoParam->AddTrackingCondition(trCond);
73     // Add tracking conditions >>>
74   }
75   {
76     AliITSURecoParam * itsRecoParam = AliITSURecoParam::GetHighFluxParam();
77     for (int i=0;i<nLr;i++) trCond->SetMaxBranches(i,nBranch[i]);
78     for (int i=0;i<nLr;i++) trCond->SetMaxCandidates(i,nCands[i]);
79     //
80     itsRecoParam->SetNLayers(nLr);
81     //
82     //******************************************************************
83     itsRecoParam->SetEventSpecie(AliRecoParam::kHighMult);
84     itsRecoParam->SetTitle("HighMult");
85     recoParamArray->AddLast(itsRecoParam);
86     //******************************************************************
87     // Add tracking conditions >>>
88     trCond = new AliITSUTrackCond();
89     trCond->SetNLayers(nLr); 
90     for (int i=0;i<nLr;i++) trCond->SetMaxBranches(i,nBranch[i]);
91     for (int i=0;i<nLr;i++) trCond->SetMaxCandidates(i,nCands[i]);
92     trCond->AddNewCondition(5); // min hits
93     trCond->AddGroupPattern( kBit0|kBit1 );
94     trCond->AddGroupPattern( kBit3|kBit4 );
95     trCond->AddGroupPattern( kBit5|kBit6 );
96     //
97     trCond->AddNewCondition(5);
98     trCond->AddGroupPattern( kBit0|kBit2 );
99     trCond->AddGroupPattern( kBit3|kBit4 );
100     trCond->AddGroupPattern( kBit5|kBit6 );
101     //
102     trCond->AddNewCondition(5);
103     trCond->AddGroupPattern( kBit1|kBit2 );
104     trCond->AddGroupPattern( kBit3|kBit4 );
105     trCond->AddGroupPattern( kBit5|kBit6 );
106     //    
107     itsRecoParam->AddTrackingCondition(trCond);
108     // Add tracking conditions >>>
109     //
110   }
111   //
112   // Set the default
113   Bool_t defaultIsSet = kFALSE;
114   for(Int_t i =0; i < recoParamArray->GetEntriesFast(); i++) {
115     AliDetectorRecoParam *param = (AliDetectorRecoParam *)recoParamArray->UncheckedAt(i);
116     if (!param) continue;
117     if (default & param->GetEventSpecie()) {
118       param->SetAsDefault();
119       defaultIsSet = kTRUE;
120     }
121   }
122
123   if (!defaultIsSet) {
124     Error(macroname,"The default reconstruction parameters are not set! Exiting...");
125     return;
126   }
127
128   // save in CDB storage
129   AliCDBMetaData *md= new AliCDBMetaData();
130   md->SetResponsible("Andrea Dainese");
131   md->SetComment("Reconstruction parameters ITS.");
132   md->SetAliRootVersion(gSystem->Getenv("ARVERSION"));
133   md->SetBeamPeriod(0);
134   AliCDBId id("ITS/Calib/RecoParam",0,AliCDBRunRange::Infinity());
135   cdb->GetDefaultStorage()->Put(recoParamArray,id, md);
136   //
137   return;
138 }
139